perm filename W89[JNK,JMC] blob
sn#871511 filedate 1989-03-22 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00935 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00140 00002 ∂12-Dec-88 1528 X3J13-mailer Issue: TAILP-NIL (Version 5)
C00152 00003 ∂12-Dec-88 1601 X3J13-mailer Re: Issue: TEST-NOT-IF-NOT (Version 3)
C00153 00004 ∂12-Dec-88 1609 X3J13-mailer Issue: TYPE-OF-UNDERCONSTRAINED (Version 3)
C00163 00005 ∂12-Dec-88 1622 X3J13-mailer Issue: REST-LIST-ALLOCATION (Version 3)
C00177 00006 ∂12-Dec-88 1623 X3J13-mailer Issue: UNREAD-CHAR-AFTER-PEEK-CHAR (Version 2)
C00183 00007 ∂12-Dec-88 1643 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Call for Papers Workshop on Automatic Verification Methods for
C00189 00008 ∂12-Dec-88 1648 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Crypto '89 -- Call for Papers
C00198 00009 ∂12-Dec-88 1735 X3J13-mailer CommonLisp/C interface
C00200 00010 ∂12-Dec-88 1755 X3J13-mailer Issue: TAILP-NIL (Version 5)
C00202 00011 ∂12-Dec-88 1838 X3J13-mailer ** BALLOT ** BALLOT ** BALLOT ** BALLOT **
C00217 00012 ∂13-Dec-88 0800 X3J13-mailer CommonLisp/C interface
C00219 00013 ∂13-Dec-88 0819 X3J13-mailer CommonLisp/C interface
C00224 00014 ∂13-Dec-88 0833 X3J13-mailer Re: CommonLisp/C interface
C00226 00015 ∂13-Dec-88 0910 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Call for Papers
C00234 00016 ∂13-Dec-88 1115 X3J13-mailer [barmar@Think.COM: CommonLisp/C interface]
C00238 00017 ∂13-Dec-88 1120 X3J13-mailer CommonLisp/C interface
C00243 00018 ∂13-Dec-88 1233 X3J13-mailer Re: CommonLisp/C interface
C00247 00019 ∂13-Dec-88 1442 @Score.Stanford.EDU:nilsson@Tenaya.stanford.edu cs300
C00249 00020 ∂13-Dec-88 1649 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Calgary theory positions
C00256 00021 ∂13-Dec-88 1719 betsy@russell.Stanford.EDU Schedule for 1988-89
C00258 00022 ∂14-Dec-88 1043 X3J13-mailer Re: [barmar@Think.COM: CommonLisp/C interface]
C00261 00023 ∂14-Dec-88 1157 X3J13-mailer Issue: PACKAGE-CLUTTER (Version 6)
C00263 00024 ∂14-Dec-88 1205 X3J13-mailer Re: [barmar@Think.COM: CommonLisp/C interface]
C00265 00025 ∂14-Dec-88 1659 X3J13-mailer Hawaii registration
C00269 00026 ∂14-Dec-88 1707 X3J13-mailer Re: CommonLisp/C interface
C00274 00027 ∂15-Dec-88 0802 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Call for Papers/Distributed Comp Workshop South of France
C00282 00028 ∂15-Dec-88 0929 X3J13-mailer Re: [barmar@Think.COM: CommonLisp/C interface]
C00285 00029 ∂15-Dec-88 0945 X3J13-mailer Re: [barmar@Think.COM: CommonLisp/C interface]
C00287 00030 ∂15-Dec-88 1424 @Score.Stanford.EDU:jps@amadeus.Stanford.EDU panel on federal science funding
C00293 00031 ∂15-Dec-88 1504 X3J13-mailer Hawaii registration form
C00297 00032 ∂15-Dec-88 1525 X3J13-mailer Hawaii registration form OOOPS!
C00299 00033 ∂15-Dec-88 1715 X3J13-mailer Symbolics Cambridge office is moving
C00301 00034 ∂15-Dec-88 1716 @Score.Stanford.EDU:jwilson@jaguar.Stanford.EDU [SLOAN@Score.Stanford.EDU: Theft]
C00303 00035 ∂16-Dec-88 0847 X3J13-mailer Re: [barmar@Think.COM: CommonLisp/C interface]
C00305 00036 ∂16-Dec-88 1306 @Score.Stanford.EDU:mkatz@sesame.stanford.edu [SLOAN@Score.Stanford.EDU: Theft]
C00308 00037 ∂16-Dec-88 1313 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Undecidability of containment
C00311 00038 ∂16-Dec-88 1315 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Re: TCS geneology
C00313 00039 ∂16-Dec-88 1319 JONES@Score.Stanford.EDU Winter quarter AI classes
C00321 00040 ∂16-Dec-88 1352 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Call for papers FOCS 89
C00329 00041 ∂16-Dec-88 1448 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Distr.Comp.Workshop France, Corrected Version
C00337 00042 ∂16-Dec-88 1547 HEMENWAY@Score.Stanford.EDU more proposals
C00343 00043 ∂16-Dec-88 1613 @Score.Stanford.EDU:jcm@ra.stanford.edu PhD proposal
C00346 00044 ∂16-Dec-88 1656 @Score.Stanford.EDU:baskett@SGI.COM [SLOAN@Score.Stanford.EDU: Theft]
C00349 00045 ∂16-Dec-88 1821 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu #P-complete problem
C00352 00046 ∂16-Dec-88 1837 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu AMAST -- Second Call for Abstracts
C00360 00047 ∂17-Dec-88 1546 @Score.Stanford.EDU:RWF@SAIL.Stanford.EDU re: more proposals
C00363 00048 ∂18-Dec-88 0030 @polya.Stanford.EDU:pehoushe@Gang-of-Four.Stanford.EDU Re: #P-complete problem, the 12x12 case.
C00366 00049 ∂18-Dec-88 1603 LOGMTC-mailer beeson
C00367 00050 ∂19-Dec-88 0922 STAGER@Score.Stanford.EDU Another Winter Quarter AI Class of Interest
C00369 00051 ∂19-Dec-88 0924 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Re: #P-complete problem, the 12x12 case.
C00373 00052 ∂19-Dec-88 0930 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Bar-Ilan Symposium Announcement
C00381 00053 ∂19-Dec-88 0940 @Score.Stanford.EDU:jlh@vsop.Stanford.EDU Re: more proposals
C00384 00054 ∂19-Dec-88 0952 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Capital City Conference
C00399 00055 ∂19-Dec-88 1030 DEWERK@Score.Stanford.EDU CS-TAC Shutdown.
C00401 00056 ∂19-Dec-88 1114 @polya.Stanford.EDU:mendel@ois.db.toronto.edu Positions in Toronto
C00403 00057 ∂19-Dec-88 1426 @Score.Stanford.EDU:dill@amadeus.Stanford.EDU Re: more proposals
C00414 00058 ∂19-Dec-88 1519 @Score.Stanford.EDU:dill@amadeus.Stanford.EDU PhD research discussion
C00416 00059 ∂19-Dec-88 1621 @Score.Stanford.EDU:wheaton@athena.stanford.edu visitor
C00418 00060 ∂19-Dec-88 1637 @Score.Stanford.EDU:HALPERN@IBM.COM Re: research
C00423 00061 ∂19-Dec-88 2207 @Score.Stanford.EDU:jcm@ra.stanford.edu research
C00428 00062 ∂19-Dec-88 2233 @Score.Stanford.EDU:cheriton@Pescadero.Stanford.EDU Re: research
C00430 00063 ∂19-Dec-88 2242 X3J13-mailer Corrections to the ISO Report
C00437 00064 ∂19-Dec-88 2338 @Score.Stanford.EDU:eaf@sumex-aim.stanford.edu Re: more proposals
C00439 00065 ∂20-Dec-88 0233 X3J13-mailer Gabriel's report
C00444 00066 ∂20-Dec-88 0757 X3J13-mailer Re: Gabriel's report
C00447 00067 ∂20-Dec-88 1137 X3J13-mailer access to the standard
C00449 00068 ∂20-Dec-88 1301 @Score.Stanford.EDU:tah@linz PhD Requirements & Research
C00451 00069 ∂20-Dec-88 1544 @Score.Stanford.EDU:goldberg@polya.Stanford.EDU Ph.D. research
C00454 00070 ∂20-Dec-88 1816 @polya.Stanford.EDU:tah@linz Minimal models
C00457 00071 ∂20-Dec-88 2226 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Complete axiom sets for arithmetic equations,
C00463 00072 ∂20-Dec-88 2301 @Score.Stanford.EDU:linton@interviews.stanford.edu Re: Ph.D. research
C00465 00073 ∂21-Dec-88 0910 @Score.Stanford.EDU:daniel@mojave.Stanford.EDU Ph.D. research: the difference between exam requirements and course requirements.
C00469 00074 ∂21-Dec-88 0913 aaai@sumex-aim.stanford.edu Happy Holidays!
C00470 00075 ∂21-Dec-88 0946 @Score.Stanford.EDU:JMC@SAIL.Stanford.EDU comprehensives and research orientation
C00473 00076 ∂21-Dec-88 0946 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Re: Linear Programming Program Needed
C00476 00077 ∂21-Dec-88 1013 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Re: Complete axiom sets for arithmetic equations
C00481 00078 ∂21-Dec-88 1328 SLOAN@Score.Stanford.EDU Closing of offices tomorrow
C00483 00079 ∂21-Dec-88 1347 @Score.Stanford.EDU:pratt@chehalis.stanford.edu status of "cs.stanford.edu"
C00485 00080 ∂21-Dec-88 1351 @Score.Stanford.EDU:RWF@SAIL.Stanford.EDU re: Ph.D. research: the difference between exam requirements and course requirements.
C00488 00081 ∂21-Dec-88 1605 @Score.Stanford.EDU:pratt@chehalis Re: Ph.D. research: the difference between exam requirements and course requirements.
C00491 00082 ∂21-Dec-88 1722 @Score.Stanford.EDU:RWF@SAIL.Stanford.EDU re: Ph.D. research: the difference between exam requirements and course requirements.
C00493 00083 ∂21-Dec-88 1930 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Complete axiom sets for arithmetic equations,
C00498 00084 ∂21-Dec-88 1935 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Complete axiom sets for arithmetic equations
C00501 00085 ∂22-Dec-88 0925 @Score.Stanford.EDU:RPG@SAIL.Stanford.EDU Students and Research
C00509 00086 ∂22-Dec-88 1028 @Score.Stanford.EDU:gio@sumex-aim.stanford.edu Re: comprehensives and research orientation
C00511 00087 ∂22-Dec-88 1049 @Score.Stanford.EDU:winograd@loire.stanford.edu Re: research
C00514 00088 ∂22-Dec-88 1139 X3J13-mailer Error terminology
C00516 00089 ∂22-Dec-88 1147 TAJNAI@Score.Stanford.EDU Sunrise Club, Jan. 17.
C00518 00090 ∂22-Dec-88 1241 X3J13-mailer Re: Corrections to the ISO Report
C00527 00091 ∂22-Dec-88 1356 @Score.Stanford.EDU:eaf@sumex-aim.stanford.edu Re: comprehensives and research orientation
C00529 00092 ∂22-Dec-88 1447 X3J13-mailer Re: Corrections to the ISO Report
C00538 00093 ∂22-Dec-88 1545 ruben@apple.com Re: Philosophy Colloquium Dec. 9
C00540 00094 ∂22-Dec-88 1709 @Score.Stanford.EDU:RWF@SAIL.Stanford.EDU The Way We Were
C00543 00095 ∂23-Dec-88 0811 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Complete axiom sets for arithmetic equations
C00546 00096 ∂23-Dec-88 0823 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Center for Discrete Mathematics and Theoretical Computer Science
C00552 00097 ∂23-Dec-88 0825 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Announcement: DIMACS and Special Year.
C00559 00098 ∂23-Dec-88 1747 @Score.Stanford.EDU:eaf@sumex-aim.stanford.edu Re: The Way We Were
C00564 00099 ∂25-Dec-88 1351 @polya.Stanford.EDU:coraki!pratt@Sun.COM Minimal models
C00571 00100 ∂26-Dec-88 1541 @Score.Stanford.EDU:daniel@mojave.Stanford.EDU Ph.D. research: the difference between exam requirements and course requirements.
C00575 00101 ∂27-Dec-88 1134 @Score.Stanford.EDU:jlh@vsop.Stanford.EDU Re: Ph.D. research: the difference between exam requirements and course requirements.
C00579 00102 ∂27-Dec-88 1445 LOGMTC-mailer Model theoretic properties of universal horn sentences
C00581 00103 ∂27-Dec-88 1659 @Score.Stanford.EDU:binford@Boa-Constrictor.Stanford.EDU comps
C00586 00104 ∂28-Dec-88 1229 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu The *Other* Unification Algorithm, I
C00603 00105 ∂28-Dec-88 1337 aaai@sumex-aim.stanford.edu NTU
C00615 00106 ∂28-Dec-88 1531 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu amended "call for papers" for AMAST Conference
C00624 00107 ∂28-Dec-88 2238 @Score.Stanford.EDU:eaf@sumex-aim.stanford.edu Re: comps
C00628 00108 ∂29-Dec-88 0523 LOGMTC-mailer Re: Model theoretic properties of universal horn sentences
C00631 00109 ∂31-Dec-88 1755 @Score.Stanford.EDU:nilsson@Tenaya.stanford.edu Happy New Year!
C00649 00110 ∂03-Jan-89 0832 @Score.Stanford.EDU:chandler@polya.Stanford.EDU First Faculty Lunch....Winter Quarter
C00651 00111 ∂03-Jan-89 1027 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Recursion Theorems, a question on litterature.
C00655 00112 ∂03-Jan-89 1031 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Second Call for Papers
C00667 00113 ∂03-Jan-89 1038 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Call for Papers
C00673 00114 ∂03-Jan-89 1228 X3J13-mailer Hawaii registration status
C00679 00115 ∂03-Jan-89 1324 X3J13-mailer issues from cl-compiler
C00681 00116 ∂03-Jan-89 1358 @Score.Stanford.EDU:nilsson@Tenaya.stanford.edu DARPA Announcement
C00690 00117 ∂03-Jan-89 1406 @Score.Stanford.EDU:bhayes@polya.Stanford.EDU Re: DARPA Announcement
C00692 00118 ∂03-Jan-89 1424 X3J13-mailer issue ALLOW-LOCAL-INLINE
C00701 00119 ∂03-Jan-89 1426 X3J13-mailer issue COMPILE-ENVIRONMENT-CONSISTENCY
C00715 00120 ∂03-Jan-89 1428 X3J13-mailer issue DEFCONSTANT-SPECIAL
C00722 00121 ∂03-Jan-89 1429 X3J13-mailer issue LOAD-TIME-EVAL
C00738 00122 ∂03-Jan-89 1432 X3J13-mailer issue SHARP-COMMA-CONFUSION
C00746 00123 ∂03-Jan-89 1604 @Score.Stanford.EDU:nilsson@Tenaya.stanford.edu cs300
C00749 00124 ∂03-Jan-89 1618 @Score.Stanford.EDU:nilsson@Tenaya.stanford.edu Visit to SUN Microsystems
C00751 00125 ∂03-Jan-89 1631 @Score.Stanford.EDU:chandler@polya.Stanford.EDU 1/10 Faculty Meeting
C00753 00126 ∂03-Jan-89 1719 LOGMTC-mailer Talk Thurs
C00756 00127 ∂04-Jan-89 0931 @Score.Stanford.EDU:tom@polya.Stanford.EDU heating problem
C00758 00128 ∂04-Jan-89 1043 LOGMTC-mailer Seminar in Logic
C00761 00129 ∂04-Jan-89 1049 @Score.Stanford.EDU:gio@sumex-aim.stanford.edu Re: DARPA Announcement
C00763 00130 ∂04-Jan-89 1109 @Score.Stanford.EDU:tom@polya.Stanford.EDU DARPA Announcement
C00765 00131 ∂04-Jan-89 1115 @Score.Stanford.EDU:tom@polya.Stanford.EDU DARPA Announcement
C00767 00132 ∂04-Jan-89 1412 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Theory Net
C00770 00133 ∂04-Jan-89 1428 @Score.Stanford.EDU:cheriton@Pescadero.Stanford.EDU Re: DARPA Announcement
C00772 00134 ∂04-Jan-89 1739 @Score.Stanford.EDU:gio@sumex-aim.stanford.edu Re: DARPA Announcement
C00775 00135 ∂04-Jan-89 2028 @Score.Stanford.EDU:DEK@SAIL.Stanford.EDU First Faculty Lunch --- Winter Quarter
C00777 00136 ∂05-Jan-89 1055 debra@russell REMINDER
C00778 00137 ∂05-Jan-89 1342 X3J13-mailer ISO discussion and X3J13 Agenda DRAFT
C00782 00138 ∂05-Jan-89 1616 lansky@ai.sri.com SRI AIRR Seminar: TUESDAY, JANUARY 10, 2pm -- John Josephson
C00786 00139 ∂06-Jan-89 0843 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Urgent: Update to PODC Call for Papers
C00794 00140 ∂06-Jan-89 0917 aaai@sumex-aim.stanford.edu Council Conference Call
C00796 00141 ∂06-Jan-89 0921 @Score.Stanford.EDU:tom@polya.Stanford.EDU Dover retirement
C00799 00142 ∂06-Jan-89 1023 @Score.Stanford.EDU:chandler@polya.Stanford.EDU 1-10-89 Faculty Meeting
C00802 00143 ∂06-Jan-89 1203 @Score.Stanford.EDU:winograd@loire.stanford.edu SEMINAR ON COMPUTERS, ETHICS, and SOCIAL RESPONSIBILITY
C00807 00144 ∂06-Jan-89 1216 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Urgent: Semantics of Programming Languages
C00812 00145 ∂06-Jan-89 1239 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu URGENT: Noerteastern University Theory Day
C00816 00146 ∂06-Jan-89 1304 ULLMAN@Score.Stanford.EDU help save some fish
C00818 00147 ∂06-Jan-89 1442 ARCEO@Warbucks.AI.SRI.COM SEMINAR - JANUARY 11th (Wednesday)
C00822 00148 ∂06-Jan-89 1504 X3J13-mailer Ballots, please
C00824 00149 ∂06-Jan-89 2136 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Urgent: SPAA Deadline Approaching. Call for papers follows:
C00831 00150 ∂06-Jan-89 2239 @Score.Stanford.EDU:cheriton@Pescadero.Stanford.EDU Re: Dover retirement
C00833 00151 ∂06-Jan-89 2253 X3J13-mailer Issue: DECLARE-TYPE-FREE (Version 9)
C00854 00152 ∂07-Jan-89 0933 X3J13-mailer Issue COMPILE-FILE-HANDLING-OF-TOP-LEVEL-FORMS, version 8
C00873 00153 ∂07-Jan-89 0935 X3J13-mailer Issue CONSTANT-MODIFICATION, version 2
C00878 00154 ∂07-Jan-89 0944 X3J13-mailer **DRAFT** Issue COMPILER-DIAGNOSTICS, version 8
C00905 00155 ∂07-Jan-89 0946 X3J13-mailer **DRAFT** Issue COMPILER-VERBOSITY, version 5
C00917 00156 ∂07-Jan-89 1048 X3J13-mailer issues relating to compiled constants
C00920 00157 ∂07-Jan-89 1048 X3J13-mailer **DRAFT** issue CONSTANT-COMPILABLE-TYPES
C00948 00158 ∂07-Jan-89 1049 X3J13-mailer **DRAFT** issue CONSTANT-CIRCULAR-COMPILATION
C00959 00159 ∂07-Jan-89 1050 X3J13-mailer **DRAFT** issue CONSTANT-COLLAPSING
C00965 00160 ∂07-Jan-89 1050 X3J13-mailer **DRAFT** issue QUOTE-MAY-COPY
C00991 00161 ∂07-Jan-89 1311 X3J13-mailer **DRAFT** issue EVAL-WHEN-NON-TOP-LEVEL, version 4
C01002 00162 ∂07-Jan-89 1316 X3J13-mailer **DRAFT** issue DEFINING-MACROS-NON-TOP-LEVEL, version 7
C01013 00163 ∂08-Jan-89 2342 CL-Compiler-mailer **DRAFT** issue CONSTANT-COMPILABLE-TYPES
C01015 00164 ∂09-Jan-89 0848 X3J13-mailer Editorial committee issues
C01017 00165 ∂09-Jan-89 0849 X3J13-mailer Issue:DEPRECATION-POSITION
C01025 00166 ∂09-Jan-89 0851 X3J13-mailer Issue:CUT-OFF-DATES
C01034 00167 ∂09-Jan-89 0851 X3J13-mailer Issue:SUBSETTING-POSITION
C01042 00168 ∂09-Jan-89 0852 X3J13-mailer Issue:CONFORMANCE-POSITION
C01048 00169 ∂09-Jan-89 0933 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu URGENT: Northeastern University Theory Day - Corrections
C01052 00170 ∂09-Jan-89 0939 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Urgent: Semantics of Programming Languages
C01057 00171 ∂09-Jan-89 0943 LOGMTC-mailer Seminar reminders
C01059 00172 ∂09-Jan-89 1132 @Score.Stanford.EDU:chandler@polya.Stanford.EDU General Faculty Meeting
C01061 00173 ∂09-Jan-89 1149 @Score.Stanford.EDU:chandler@polya.Stanford.EDU Tomorrow's Faculty Lunch
C01063 00174 ∂09-Jan-89 1155 X3J13-mailer Issue:EXTENSIONS-POSITION
C01071 00175 ∂09-Jan-89 1242 X3J13-mailer Re: Issue:SUBSETTING-POSITION
C01075 00176 ∂09-Jan-89 1257 lansky@ai.sri.com AIRR Seminar Reminder
C01079 00177 ∂09-Jan-89 1303 X3J13-mailer revised ISO discussion, revised DRAFT Gegenda and Subcommittee meetings
C01083 00178 ∂09-Jan-89 1607 @polya.Stanford.EDU:dill@amadeus.Stanford.EDU Harry Lewis Talk
C01087 00179 ∂09-Jan-89 1632 @polya.Stanford.EDU:tah@linz MTC Seminar
C01089 00180 ∂09-Jan-89 1705 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Urgent: Invited Lecture
C01094 00181 ∂09-Jan-89 1712 @polya.Stanford.EDU:ARCEO@Warbucks.AI.SRI.COM SEMINAR - JANUARY 11th (Wednesday)
C01098 00182 ∂09-Jan-89 2246 misha@polya.Stanford.EDU Next AFLB
C01101 00183 ∂10-Jan-89 0817 TAJNAI@Score.Stanford.EDU Reminder of Sunrise Club breakfast on Tuesday, 1/17
C01103 00184 ∂10-Jan-89 0905 X3J13-mailer FTP access to compiler issues
C01105 00185 ∂10-Jan-89 0935 X3J13-mailer **DRAFT** issue COMPILED-FUNCTION-REQUIREMENTS, version 2
C01116 00186 ∂10-Jan-89 1011 @Score.Stanford.EDU:nilsson@Tenaya.stanford.edu [jadams@note.nsf.gov: CISE Newsletter]
C01142 00187 ∂10-Jan-89 1104 SLOAN@Score.Stanford.EDU Fax Machine
C01144 00188 ∂10-Jan-89 1214 debra@russell.Stanford.EDU REMINDER
C01146 00189 ∂10-Jan-89 1238 X3J13-mailer summary of open cl-compiler issues
C01154 00190 ∂10-Jan-89 1307 barwise@russell.Stanford.EDU Interns
C01159 00191 ∂10-Jan-89 1350 @Score.Stanford.EDU:ungar@self Re: Reminder of Sunrise Club breakfast on Tuesday, 1/17
C01161 00192 ∂10-Jan-89 1543 X3J13-mailer Issue: APPLYHOOK-ENVIRONMENT (Version 2)
C01166 00193 ∂10-Jan-89 1555 X3J13-mailer Issue: COMPLEX-ATAN-BRANCH-CUT, (Version 1)
C01171 00194 ∂10-Jan-89 1710 X3J13-mailer Issue: DEFSTRUCT-ACCESS-FUNCTIONS-INLINE, (Version 2)
C01175 00195 ∂10-Jan-89 1836 @Score.Stanford.EDU:nilsson@Tenaya.stanford.edu [jadams@note.nsf.gov: CISE Newsletter]
C01201 00196 ∂10-Jan-89 2258 @Score.Stanford.EDU:cheriton@Pescadero.Stanford.EDU Re: [jadams@note.nsf.gov: CISE Newsletter]
C01204 00197 ∂10-Jan-89 2349 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Urgent: announcement of panel on funding
C01210 00198 ∂11-Jan-89 1429 @Score.Stanford.EDU:nilsson@Tenaya.stanford.edu
C01215 00199 ∂11-Jan-89 1433 X3J13-mailer Another DRAFT Agenda
C01219 00200 ∂11-Jan-89 1435 @Score.Stanford.EDU:jle@Orange.stanford.edu CS Colloquium
C01221 00201 ∂11-Jan-89 1441 @polya.Stanford.EDU:phipps@solitary.Stanford.EDU new meeting time
C01223 00202 ∂11-Jan-89 1441 lansky@ai.sri.com Of possible interest....
C01229 00203 ∂11-Jan-89 1510 byrd@sumex-aim.stanford.edu Cm* book
C01231 00204 ∂11-Jan-89 1516 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Re: Urgent: announcement of panel on funding
C01233 00205 ∂11-Jan-89 1605 eaf@sumex-aim.stanford.edu Re: Cm* book
C01235 00206 ∂11-Jan-89 1649 X3J13-mailer Issue: IEEE-ATAN-BRANCH-CUT (Version 2)
C01243 00207 ∂11-Jan-89 1703 X3J13-mailer Issue: LISP-PACKAGE-NAME, (Version 1)
C01258 00208 ∂11-Jan-89 1731 hoffman@csli.Stanford.EDU the Symbolic Systems Forum Schedule Winter 89
C01260 00209 ∂11-Jan-89 1815 emma@csli.Stanford.EDU CSLI Calendar, January 12, 4:11
C01270 00210 ∂11-Jan-89 2008 X3J13-mailer Ballot (finally)
C01292 00211 ∂11-Jan-89 2233 X3J13-mailer Issue: SEQUENCE-FUNCTIONS-EXCLUDE-ARRAYS (Version 6)
C01301 00212 ∂11-Jan-89 2237 X3J13-mailer Issue: SPECIAL-TYPE-SHADOWING (Version 1)
C01307 00213 ∂11-Jan-89 2316 X3J13-mailer Issue: THE-AMBIGUITY (Version 2)
C01315 00214 ∂11-Jan-89 2346 X3J13-mailer Issue: UNDEFINED-VARIABLES-AND-FUNCTIONS (Version 1)
C01326 00215 ∂11-Jan-89 2357 X3J13-mailer Issue: DEFSTRUCT-CONSTRUCTOR-KEY-MIXTURE (Version 3)
C01334 00216 ∂12-Jan-89 0015 X3J13-mailer Issue: EQUAL-STRUCTURE, (Version 6)
C01345 00217 ∂12-Jan-89 0104 X3J13-mailer Issue: ADJUST-ARRAY-NOT-ADJUSTABLE (Version 4)
C01358 00218 ∂12-Jan-89 0117 X3J13-mailer Issue: APPEND-ATOM (Version 1)
C01366 00219 ∂12-Jan-89 0121 X3J13-mailer Issue: BACKQUOTE-COMMA-ATSIGN-DOT-COMMA (Version 1)
C01377 00220 ∂12-Jan-89 1004 @Score.Stanford.EDU:laudon@Portia.stanford.edu Jan 17 federal funding panel
C01382 00221 ∂12-Jan-89 1413 X3J13-mailer Issue: CLOSE-CONSTRUCTED-STREAM (Version 2)
C01391 00222 ∂12-Jan-89 1445 @Score.Stanford.EDU:weening@Gang-of-Four.Stanford.EDU USENET newsgroups for classes
C01393 00223 ∂12-Jan-89 1526 X3J13-mailer Issue: REMF-MULTIPLE (Version 2)
C01401 00224 ∂12-Jan-89 1642 X3J13-mailer Issue: REMF-DESTRUCTION-UNSPECIFIED (Version 4)
C01428 00225 ∂12-Jan-89 1647 @Score.Stanford.EDU:eyal@coyote.stanford.edu Broadcast of courses on SUNet
C01432 00226 ∂12-Jan-89 1711 X3J13-mailer Issue: PATHNAME-UNSPECIFIC-COMPONENT (Version 1)
C01444 00227 ∂12-Jan-89 1731 X3J13-mailer Issue: PACKAGE-FUNCTION-CONSISTENCY (Version 2)
C01452 00228 ∂12-Jan-89 1836 @Score.Stanford.EDU:allison@shasta.stanford.edu Re: Broadcast of courses on SUNet
C01455 00229 ∂12-Jan-89 1928 @Score.Stanford.EDU:JMC@SAIL.Stanford.EDU re: Broadcast of courses on SUNet
C01457 00230 ∂12-Jan-89 2125 @Score.Stanford.EDU:dill@amadeus.Stanford.EDU re: Broadcast of courses on SUNet
C01459 00231 ∂12-Jan-89 2245 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Re: Broadcast of courses on SUNet
C01461 00232 ∂13-Jan-89 0102 @Score.Stanford.EDU:eaf@sumex-aim.stanford.edu Re: Broadcast of courses on SUNet
C01463 00233 ∂13-Jan-89 0833 @Score.Stanford.EDU:chandler@polya.Stanford.EDU Tuesday's Facutly Lunch
C01465 00234 ∂13-Jan-89 0851 @Score.Stanford.EDU:RPG@SAIL.Stanford.EDU Broadcast of courses on SUNet
C01467 00235 ∂13-Jan-89 0900 @Score.Stanford.EDU:cleron@polya.Stanford.EDU Re: Broadcast of courses on SUNet
C01470 00236 ∂13-Jan-89 0909 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Re: Broadcast of courses on SUNet
C01473 00237 ∂13-Jan-89 0918 TAJNAI@Score.Stanford.EDU Broadcast of courses on SUNet
C01476 00238 ∂13-Jan-89 0928 @Score.Stanford.EDU:chandler@polya.Stanford.EDU Tuesday's Faculty Lunch
C01478 00239 ∂13-Jan-89 1013 @Score.Stanford.EDU:tom@polya.Stanford.EDU SITN
C01481 00240 ∂13-Jan-89 1029 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Re: SITN
C01483 00241 ∂13-Jan-89 1043 @Score.Stanford.EDU:bhayes@polya.Stanford.EDU faculty mailing list
C01485 00242 ∂13-Jan-89 1143 @Score.Stanford.EDU:eyal@coyote.stanford.edu Re: broadcast of courses on SUNet
C01490 00243 ∂13-Jan-89 1609 @Score.Stanford.EDU:ungar@self Re: SITN
C01492 00244 ∂13-Jan-89 1629 @Score.Stanford.EDU:bhayes@polya.Stanford.EDU SITN metadiscussion
C01496 00245 ∂13-Jan-89 2326 @Score.Stanford.EDU:cheriton@Pescadero.Stanford.EDU More on broadcast of courses
C01501 00246 ∂13-Jan-89 2328 barwise@russell.Stanford.EDU Interns
C01503 00247 ∂14-Jan-89 0006 @Score.Stanford.EDU:allison@shasta.stanford.edu More on the TV question
C01505 00248 ∂14-Jan-89 0037 @Score.Stanford.EDU:JMC@SAIL.Stanford.EDU re: More on the TV question
C01508 00249 ∂14-Jan-89 0803 @Score.Stanford.EDU:CAB@SAIL.Stanford.EDU Professional TV lectures
C01510 00250 ∂14-Jan-89 0935 @Score.Stanford.EDU:nilsson@Tenaya.stanford.edu mailing lists
C01512 00251 ∂14-Jan-89 0939 @Score.Stanford.EDU:nilsson@Tenaya.stanford.edu space in mjh
C01514 00252 ∂14-Jan-89 1147 @Score.Stanford.EDU:dill@amadeus.Stanford.EDU TV
C01518 00253 ∂14-Jan-89 2005 @Score.Stanford.EDU:ungar@self Re: TV
C01520 00254 ∂15-Jan-89 1203 TAJNAI@Score.Stanford.EDU [Tracy Larrabee <larrabee@polya.Stanford.EDU>: Re: COMPUTER FORUM ---POSTER SESSION -- REVISED DEADLINE ]
C01526 00255 ∂15-Jan-89 1321 @Score.Stanford.EDU:coraki!pratt@Sun.COM Occasional summaries of student opinion
C01528 00256 ∂15-Jan-89 1326 @Score.Stanford.EDU:coraki!pratt@Sun.COM Re: SITN
C01530 00257 ∂15-Jan-89 1336 @Score.Stanford.EDU:gio@sumex-aim.stanford.edu TV and lectures, my vote
C01532 00258 ∂16-Jan-89 1103 @Score.Stanford.EDU:nilsson@Tenaya.stanford.edu CSD Retreat
C01535 00259 ∂16-Jan-89 1107 @Score.Stanford.EDU:nilsson@Tenaya.stanford.edu Tuesday Lunch
C01537 00260 ∂16-Jan-89 1235 @Score.Stanford.EDU:hayes@arisia.xerox.com SITN
C01539 00261 ∂16-Jan-89 1245 @Score.Stanford.EDU:hayes@arisia.xerox.com More on the TV question
C01542 00262 ∂16-Jan-89 1255 @Score.Stanford.EDU:hayes@arisia.xerox.com Professional TV lectures
C01545 00263 ∂16-Jan-89 1314 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Text in programming language semantics
C01548 00264 ∂16-Jan-89 1333 @Score.Stanford.EDU:nilsson@Tenaya.stanford.edu [moran@Warbucks.AI.SRI.COM: RFC: Ethics of the Internet]
C01556 00265 ∂16-Jan-89 1402 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Faculty positions at University of Haifa
C01559 00266 ∂16-Jan-89 1403 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Towards an Online Rolodex
C01563 00267 ∂16-Jan-89 1406 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Finite Halting Problem Considered Solvable
C01570 00268 ∂16-Jan-89 1406 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Theory positon at Michigan
C01576 00269 ∂16-Jan-89 1407 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu an improved Boolean matrix multiplication algorithm
C01583 00270 ∂16-Jan-89 1502 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Registration information for EUROCRYPT '89
C01596 00271 ∂16-Jan-89 1503 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Solving BITMAP Rotation in place
C01608 00272 ∂16-Jan-89 1602 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu ASL logic meeting at UCLA
C01622 00273 ∂16-Jan-89 1606 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Call for Participation
C01640 00274 ∂17-Jan-89 0933 @Score.Stanford.EDU:goldberg@polya.Stanford.EDU Re: More on the TV question
C01642 00275 ∂17-Jan-89 1129 @Score.Stanford.EDU:bhayes@polya.Stanford.EDU Re: Occasional summaries of student opinion
C01646 00276 ∂17-Jan-89 1444 misha@polya.Stanford.EDU Next AFLB
C01649 00277 ∂17-Jan-89 1605 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu yet another bibliography request: logic programming
C01652 00278 ∂17-Jan-89 1629 @polya.Stanford.EDU:DEK@SAIL.Stanford.EDU Wednesday not Friday
C01654 00279 ∂17-Jan-89 1748 @Score.Stanford.EDU:nilsson@Tenaya.stanford.edu dismay
C01657 00280 ∂17-Jan-89 1840 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Re: Urgent: announcement of panel on funding
C01660 00281 ∂18-Jan-89 0049 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Prosser & Winkel : A joke or what....???
C01663 00282 ∂18-Jan-89 0054 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Re: SITN
C01668 00283 ∂18-Jan-89 0100 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Re: broadcasting classes
C01673 00284 ∂18-Jan-89 0102 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Re: SITN
C01677 00285 ∂18-Jan-89 0106 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Re: SITN
C01680 00286 ∂18-Jan-89 0108 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU The best lectures I ever attended
C01684 00287 ∂18-Jan-89 0111 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Televised Classes
C01690 00288 ∂18-Jan-89 0720 @polya.Stanford.EDU:Ekaterini.Yannoulis@pulsar.fac.cs.cmu.edu Undeliverable mail
C01696 00289 ∂18-Jan-89 1035 @Score.Stanford.EDU:coraki!pratt@Sun.COM TV
C01698 00290 ∂18-Jan-89 1114 aaai@sumex-aim.stanford.edu CMU Email Interface
C01704 00291 ∂18-Jan-89 1116 @Score.Stanford.EDU:jwilson@jaguar.Stanford.EDU NeXT machine installed near MJH 246
C01706 00292 ∂18-Jan-89 1216 misha@polya.Stanford.EDU Correction on TODAY'S talk by bernd Sturmfels
C01707 00293 ∂18-Jan-89 1227 LOGMTC-mailer seminar on lambda calculus and PL semantics
C01709 00294 ∂18-Jan-89 1236 aaai@sumex-aim.stanford.edu trucated message
C01710 00295 ∂18-Jan-89 1252 LOGMTC-mailer seminar on lambda calculus and PL semantics
C01711 00296 ∂18-Jan-89 1323 aaai@sumex-aim.stanford.edu resending CMU interface info
C01734 00297 ∂18-Jan-89 1457 @polya.Stanford.EDU:imielins@aramis.rutgers.edu PODS 89 - Final Program
C01755 00298 ∂18-Jan-89 1537 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu SIGACT News Deadline
C01758 00299 ∂18-Jan-89 1823 emma@csli.Stanford.EDU CSLI Calendar, January 19, 4:12
C01765 00300 ∂18-Jan-89 1842 @polya.Stanford.EDU:tah@linz MTC Seminar
C01767 00301 ∂19-Jan-89 0820 tcr@sumex-aim.stanford.edu IBM ARC CS Seminar
C01772 00302 ∂19-Jan-89 0835 HEMENWAY@Score.Stanford.EDU Need Someone for Orals Committee
C01774 00303 ∂19-Jan-89 0908 HEMENWAY@Score.Stanford.EDU Let the Games Begin!
C01777 00304 ∂19-Jan-89 1035 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu SIGACT News Deadline
C01780 00305 ∂19-Jan-89 1049 @Score.Stanford.EDU:chandler@polya.Stanford.EDU The case of the missing fedora.....
C01782 00306 ∂19-Jan-89 1126 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Last Call for Papers
C01797 00307 ∂19-Jan-89 2324 hoffman@csli.Stanford.EDU Symbolic Systems Forum Reminder
C01799 00308 ∂20-Jan-89 0852 @Score.Stanford.EDU:chandler@polya.Stanford.EDU Faculty Lunch
C01801 00309 ∂20-Jan-89 1049 @Score.Stanford.EDU:chandler@polya.Stanford.EDU CSD Retreat
C01803 00310 ∂20-Jan-89 1230 LOGMTC-mailer seminar in logic
C01805 00311 ∂20-Jan-89 1532 @Score.Stanford.EDU:latombe@coyote.stanford.edu Re: CSD Retreat
C01807 00312 ∂20-Jan-89 1630 @polya.Stanford.EDU:decwrl!decvax!gatech!cs.utexas.edu!utep-vaxa!teodor@labrea.stanford.edu mailing list
C01810 00313 ∂21-Jan-89 0042 hoffman@csli.Stanford.EDU Symbolic Systems Forum Jan 27th
C01813 00314 ∂21-Jan-89 1406 byrd@sumex-aim.stanford.edu object-oriented paper
C01815 00315 ∂23-Jan-89 1016 @Score.Stanford.EDU:winograd@loire.stanford.edu PhD program discussion
C01819 00316 ∂23-Jan-89 1048 debra@russell.Stanford.EDU REMINDER
C01821 00317 ∂23-Jan-89 1051 X3J13-mailer Issues DECLARATION-SCOPE and DEFINING-MACROS-NON-TOP-LEVEL
C01824 00318 ∂23-Jan-89 1059 debra@russell.Stanford.EDU EVENING SEMINAR REMINDER
C01825 00319 ∂23-Jan-89 1409 X3J13-mailer Second edition of "Common Lisp: The Language"
C01833 00320 ∂23-Jan-89 1423 X3J13-mailer cl-compiler issues
C01836 00321 ∂23-Jan-89 1459 @Score.Stanford.EDU:jle@Orange.stanford.edu CS Colloquia
C01841 00322 ∂23-Jan-89 1503 misha@polya.Stanford.EDU TWO AFLB talks this week!
C01845 00323 ∂23-Jan-89 1518 saraiya@sumex-aim.stanford.edu [Nevena Raykovic <nevena@pescadero.stanford.edu> : CS548-Distributed
C01848 00324 ∂23-Jan-89 1722 TAJNAI@Score.Stanford.EDU "taxes on gifts"
C01856 00325 ∂24-Jan-89 0852 @Score.Stanford.EDU:gio@sumex-aim.stanford.edu Re: "taxes on gifts"
C01858 00326 ∂24-Jan-89 0905 TAJNAI@Score.Stanford.EDU Re: "taxes on gifts"
C01860 00327 ∂24-Jan-89 0942 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu POSITION ANNOUNCEMENT
C01864 00328 ∂24-Jan-89 0944 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Theory Day - last announcement
C01868 00329 ∂24-Jan-89 1133 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu STOC '89: TENTATIVE PROGRAM
C01879 00330 ∂24-Jan-89 1231 CL-Characters-mailer Comments on the Character proposal dated January 1, 1989
C01904 00331 ∂24-Jan-89 1312 CL-Characters-mailer Comments on the Character proposal dated January 1, 1989
C01907 00332 ∂24-Jan-89 1325 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Sorting on NxN Mesh.
C01915 00333 ∂24-Jan-89 1736 misha@polya.Stanford.EDU This week's AFLB
C01918 00334 ∂24-Jan-89 1949 @Score.Stanford.EDU,@polya.Stanford.EDU:hayes@arisia.xerox.com teaching strategies
C01925 00335 ∂25-Jan-89 0613 X3J13-mailer Issues DECLARATION-SCOPE and DEFINING-MACROS-NON-TOP-LEVEL
C01931 00336 ∂25-Jan-89 0850 X3J13-mailer Issues DECLARATION-SCOPE and DEFINING-MACROS-NON-TOP-LEVEL
C01933 00337 ∂25-Jan-89 0936 X3J13-mailer Issues DECLARATION-SCOPE and DEFINING-MACROS-NON-TOP-LEVEL
C01936 00338 ∂25-Jan-89 1320 @Score.Stanford.EDU:chandler@polya.Stanford.EDU Forsythe Lectures/Ruzena Bajcsy
C01938 00339 ∂25-Jan-89 1555 snoeyink@polya.Stanford.EDU Next BATS
C01939 00340 ∂25-Jan-89 1732 emma@csli.Stanford.EDU CSLI Calendar, January 26, 4:13
C01948 00341 ∂26-Jan-89 0002 X3J13-mailer Re: Comments on the Character proposal dated January 1, 1989
C01956 00342 ∂26-Jan-89 0920 TAJNAI@Score.Stanford.EDU book signing at the Forum annual meeting
C01958 00343 ∂26-Jan-89 0924 @Score.Stanford.EDU:goldberg@Jinn.stanford.edu Industrial Lecturer Appointment
C01960 00344 ∂26-Jan-89 1349 GENESERETH@Score.Stanford.EDU Re: Industrial Lecturer Appointment
C01962 00345 ∂26-Jan-89 1352 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Combinatorial Enumeration Question
C01965 00346 ∂26-Jan-89 1403 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu TCS day at Maryland
C01970 00347 ∂26-Jan-89 1444 TAJNAI@Score.Stanford.EDU Affiliates "Tax"
C01984 00348 ∂26-Jan-89 1803 X3J13-mailer Re: Comments on the Character proposal dated January 1, 1989
C01989 00349 ∂26-Jan-89 1926 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu SUMMER MEETING FOR YOUNG SCIENTISTS
C01996 00350 ∂26-Jan-89 1928 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu bibliography on semantics of inheritance
C02004 00351 ∂26-Jan-89 2139 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu PODS 89 - advanced program
C02025 00352 ∂26-Jan-89 2300 @polya.Stanford.EDU:tah@linz MTC Seminar
C02027 00353 ∂27-Jan-89 0307 X3J13-mailer Issues DECLARATION-SCOPE and DEFINING-MACROS-NON-TOP-LEVEL
C02030 00354 ∂27-Jan-89 0825 @Score.Stanford.EDU:chandler@polya.Stanford.EDU 1/31 Faculty Lunch
C02032 00355 ∂27-Jan-89 0833 @Score.Stanford.EDU:tom@polya.Stanford.EDU NCUBE
C02035 00356 ∂27-Jan-89 0918 @Score.Stanford.EDU:tom@polya.Stanford.EDU alto's/dovers
C02037 00357 ∂27-Jan-89 1041 @Score.Stanford.EDU:goldberg@Jinn.stanford.edu Potential visitor
C02039 00358 ∂27-Jan-89 1101 @Score.Stanford.EDU:goldberg@Jinn.stanford.edu Industrial Lecturer
C02041 00359 ∂27-Jan-89 1329 @Score.Stanford.EDU,@polya.Stanford.EDU:hayes@arisia.xerox.com NCUBE
C02044 00360 ∂29-Jan-89 1101 @Score.Stanford.EDU:nilsson@Tenaya.stanford.edu CIS Mentor program
C02046 00361 ∂29-Jan-89 1251 hoffman@csli.Stanford.EDU The Symbolic Systems Forum Feb. 3rd
C02049 00362 ∂29-Jan-89 1433 @Score.Stanford.EDU:JMC@SAIL.Stanford.EDU Protesting the censorship of a newsgroup
C02051 00363 ∂29-Jan-89 1436 @Score.Stanford.EDU:Mailer@SAIL.Stanford.EDU rec.humor.funny
C02054 00364 ∂29-Jan-89 1449 @Score.Stanford.EDU:Mailer@SAIL.Stanford.EDU Censoring rec.humor.funny
C02065 00365 ∂29-Jan-89 1508 @Score.Stanford.EDU:JMC@SAIL.Stanford.EDU rec.humor.funny
C02069 00366 ∂29-Jan-89 1721 @Score.Stanford.EDU:coraki!pratt@Sun.COM rec.humor.funny
C02072 00367 ∂29-Jan-89 1804 LOGMTC-mailer Logic seminar
C02075 00368 ∂30-Jan-89 0743 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Faculty Lunch: The PhD Program
C02088 00369 ∂30-Jan-89 0747 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Spokespersons meeting of Jan. 23, 1989
C02092 00370 ∂30-Jan-89 0750 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Teaching Strategies
C02097 00371 ∂30-Jan-89 0753 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Comps and PhD program
C02102 00372 ∂30-Jan-89 0756 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Re: A Comp Retrospective
C02106 00373 ∂30-Jan-89 0759 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Re: Comps and PhD program
C02110 00374 ∂30-Jan-89 0802 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Re: Comps and PhD program
C02113 00375 ∂30-Jan-89 0805 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Apprenticeship
C02118 00376 ∂30-Jan-89 0808 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Re: Comps and PhD program
C02122 00377 ∂30-Jan-89 0811 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Re: Comps and PhD program
C02126 00378 ∂30-Jan-89 0814 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Re: Apprenticeship
C02129 00379 ∂30-Jan-89 0817 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU re: Comps and PhD program
C02133 00380 ∂30-Jan-89 0820 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU re: Comps and PhD program
C02136 00381 ∂30-Jan-89 0822 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Comprehensive Exams
C02140 00382 ∂30-Jan-89 0826 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Sr Staff Meeting
C02145 00383 ∂30-Jan-89 0830 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU A Comp Retrospective
C02152 00384 ∂30-Jan-89 0833 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Re: A Comp Retrospective
C02155 00385 ∂30-Jan-89 0837 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Re: A Comp Retrospective
C02158 00386 ∂30-Jan-89 0842 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Re: More-on the Faculty Lunch
C02163 00387 ∂30-Jan-89 0850 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Forwarding Mail
C02166 00388 ∂30-Jan-89 0857 @Score.Stanford.EDU:hayes@arisia.xerox.com rec.humor.funny
C02169 00389 ∂30-Jan-89 1118 @Score.Stanford.EDU:tom@polya.Stanford.EDU Large automated NFS file/archive server
C02172 00390 ∂30-Jan-89 1124 @Score.Stanford.EDU:Mailer@SAIL.Stanford.EDU misquote
C02174 00391 ∂30-Jan-89 1142 @Score.Stanford.EDU,@polya.Stanford.EDU:TAJNAI@Score.Stanford.EDU Re: Large automated NFS file/archive server
C02176 00392 ∂30-Jan-89 1225 @Score.Stanford.EDU:katiyar@polya.Stanford.EDU winter potluck (volunteer wanted)
C02179 00393 ∂30-Jan-89 1336 LOGMTC-mailer Carl Gunter talk 2/8
C02183 00394 ∂31-Jan-89 0132 X3J13-mailer Comments on the Character proposal dated January 1, 1989
C02192 00395 ∂31-Jan-89 0942 STAGER@Score.Stanford.EDU Autumn Quarter Tau Beta Pi
C02193 00396 ∂31-Jan-89 1357 CL-Characters-mailer Comments on the Character proposal dated January 1, 1989
C02198 00397 ∂31-Jan-89 1405 misha@polya.Stanford.EDU This week's AFLB
C02202 00398 ∂31-Jan-89 1528 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu sorting on nxn mesh
C02206 00399 ∂31-Jan-89 2321 @Score.Stanford.EDU:ag@pepper.stanford.edu acquiring a multiprocessor
C02209 00400 ∂01-Feb-89 0910 HEMENWAY@Score.Stanford.EDU Meeting Reminder
C02211 00401 ∂01-Feb-89 1353 X3J13-mailer Fairfax information and registration form
C02217 00402 ∂01-Feb-89 1759 emma@csli.Stanford.EDU CSLI Calendar, February 2, 4:14
C02224 00403 ∂01-Feb-89 2146 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Thirteenth Columbia University Theory Day
C02228 00404 ∂02-Feb-89 0859 @Score.Stanford.EDU:chandler@polya.Stanford.EDU Minutes to 1/10 Faculty Meeting
C02230 00405 ∂02-Feb-89 0927 TAJNAI@Score.Stanford.EDU program for the Forum Conference
C02232 00406 ∂02-Feb-89 1102 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu What Exit Seminar Series
C02235 00407 ∂02-Feb-89 1121 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Conference on Math. Foundations of Prog. Semantics
C02248 00408 ∂02-Feb-89 1307 X3J13-mailer Really about TYPEP failures: Comments on the Character proposal dated January 1, 1989
C02258 00409 ∂02-Feb-89 1613 @polya.Stanford.EDU:tah@linz MTC Seminar
C02261 00410 ∂02-Feb-89 1639 STAGER@Score.Stanford.EDU Preliminary Class Lists
C02262 00411 ∂02-Feb-89 1644 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Found: one cute lemma, doesn't answer to any name.
C02265 00412 ∂02-Feb-89 1729 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu NIPS CALL FOR PAPERS
C02272 00413 ∂02-Feb-89 1815 snoeyink@polya.Stanford.EDU Bats Speakers and Abstracts
C02284 00414 ∂02-Feb-89 1826 snoeyink@polya.Stanford.EDU Going to BATS
C02288 00415 ∂02-Feb-89 2125 hoffman@csli.Stanford.EDU This Friday's (the 3rd) Symbolic Systems Forum
C02291 00416 ∂02-Feb-89 2345 LOGMTC-mailer Seminar in Logic
C02294 00417 ∂03-Feb-89 0824 @Score.Stanford.EDU:chandler@polya.Stanford.EDU Next Tuesday's Faculty Lunch
C02296 00418 ∂03-Feb-89 0840 HEMENWAY@Score.Stanford.EDU Round 1
C02299 00419 ∂03-Feb-89 0907 @Score.Stanford.EDU:nilsson@Tenaya.stanford.edu [jadams@note.nsf.gov: Educational Supplements to CISE-Research Grants]
C02305 00420 ∂03-Feb-89 1130 HEMENWAY@Score.Stanford.EDU GRE Analytical Scores
C02307 00421 ∂03-Feb-89 2333 X3J13-mailer Issue: DECLARE-ARRAY-TYPE-ELEMENT-REFERENCES (Version 3)
C02314 00422 ∂05-Feb-89 1020 X3J13-mailer Fairfax and Hotel badness
C02316 00423 ∂05-Feb-89 1104 @Score.Stanford.EDU:nilsson@Tenaya.stanford.edu [fuller@sierra.STANFORD.EDU: Grants of HP equipment]
C02320 00424 ∂05-Feb-89 2223 hoffman@csli.Stanford.EDU The Symbolic Systems Forum, Feb. 10th
C02324 00425 ∂06-Feb-89 0008 misha@polya.Stanford.EDU Next AFLB
C02326 00426 ∂06-Feb-89 0921 @Score.Stanford.EDU:chandler@polya.Stanford.EDU Tomorrow's Faculty Lunch
C02328 00427 ∂06-Feb-89 1854 snoeyink@polya.Stanford.EDU Bats Speakers and Abstracts
C02340 00428 ∂06-Feb-89 1926 LOGMTC-mailer Seminar cancellation
C02341 00429 ∂06-Feb-89 2000 misha@polya.Stanford.EDU Next AFLB
C02343 00430 ∂07-Feb-89 1041 debra@russell.Stanford.EDU REMINDER-Evening Seminar
C02345 00431 ∂07-Feb-89 1329 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Interval splitting problem
C02348 00432 ∂07-Feb-89 1355 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu A WORKSHOP ON CELLULAR AUTOMATA
C02352 00433 ∂07-Feb-89 1405 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Feasible Mathematics Workshop -- Announcement
C02357 00434 ∂07-Feb-89 1428 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Re: Sorting on NxN Mesh.
C02364 00435 ∂07-Feb-89 1455 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu collision in DES: distributed and probabilistic algorithm
C02371 00436 ∂07-Feb-89 1505 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu CALL FOR PAPERS -Conference BCTCS5
C02381 00437 ∂07-Feb-89 1543 X3J13-mailer What-a-Guy!
C02386 00438 ∂07-Feb-89 1735 LOGMTC-mailer Carl Gunter Reminder
C02390 00439 ∂08-Feb-89 0736 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Program Extraction / Calculus of Constructions
C02393 00440 ∂08-Feb-89 0752 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu
C02398 00441 ∂08-Feb-89 0828 HEMENWAY@Score.Stanford.EDU Round 1 Meeting
C02400 00442 ∂08-Feb-89 1107 @Score.Stanford.EDU:chandler@polya.Stanford.EDU Ruzena Bacjsy
C02402 00443 ∂08-Feb-89 1607 @polya.Stanford.EDU:tah@linz MTC Seminar
C02404 00444 ∂08-Feb-89 1622 misha@polya.Stanford.EDU AFLB TOMORROW!!
C02407 00445 ∂08-Feb-89 1651 TAJNAI@Score.Stanford.EDU need FORUM RSVP
C02409 00446 ∂09-Feb-89 0436 X3J13-mailer Preview of things to come from editorial committee
C02413 00447 ∂09-Feb-89 0437 X3J13-mailer Issue: CUT-OFF-DATES
C02433 00448 ∂09-Feb-89 0440 X3J13-mailer Issue: FONTS
C02437 00449 ∂09-Feb-89 0444 X3J13-mailer Issue: TOC
C02447 00450 ∂09-Feb-89 0537 X3J13-mailer Issue: ERROR-TERMINOLOGY
C02465 00451 ∂09-Feb-89 0831 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Hong Kong International Computer Conference
C02468 00452 ∂09-Feb-89 0928 X3J13-mailer Re: Issue: ERROR-TERMINOLOGY
C02471 00453 ∂09-Feb-89 0959 X3J13-mailer Re: Issue: ERROR-TERMINOLOGY
C02477 00454 ∂09-Feb-89 1003 emma@csli.Stanford.EDU CSLI Calendar, 9 February, 4:15
C02485 00455 ∂09-Feb-89 1008 X3J13-mailer Issue: ERROR-TERMINOLOGY
C02490 00456 ∂09-Feb-89 1059 X3J13-mailer Re: Issue: ERROR-TERMINOLOGY
C02493 00457 ∂09-Feb-89 1059 snoeyink@polya.Stanford.EDU [irani@ernie.Berkeley.EDU: BATS Correction]
C02496 00458 ∂09-Feb-89 1248 lansky@ai.sri.com AI-RR Seminar -- TUESDAY (Valentine's Day) -- 2pm -- W.Zadrozny
C02500 00459 ∂10-Feb-89 0819 HEMENWAY@Score.Stanford.EDU Batch 3 folders
C02502 00460 ∂10-Feb-89 1018 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Disk Space problems on Polya
C02505 00461 ∂10-Feb-89 1031 STAGER@Score.Stanford.EDU 1989/90 Courses and Degrees
C02507 00462 ∂10-Feb-89 1038 @Score.Stanford.EDU:farhad@polya.Stanford.EDU Re: Disk Space problems on Polya
C02512 00463 ∂10-Feb-89 1041 @Score.Stanford.EDU:ball@polya.Stanford.EDU Disk Space problems on Polya
C02514 00464 ∂10-Feb-89 1055 LOGMTC-mailer Seminar in Logic
C02517 00465 ∂10-Feb-89 1449 HEMENWAY@Score.Stanford.EDU Round 1 Meeting
C02519 00466 ∂11-Feb-89 1339 @polya.Stanford.EDU:tah@linz Faculty candidate
C02521 00467 ∂12-Feb-89 1619 @Score.Stanford.EDU:nilsson@Tenaya.stanford.edu Calendar Advisory
C02524 00468 ∂13-Feb-89 0023 barwise@russell.Stanford.EDU Question from student
C02528 00469 ∂13-Feb-89 0750 @Score.Stanford.EDU:chandler@polya.Stanford.EDU Tomorrow's Faculty Lunch
C02530 00470 ∂13-Feb-89 1018 @Score.Stanford.EDU:chandler@polya.Stanford.EDU Forsythe Lectures
C02533 00471 ∂13-Feb-89 1141 @Score.Stanford.EDU:nilsson@Tenaya.stanford.edu faculty meeting
C02536 00472 ∂13-Feb-89 1332 barwise@russell.Stanford.EDU SS GRad students
C02543 00473 ∂13-Feb-89 1404 lansky@ai.sri.com AI-RR SEMINAR REMINDER -- TUESDAY AT 2PM
C02547 00474 ∂13-Feb-89 2001 misha@polya.Stanford.EDU AFLB tomorrow at 11 am!
C02549 00475 ∂13-Feb-89 2222 @Score.Stanford.EDU:jle@Orange.stanford.edu CS Colloquium/Forsythe Lecture
C02554 00476 ∂14-Feb-89 0309 hoffman@csli.Stanford.EDU The Symbolic Systems Forum, Feb. 17th
C02557 00477 ∂14-Feb-89 0904 @Score.Stanford.EDU:chandler@polya.Stanford.EDU Faculty Lunch
C02559 00478 ∂14-Feb-89 0922 X3J13-mailer X3J13/ISO overlap
C02561 00479 ∂14-Feb-89 1012 aaai@sumex-aim.stanford.edu Next Council Meeting
C02563 00480 ∂14-Feb-89 1226 X3J13-mailer Copying and Equality paper
C02565 00481 ∂14-Feb-89 1235 SLOAN@Score.Stanford.EDU
C02567 00482 ∂14-Feb-89 1240 @Score.Stanford.EDU:jle@Orange.stanford.edu Milk & Cookies
C02569 00483 ∂14-Feb-89 1318 snoeyink@polya.Stanford.EDU Bats Speakers and Abstracts
C02581 00484 ∂14-Feb-89 2115 LOGMTC-mailer "Categories for working logicians"
C02585 00485 ∂15-Feb-89 0953 @Score.Stanford.EDU:chandler@polya.Stanford.EDU CSD Retreat
C02588 00486 ∂15-Feb-89 1200 LOGMTC-mailer Thurs seminar
C02589 00487 ∂15-Feb-89 1209 @Score.Stanford.EDU:tom@polya.Stanford.EDU Epoch Systems server/archive
C02591 00488 ∂15-Feb-89 1451 TAJNAI@Score.Stanford.EDU Computer Forum Reception
C02593 00489 ∂15-Feb-89 1541 barwise@russell.Stanford.EDU courses for next year
C02595 00490 ∂15-Feb-89 1656 HEMENWAY@Score.Stanford.EDU The Last Batch
C02597 00491 ∂16-Feb-89 0427 barwise@russell.Stanford.EDU grad courses and seminars
C02600 00492 ∂16-Feb-89 0431 barwise@russell.Stanford.EDU Re: grad courses and seminars
C02602 00493 ∂16-Feb-89 0859 GOTELLI@Score.Stanford.EDU New Rates for Polya
C02605 00494 ∂16-Feb-89 0905 hyde@csli.Stanford.EDU csli calendar, Feb. 16, 4:16
C02615 00495 ∂16-Feb-89 1302 @Score.Stanford.EDU:katiyar@polya.Stanford.EDU WINTER POTLUCK
C02621 00496 ∂16-Feb-89 1657 @Score.Stanford.EDU:goldberg@Jinn.stanford.edu Needed: Industrial Lecturers
C02623 00497 ∂16-Feb-89 1808 tah@polya.Stanford.EDU MTC Seminar
C02624 00498 ∂17-Feb-89 0003 @Score.Stanford.EDU:marty@cis.Stanford.EDU WINTER POTLUCK
C02626 00499 ∂17-Feb-89 0014 @Score.Stanford.EDU:marty@cis.Stanford.EDU Needed: Industrial Lecturers
C02628 00500 ∂17-Feb-89 0019 @Score.Stanford.EDU:marty@cis.Stanford.EDU CSD Retreat
C02630 00501 ∂17-Feb-89 0842 @Score.Stanford.EDU:nilsson@Tenaya.stanford.edu $50K
C02632 00502 ∂17-Feb-89 0909 @Score.Stanford.EDU:chandler@polya.Stanford.EDU Next Tuesday's Faculty Lunch
C02634 00503 ∂17-Feb-89 0931 LOGMTC-mailer Logic Seminar
C02636 00504 ∂17-Feb-89 1139 @Score.Stanford.EDU:RWF@SAIL.Stanford.EDU Comprehensive Structure Long-term Committees
C02643 00505 ∂17-Feb-89 1202 @Score.Stanford.EDU:goldberg@Jinn.stanford.edu Industrial Lecturers
C02645 00506 ∂18-Feb-89 1439 @Score.Stanford.EDU:gio@sumex-aim.stanford.edu Re: Comprehensive Structure Long-term Committees
C02648 00507 ∂18-Feb-89 2234 @Score.Stanford.EDU:jcm@ra.stanford.edu Re: Comprehensive Structure Long-term Committees
C02650 00508 ∂19-Feb-89 1446 LOGMTC-mailer The Symbolic Systems Forum, Feb. 24th
C02653 00509 ∂20-Feb-89 0129 X3J13-mailer Issue: SUBSETTING-POSITION
C02663 00510 ∂20-Feb-89 1255 X3J13-mailer Re: Issue: SUBSETTING-POSITION
C02667 00511 ∂20-Feb-89 1406 X3J13-mailer Issue: CONFORMANCE-POSITION
C02674 00512 ∂20-Feb-89 1452 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu SIGACT Newletter
C02678 00513 ∂20-Feb-89 1747 misha@polya.Stanford.EDU Next AFLB
C02682 00514 ∂21-Feb-89 0638 X3J13-mailer Updated version of standard available
C02691 00515 ∂21-Feb-89 0755 @Score.Stanford.EDU:JMC@SAIL.Stanford.EDU Proposed CSD statement on censorship of rec.humor.funny
C02696 00516 ∂21-Feb-89 0800 @Score.Stanford.EDU:chandler@polya.Stanford.EDU At today's faculty lunch......
C02698 00517 ∂21-Feb-89 0858 BSCOTT@Score.Stanford.EDU [AS.BTH@Forsythe.Stanford.EDU: Army RFP]
C02706 00518 ∂21-Feb-89 1002 HEMENWAY@Score.Stanford.EDU Round 2 Schedule
C02713 00519 ∂21-Feb-89 1021 @Score.Stanford.EDU:nilsson@Tenaya.stanford.edu staff and lunch
C02716 00520 ∂21-Feb-89 1053 @Score.Stanford.EDU:chandler@polya.Stanford.EDU Today's Faculty Meeting
C02718 00521 ∂21-Feb-89 1101 @Score.Stanford.EDU:chandler@polya.Stanford.EDU ["Joyce R. Chandler" <chandler@polya.stanford.edu> : Today's Faculty
C02721 00522 ∂21-Feb-89 1108 @Score.Stanford.EDU:chandler@polya.Stanford.EDU Today's Faculty Meeting
C02723 00523 ∂21-Feb-89 1118 debra@russell.Stanford.EDU REMINDER-Evening Seminar
C02725 00524 ∂21-Feb-89 1143 acuff@sumex-aim.stanford.edu New disk on file server
C02728 00525 ∂21-Feb-89 1310 lansky@ai.sri.com AI-RR Seminar THIS THURSDAY -- 3:15pm -- Jay Weber
C02732 00526 ∂21-Feb-89 1552 @Score.Stanford.EDU:hayes@arisia.xerox.com Proposed CSD statement on censorship of rec.humor.funny
C02734 00527 ∂21-Feb-89 1610 @Score.Stanford.EDU:goldberg@polya.Stanford.EDU Ph.D. program
C02739 00528 ∂21-Feb-89 1633 @Score.Stanford.EDU:ungar@self Re: Ph.D. program
C02740 00529 ∂21-Feb-89 1734 @Score.Stanford.EDU:jcm@ra.stanford.edu Ph.D. program
C02742 00530 ∂21-Feb-89 1937 @Score.Stanford.EDU:JMC@SAIL.Stanford.EDU draft extra sentence to precede final paragraph
C02743 00531 ∂21-Feb-89 2149 X3J13-mailer Source for section 2.4
C02764 00532 ∂21-Feb-89 2150 X3J13-mailer Source for section 6.1
C02785 00533 ∂21-Feb-89 2151 X3J13-mailer Feb. 21 Letter Ballot
C02792 00534 ∂21-Feb-89 2153 X3J13-mailer Issue: TOC
C02803 00535 ∂21-Feb-89 2155 X3J13-mailer Issue: FONTS
C02807 00536 ∂21-Feb-89 2201 X3J13-mailer Issue: CUT-OFF-DATES
C02827 00537 ∂21-Feb-89 2201 X3J13-mailer Issue: ERROR-TERMINOLOGY
C02849 00538 ∂21-Feb-89 2149 X3J13-mailer Source for section 1.8
C02852 00539 ∂21-Feb-89 2208 X3J13-mailer Source for section 2.5
C02915 00540 ∂21-Feb-89 2209 X3J13-mailer Source for section 2.3
C02978 00541 ∂21-Feb-89 2210 @Score.Stanford.EDU:linton@interviews.Stanford.EDU Re: Ph.D. program
C02982 00542 ∂21-Feb-89 2237 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu NIPS POST-MEETING WORKSHOPS
C02989 00543 ∂21-Feb-89 2239 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu WADS '89
C02995 00544 ∂21-Feb-89 2241 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Seventh Amsterdam Colloquium -- Call for papers
C03001 00545 ∂21-Feb-89 2243 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Call for papers - FST&TCS9
C03008 00546 ∂21-Feb-89 2250 @Score.Stanford.EDU:gio@sumex-aim.stanford.edu Re: Ph.D. program
C03010 00547 ∂21-Feb-89 2251 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Structure in Complexity Theory - Preliminary Program
C03020 00548 ∂22-Feb-89 0023 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu CO89 Combinatorial Optimization Conference
C03031 00549 ∂22-Feb-89 0030 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Capital City Conference on Combinatorics and Theoretical Computer
C03046 00550 ∂22-Feb-89 0052 @Score.Stanford.EDU:cheriton@Pescadero.Stanford.EDU Re: draft extra sentence to precede final paragraph
C03049 00551 ∂22-Feb-89 0121 @Score.Stanford.EDU:cheriton@Pescadero.Stanford.EDU Random theories of PhD-ology
C03053 00552 ∂22-Feb-89 1059 @Score.Stanford.EDU:hayes@arisia.xerox.com draft extra sentence to precede final paragraph
C03057 00553 ∂22-Feb-89 1110 @Score.Stanford.EDU:bhayes@polya.Stanford.EDU Proposed changes
C03060 00554 ∂22-Feb-89 1127 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Textbook on Kolmogorov Complexity: in the making
C03066 00555 ∂22-Feb-89 1209 STAGER@Score.Stanford.EDU 1989/90 Courses and Degrees
C03067 00556 ∂22-Feb-89 1327 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu CDOOD 89 - CFP
C03079 00557 ∂22-Feb-89 1336 X3J13-mailer recent sent to wrong mailing list
C03137 00558 ∂22-Feb-89 1337 X3J13-mailer cs proposal part1 of 3
C03187 00559 ∂22-Feb-89 1338 X3J13-mailer cs proposal part 2 of 3
C03228 00560 ∂22-Feb-89 1339 X3J13-mailer cs proposal part 3 of 3
C03276 00561 ∂22-Feb-89 1432 @Score.Stanford.EDU:gio@sumex-aim.stanford.edu A Proposal to Change Initial Student Support
C03279 00562 ∂22-Feb-89 1515 HEMENWAY@Score.Stanford.EDU Super-stars
C03281 00563 ∂22-Feb-89 1545 hyde@csli.Stanford.EDU CSLI Calendar, Feb 23, 4:17
C03289 00564 ∂22-Feb-89 1630 X3J13-mailer cs proposal part 3 of 3
C03291 00565 ∂22-Feb-89 1633 @Score.Stanford.EDU:katiyar@polya.Stanford.EDU WINTER POTLUCK REMINDER
C03295 00566 ∂22-Feb-89 1707 X3J13-mailer Re: cs proposal part 3 of 3
C03297 00567 ∂22-Feb-89 1713 X3J13-mailer cs proposal straw vote
C03305 00568 ∂22-Feb-89 1714 X3J13-mailer cs proposal
C03306 00569 ∂22-Feb-89 1713 X3J13-mailer cs proposal errata
C03308 00570 ∂23-Feb-89 0029 @Score.Stanford.EDU:cheriton@Pescadero.Stanford.EDU Re: A Proposal to Change Initial Student Support
C03311 00571 ∂23-Feb-89 0318 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Re: A Proposal to Change Initial Student Support
C03313 00572 ∂23-Feb-89 1143 @Score.Stanford.EDU:winograd@loire.stanford.edu Undergraduate committee meeting next Wed, March 1, 4:30pm
C03319 00573 ∂23-Feb-89 1212 @Score.Stanford.EDU:gio@sumex-aim.stanford.edu Re: A Proposal to Change Initial Student Support
C03322 00574 ∂23-Feb-89 1251 @Score.Stanford.EDU:JMC@SAIL.Stanford.EDU
C03323 00575 ∂23-Feb-89 1452 @Score.Stanford.EDU:nilsson@Tenaya.stanford.edu [AS.BTH@Forsythe.Stanford.EDU: AFOSR URI BAA]
C03338 00576 ∂23-Feb-89 1620 @polya.Stanford.EDU:tah@linz MTC Seminar
C03340 00577 ∂23-Feb-89 2027 @polya.Stanford.EDU:plotkin@goblin.Stanford.EDU Next AFLB - Tuesday, February 28, 4:15pm.
C03344 00578 ∂24-Feb-89 0829 @Score.Stanford.EDU:chandler@polya.Stanford.EDU Next Week's Faculty Lunch
C03346 00579 ∂24-Feb-89 1033 @Score.Stanford.EDU:pratt@chehalis.stanford.edu CSD potluck this Sunday
C03350 00580 ∂24-Feb-89 1426 X3J13-mailer Issue: EXTENTIONS-POSITION
C03357 00581 ∂24-Feb-89 1429 @Score.Stanford.EDU:gio@sumex-aim.stanford.edu Re: A Proposal to Change Initial Student Support
C03359 00582 ∂24-Feb-89 1437 X3J13-mailer Issue: EXTRA-RETURN-VALUES
C03362 00583 ∂24-Feb-89 1439 X3J13-mailer Issue: UNSPECIFIED-DATATYPES
C03367 00584 ∂24-Feb-89 1439 X3J13-mailer Issue: MACRO-AS-FUNCTION
C03371 00585 ∂24-Feb-89 1439 X3J13-mailer Issue: UNSOLICITED-MESSAGES
C03375 00586 ∂24-Feb-89 1524 TAJNAI@Score.Stanford.EDU Important dates for 1990
C03378 00587 ∂24-Feb-89 1609 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu ADVANCE PROGRAM FOR STOC '89
C03421 00588 ∂25-Feb-89 0941 LOGMTC-mailer Logic Seminar
C03424 00589 ∂26-Feb-89 1350 @Score.Stanford.EDU:Mailer@SAIL.Stanford.EDU
C03427 00590 ∂26-Feb-89 1446 hoffman@csli.Stanford.EDU The Symbolic Systems Forum, March 3rd
C03430 00591 ∂26-Feb-89 2018 @Score.Stanford.EDU,@polya.Stanford.EDU:coraki!pratt@Sun.COM potluck report
C03433 00592 ∂27-Feb-89 0207 @Score.Stanford.EDU:lam@k2.Stanford.EDU Re: A Proposal to Change Initial Student Support
C03435 00593 ∂27-Feb-89 0217 X3J13-mailer Issue: EXTRA-SYNTAX
C03438 00594 ∂27-Feb-89 0218 X3J13-mailer Issue: EXTRA-OPTIONAL-KEYWORD-ARGUMENTS
C03443 00595 ∂27-Feb-89 0255 X3J13-mailer Review schedule reminder
C03447 00596 ∂27-Feb-89 0851 @Score.Stanford.EDU:nilsson@Tenaya.stanford.edu faculty meetings
C03451 00597 ∂27-Feb-89 0917 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu STOC Errata and Manuscripts
C03454 00598 ∂27-Feb-89 0922 @Score.Stanford.EDU:golub@na-net.stanford.edu Re: faculty meetings
C03460 00599 ∂27-Feb-89 1005 GENESERETH@Score.Stanford.EDU Re: faculty meetings
C03462 00600 ∂27-Feb-89 1009 @Score.Stanford.EDU:dill@amadeus.Stanford.EDU potluck
C03464 00601 ∂27-Feb-89 1045 @Score.Stanford.EDU:jcm@ra.stanford.edu potluck
C03466 00602 ∂27-Feb-89 1050 @Score.Stanford.EDU:winograd@loire.stanford.edu potluck
C03471 00603 ∂27-Feb-89 1100 TAJNAI@Score.Stanford.EDU Re: potluck
C03473 00604 ∂27-Feb-89 1106 TAJNAI@Score.Stanford.EDU Call for IBM fellowship nominees
C03475 00605 ∂27-Feb-89 1101 X3J13-mailer characters and conformance
C03478 00606 ∂27-Feb-89 2357 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu LICS-89
C03500 00607 ∂28-Feb-89 0733 @Score.Stanford.EDU:chandler@polya.Stanford.EDU Today's Faculty Lunch
C03502 00608 ∂28-Feb-89 0816 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu The ?What Exit? seminar series
C03511 00609 ∂28-Feb-89 0854 @Score.Stanford.EDU:nilsson@Tenaya.stanford.edu fac mtg
C03515 00610 ∂28-Feb-89 0956 X3J13-mailer agenda items, registration
C03520 00611 ∂28-Feb-89 1128 misha@polya.Stanford.EDU reminder: AFLB TODAY!
C03523 00612 ∂28-Feb-89 1347 X3J13-mailer cs proposal
C03524 00613 ∂01-Mar-89 0611 @Score.Stanford.EDU:op@polya.Stanford.EDU The rec.humor.funny controversy
C03530 00614 ∂01-Mar-89 0758 @Score.Stanford.EDU:chandler@polya.Stanford.EDU Today's Faculty Meeting
C03532 00615 ∂01-Mar-89 0802 @Score.Stanford.EDU:chandler@polya.Stanford.EDU I can't believe I did that.....
C03534 00616 ∂01-Mar-89 1109 X3J13-mailer Section 1.7
C03543 00617 ∂01-Mar-89 1111 X3J13-mailer Section 5.2
C03558 00618 ∂01-Mar-89 1136 X3J13-mailer Section 1.5
C03565 00619 ∂01-Mar-89 1138 X3J13-mailer Section 1.6
C03600 00620 ∂01-Mar-89 1159 X3J13-mailer New versions of standard files available
C03603 00621 ∂01-Mar-89 1203 X3J13-mailer Section 1.3
C03607 00622 ∂01-Mar-89 1207 X3J13-mailer Section 2.1
C03613 00623 ∂01-Mar-89 1232 X3J13-mailer Section 1.1
C03624 00624 ∂01-Mar-89 1232 X3J13-mailer Section 1.2
C03626 00625 ∂01-Mar-89 1234 X3J13-mailer Section 1.4
C03632 00626 ∂01-Mar-89 1240 X3J13-mailer Section 5.3
C03645 00627 ∂01-Mar-89 1243 X3J13-mailer Section 5.4
C03664 00628 ∂01-Mar-89 1257 X3J13-mailer cs proposal and straw vote
C03677 00629 ∂01-Mar-89 1305 X3J13-mailer Section 1.7
C03681 00630 ∂01-Mar-89 1326 littell@polya.Stanford.EDU Spring Quarter RA appointments
C03683 00631 ∂01-Mar-89 1335 X3J13-mailer Re: Section 1.7
C03686 00632 ∂01-Mar-89 1404 @Score.Stanford.EDU:winograd@loire.stanford.edu Clancy and undergraduate teaching
C03693 00633 ∂01-Mar-89 1432 @Score.Stanford.EDU:wab@sumex-aim.stanford.edu rec.humor.funny, CSD students
C03701 00634 ∂01-Mar-89 1517 @polya.Stanford.EDU:tah@linz Theory Faculty Candidate
C03703 00635 ∂01-Mar-89 1526 X3J13-mailer minor comments on letter ballot material
C03711 00636 ∂01-Mar-89 1622 misha@polya.Stanford.EDU AFLB tomorrow!
C03715 00637 ∂01-Mar-89 1748 @Score.Stanford.EDU:hayes@arisia.xerox.com rec.humor.funny, CSD students
C03721 00638 ∂01-Mar-89 1853 X3J13-mailer Re: minor comments on letter ballot material
C03725 00639 ∂01-Mar-89 2340 X3J13-mailer Section 2.2, part 1
C03765 00640 ∂01-Mar-89 2355 X3J13-mailer Section 2.2 - part 2
C03802 00641 ∂02-Mar-89 0008 X3J13-mailer Section 2.2 - part 3
C03819 00642 ∂02-Mar-89 0731 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Cryptography textbook
C03821 00643 ∂02-Mar-89 0834 X3J13-mailer Section 2.2 - part 4
C03845 00644 ∂02-Mar-89 0905 X3J13-mailer Section 2.2 - part 5
C03926 00645 ∂02-Mar-89 0928 X3J13-mailer forwarding note from gregor from larry
C03936 00646 ∂02-Mar-89 0928 X3J13-mailer forwarding mail from gray
C03947 00647 ∂02-Mar-89 0930 X3J13-mailer cs proposal comments
C03948 00648 ∂02-Mar-89 0929 X3J13-mailer cs proposal comments
C03959 00649 ∂02-Mar-89 1000 X3J13-mailer Re: cs proposal and straw vote
C03964 00650 ∂02-Mar-89 1151 X3J13-mailer Re: cs proposal comments
C03967 00651 ∂02-Mar-89 1421 emma@csli.Stanford.EDU CSLI Calendar, 2 March, 4:18
C03973 00652 ∂02-Mar-89 1502 chandler@polya.Stanford.EDU Test
C03974 00653 ∂02-Mar-89 1510 chandler@polya.Stanford.EDU Another test
C03975 00654 ∂02-Mar-89 1632 X3J13-mailer minor comments on the character proposal
C03979 00655 ∂02-Mar-89 1729 @polya.Stanford.EDU:tah@linz MTC Seminar
C03980 00656 ∂02-Mar-89 1819 @Score.Stanford.EDU:jle@Orange.stanford.edu CS Colloquium
C03984 00657 ∂02-Mar-89 1831 @Score.Stanford.EDU:jle@Orange.stanford.edu CS Colloquium
C03988 00658 ∂02-Mar-89 1909 X3J13-mailer cs proposal and straw vote
C03993 00659 ∂02-Mar-89 1929 X3J13-mailer answer to request for comments on comments on comments on characters
C04004 00660 ∂02-Mar-89 1941 CL-Characters-mailer Really about TYPEP failures: Comments on the Character proposal dated January 1, 1989
C04007 00661 ∂02-Mar-89 2119 LOGMTC-mailer Logic seminar
C04010 00662 ∂03-Mar-89 0004 X3J13-mailer cs comments
C04015 00663 ∂03-Mar-89 0726 @Score.Stanford.EDU:tom@polya.Stanford.EDU NeXT Machine moving
C04017 00664 ∂03-Mar-89 0913 X3J13-mailer cs comments
C04024 00665 ∂03-Mar-89 1006 X3J13-mailer Issue: ERROR-TERMINOLOGY
C04036 00666 ∂03-Mar-89 1032 @polya.Stanford.EDU:tah@linz Theory Faculty Candidate
C04038 00667 ∂03-Mar-89 1127 chandler@polya.Stanford.EDU CSD Retreat
C04040 00668 ∂03-Mar-89 1130 X3J13-mailer Re: Section 1.7
C04042 00669 ∂03-Mar-89 1202 X3J13-mailer Common Lisp
C04045 00670 ∂03-Mar-89 1221 X3J13-mailer KMP's personal comments on 22-Feb-89 Character Proposal
C04069 00671 ∂03-Mar-89 1226 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Final Program-Complexity Symposium
C04085 00672 ∂03-Mar-89 1333 @polya.Stanford.EDU:hayes@arisia.xerox.com CSD Retreat
C04087 00673 ∂03-Mar-89 1427 X3J13-mailer Re: Issue: ERROR-TERMINOLOGY
C04091 00674 ∂03-Mar-89 1539 X3J13-mailer What is a FUNCTION?
C04095 00675 ∂03-Mar-89 1548 X3J13-mailer Error Terminology
C04103 00676 ∂03-Mar-89 1632 X3J13-mailer Re: Issue: ERROR-TERMINOLOGY
C04107 00677 ∂03-Mar-89 1704 X3J13-mailer Issue: ERROR-TERMINOLOGY
C04109 00678 ∂04-Mar-89 1159 X3J13-mailer Error Terminology
C04111 00679 ∂05-Mar-89 1521 hoffman@csli.Stanford.EDU the Symbolic Systems Forum, March 10th.
C04114 00680 ∂06-Mar-89 0838 TAJNAI@Score.Stanford.EDU nominations are closed
C04115 00681 ∂06-Mar-89 0849 @Score.Stanford.EDU:chandler@polya.Stanford.EDU 3-7 Faculty Lunch
C04117 00682 ∂06-Mar-89 1004 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Re: Cryptography textbook
C04120 00683 ∂06-Mar-89 1008 STAGER@Score.Stanford.EDU Spring TA Appoitments
C04123 00684 ∂06-Mar-89 1038 edith@polya.Stanford.EDU faculty candidate visit
C04125 00685 ∂06-Mar-89 1114 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Bar-Ilan Symposium on Foudations of Artificial Intelligence --
C04133 00686 ∂06-Mar-89 1124 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Crypto '89 -- Final Call for Papers
C04144 00687 ∂06-Mar-89 1130 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Re: Cryptography textbook
C04153 00688 ∂06-Mar-89 1133 X3J13-mailer Re: KMP's personal comments on 22-Feb-89 Character Proposal
C04155 00689 ∂06-Mar-89 1322 X3J13-mailer Re: minor comments on letter ballot material
C04159 00690 ∂06-Mar-89 1348 X3J13-mailer Feb. 21 Letter Ballot: editorial issues
C04165 00691 ∂06-Mar-89 1355 X3J13-mailer minor comments on letter ballot material
C04168 00692 ∂06-Mar-89 1435 @Score.Stanford.EDU:andy@Gang-of-Four.Stanford.EDU CS student vote on William A. Brown's Statement
C04171 00693 ∂06-Mar-89 1449 X3J13-mailer Re: cs proposal and straw vote
C04177 00694 ∂06-Mar-89 1453 X3J13-mailer Re: cs proposal comments
C04182 00695 ∂06-Mar-89 1506 BSCOTT@Score.Stanford.EDU Univ. Travel Task Force
C04185 00696 ∂06-Mar-89 1512 BSCOTT@Score.Stanford.EDU American Express
C04186 00697 ∂06-Mar-89 1527 misha@polya.Stanford.EDU AFLB tomorrow!
C04189 00698 ∂06-Mar-89 1538 X3J13-mailer Re: cs proposal and straw vote
C04192 00699 ∂06-Mar-89 1627 X3J13-mailer cs proposal straw vote
C04204 00700 ∂06-Mar-89 1714 X3J13-mailer Review schedule reminder
C04206 00701 ∂06-Mar-89 1755 @Score.Stanford.EDU:marty@cis.Stanford.EDU Univ. Travel Task Force
C04208 00702 ∂07-Mar-89 0254 X3J13-mailer clarification
C04211 00703 ∂07-Mar-89 1011 STAGER@Score.Stanford.EDU Tau Beta Pi
C04213 00704 ∂07-Mar-89 1011 debra@russell.Stanford.EDU REMINDER-EVENING SEMINAR
C04215 00705 ∂07-Mar-89 1126 emma@csli.Stanford.EDU CSLI Calendar correction
C04217 00706 ∂07-Mar-89 1207 HEMENWAY@Score.Stanford.EDU Reports Ready
C04219 00707 ∂07-Mar-89 1334 X3J13-mailer hotel for march meeting
C04220 00708 ∂07-Mar-89 1342 @Score.Stanford.EDU:nilsson@Tenaya Thinking Machines
C04223 00709 ∂07-Mar-89 1403 X3J13-mailer Agenda DRAFT
C04226 00710 ∂07-Mar-89 1427 @Score.Stanford.EDU:NA.PHL@Forsythe.Stanford.EDU Sunrise Club Breakfast
C04228 00711 ∂07-Mar-89 1429 X3J13-mailer registration list
C04233 00712 ∂07-Mar-89 1448 @Score.Stanford.EDU:wheaton@Athena.Stanford.EDU IBM RT
C04235 00713 ∂08-Mar-89 0520 X3J13-mailer Issue: PLUS-ABNORMAL
C04238 00714 ∂08-Mar-89 0523 X3J13-mailer Issue: PLUS-ABNORMAL
C04239 00715 ∂08-Mar-89 1023 STAGER@Score.Stanford.EDU Final Exams
C04242 00716 ∂08-Mar-89 1134 @Score.Stanford.EDU:nilsson@Tenaya faculty meeting
C04245 00717 ∂08-Mar-89 1306 @Score.Stanford.EDU:golub@na-net.stanford.edu NSF visitor
C04248 00718 ∂08-Mar-89 1509 @Score.Stanford.EDU:berglund@polya.Stanford.EDU Ph.D. Student Meeting
C04272 00719 ∂08-Mar-89 1610 misha@polya.Stanford.EDU AFLB tomorrow!
C04275 00720 ∂08-Mar-89 1649 X3J13-mailer February 21 Ballot
C04280 00721 ∂08-Mar-89 1719 emma@csli.Stanford.EDU CSLI Calendar, 9 March, $:19
C04288 00722 ∂08-Mar-89 1741 X3J13-mailer Feb. 21 Letter Ballot: editorial issues
C04293 00723 ∂09-Mar-89 1122 kuder@russell.Stanford.EDU SSP Internship lunch
C04295 00724 ∂09-Mar-89 1340 X3J13-mailer Issue: SUBSETTING-POSITION
C04297 00725 ∂09-Mar-89 1345 X3J13-mailer Issue: EXTENTIONS-POSITION
C04299 00726 ∂09-Mar-89 1349 X3J13-mailer Issue: MACRO-AS-FUNCTION
C04301 00727 ∂09-Mar-89 1350 X3J13-mailer Issue: UNSOLICITED-MESSAGES (Version 2)
C04303 00728 ∂09-Mar-89 1352 X3J13-mailer Issue: UNSPECIFIED-DATATYPES (Version 2)
C04305 00729 ∂09-Mar-89 1357 X3J13-mailer Issue: EXTRA-SYNTAX (Version 4)
C04307 00730 ∂09-Mar-89 1406 X3J13-mailer Issue: EXTRA-OPTIONAL-KEYWORD-ARGUMENTS (Version 3)
C04311 00731 ∂09-Mar-89 1433 X3J13-mailer Issue: EXTRA-SYNTAX (Version 4)
C04314 00732 ∂09-Mar-89 1539 X3J13-mailer Re: Issue: UNSPECIFIED-DATATYPES (Version 2)
C04316 00733 ∂09-Mar-89 1613 TAJNAI@Score.Stanford.EDU IBM Fellowship nominations
C04318 00734 ∂09-Mar-89 1742 GENESERETH@Score.Stanford.EDU phd admissions
C04321 00735 ∂09-Mar-89 1847 animal@Portia.stanford.edu Re: SSP Internship lunch
C04323 00736 ∂09-Mar-89 1914 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu COLLOQUIUM SERIES 88-89, Marist College
C04329 00737 ∂09-Mar-89 2038 LOGMTC-mailer "Categories for the working logician"
C04332 00738 ∂10-Mar-89 2024 LOGMTC-mailer The Alfred Tarski Lectures
C04334 00739 ∂11-Mar-89 1034 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu network meeting announcement for distribution
C04343 00740 ∂11-Mar-89 1139 HEMENWAY@Score.Stanford.EDU Ph.D. Admits
C04350 00741 ∂12-Mar-89 1616 X3J13-mailer Issue: UNSOLICITED-MESSAGES
C04354 00742 ∂13-Mar-89 0714 X3J13-mailer cl-compiler mail
C04356 00743 ∂13-Mar-89 0747 X3J13-mailer issue COMPILED-FUNCTION-REQUIREMENTS, version 4
C04371 00744 ∂13-Mar-89 0748 X3J13-mailer issue COMPILER-DIAGNOSTICS, version 9
C04386 00745 ∂13-Mar-89 0749 X3J13-mailer issue COMPILER-VERBOSITY, version 6
C04393 00746 ∂13-Mar-89 0815 X3J13-mailer issue CONSTANT-COMPILABLE-TYPES, version 8
C04423 00747 ∂13-Mar-89 0821 X3J13-mailer issue CONSTANT-CIRCULAR-COMPILATION, version 7
C04435 00748 ∂13-Mar-89 0824 X3J13-mailer issue CONSTANT-COLLAPSING, version 5
C04442 00749 ∂13-Mar-89 0834 X3J13-mailer issue LOAD-TIME-EVAL, version 11
C04468 00750 ∂13-Mar-89 0837 @Score.Stanford.EDU:nilsson@Tenaya.Stanford.EDU Ullman and NAE
C04470 00751 ∂13-Mar-89 0840 X3J13-mailer Issue: UNSOLICITED-MESSAGES
C04474 00752 ∂13-Mar-89 0853 X3J13-mailer issue MACRO-CACHING, version 2
C04492 00753 ∂13-Mar-89 0855 X3J13-mailer Issue: UNSOLICITED-MESSAGES
C04500 00754 ∂13-Mar-89 0853 X3J13-mailer issue COMPILER-VERBOSITY, version 6
C04502 00755 ∂13-Mar-89 0924 X3J13-mailer issue QUOTE-SEMANTICS, version 2
C04516 00756 ∂13-Mar-89 0929 X3J13-mailer issue SAFE-CODE, version 1
C04522 00757 ∂13-Mar-89 0945 @Score.Stanford.EDU:nilsson@Tenaya.Stanford.EDU faculty lunch
C04524 00758 ∂13-Mar-89 1007 @Score.Stanford.EDU:eaf@sumex-aim.stanford.edu Re: faculty lunch
C04526 00759 ∂13-Mar-89 1014 X3J13-mailer Issue: UNSOLICITED-MESSAGES
C04532 00760 ∂13-Mar-89 1046 X3J13-mailer Issue: UNSOLICITED-MESSAGES
C04534 00761 ∂13-Mar-89 1450 X3J13-mailer **DRAFT** issue CLOS-MACRO-COMPILATION, version 2
C04547 00762 ∂13-Mar-89 1452 X3J13-mailer issue COMPILE-ENVIRONMENT-CONSISTENCY, version 4
C04562 00763 ∂13-Mar-89 1514 X3J13-mailer issue COMPILE-FILE-SYMBOL-HANDLING, version 2
C04593 00764 ∂13-Mar-89 1517 X3J13-mailer issue COMPILER-LET-CONFUSION, version 7
C04617 00765 ∂13-Mar-89 1531 X3J13-mailer **DRAFT** issue DEFCONSTANT-NOT-WIRED, version 6
C04627 00766 ∂13-Mar-89 1533 X3J13-mailer issue DEFINE-OPTIMIZER, version 5
C04645 00767 ∂13-Mar-89 1536 X3J13-mailer issue DEFINING-MACROS-NON-TOP-LEVEL, version 8
C04654 00768 ∂13-Mar-89 1545 X3J13-mailer issue EVAL-WHEN-NON-TOP-LEVEL, version 6
C04687 00769 ∂13-Mar-89 1601 X3J13-mailer **DRAFT** issue MACRO-ENVIRONMENT-EXTENT, version 3
C04703 00770 ∂13-Mar-89 1610 X3J13-mailer **DRAFT** issue PROCLAIM-ETC-IN-COMPILE-FILE (version 4)
C04716 00771 ∂13-Mar-89 1622 X3J13-mailer **DRAFT** issue SYNTACTIC-ENVIRONMENT-ACCESS (version 4)
C04745 00772 ∂13-Mar-89 1627 X3J13-mailer issue WITH-COMPILATION-UNIT, version 3
C04755 00773 ∂13-Mar-89 1634 X3J13-mailer summary of active cl-compiler issues
C04764 00774 ∂13-Mar-89 1643 X3J13-mailer issue COMPILER-LET-CONFUSION, version 7
C04767 00775 ∂14-Mar-89 0859 @Score.Stanford.EDU:chandler@polya.Stanford.EDU Faculty Meeting
C04769 00776 ∂14-Mar-89 0911 aaai@sumex-aim.stanford.edu Reminder/Council Mtg
C04771 00777 ∂14-Mar-89 0938 CL-Compiler-mailer issue COMPILER-LET-CONFUSION, version 7
C04776 00778 ∂14-Mar-89 0956 CL-Compiler-mailer issue DEFINE-OPTIMIZER, version 5
C04781 00779 ∂14-Mar-89 1005 CL-Compiler-mailer issue WITH-COMPILATION-UNIT, version 3
C04784 00780 ∂14-Mar-89 1217 CL-Compiler-mailer **DRAFT** issue MACRO-ENVIRONMENT-EXTENT, version 3
C04786 00781 ∂14-Mar-89 1232 CL-Compiler-mailer **DRAFT** issue PROCLAIM-ETC-IN-COMPILE-FILE (version 4)
C04791 00782 ∂14-Mar-89 1310 CL-Compiler-mailer issue DEFINING-MACROS-NON-TOP-LEVEL, version 8
C04795 00783 ∂14-Mar-89 1326 CL-Compiler-mailer issue COMPILE-FILE-SYMBOL-HANDLING, version 2
C04798 00784 ∂14-Mar-89 1340 CL-Compiler-mailer issue COMPILE-ENVIRONMENT-CONSISTENCY, version 4
C04800 00785 ∂14-Mar-89 1351 CL-Compiler-mailer issue SAFE-CODE, version 1
C04802 00786 ∂14-Mar-89 1357 CL-Compiler-mailer issue COMPILER-VERBOSITY, version 6
C04804 00787 ∂14-Mar-89 1419 X3J13-mailer Issue: ERROR-NOT-HANDLED (Version 1)
C04810 00788 ∂14-Mar-89 1438 CL-Compiler-mailer issue COMPILER-DIAGNOSTICS, version 9
C04814 00789 ∂14-Mar-89 1505 CL-Cleanup-mailer Issue: ERROR-NOT-HANDLED (Version 1)
C04816 00790 ∂14-Mar-89 1544 CL-Compiler-mailer **DRAFT** issue SYNTACTIC-ENVIRONMENT-ACCESS (version 4)
C04823 00791 ∂14-Mar-89 1555 X3J13-mailer LETTER BALLOT -- Sun Microsystems
C04833 00792 ∂14-Mar-89 1610 X3J13-mailer Re: Issue: UNSOLICITED-MESSAGES
C04836 00793 ∂14-Mar-89 1629 CL-Compiler-mailer issue CONSTANT-COMPILABLE-TYPES, version 8
C04845 00794 ∂14-Mar-89 1636 CL-Compiler-mailer issue CONSTANT-COMPILABLE-TYPES, version 8
C04855 00795 ∂14-Mar-89 1651 CL-Compiler-mailer issue QUOTE-SEMANTICS, version 2
C04858 00796 ∂14-Mar-89 1700 CL-Compiler-mailer issue MACRO-CACHING, version 2
C04861 00797 ∂14-Mar-89 1704 CL-Compiler-mailer issue LOAD-TIME-EVAL, version 11
C04863 00798 ∂14-Mar-89 1722 CL-Compiler-mailer issue CONSTANT-CIRCULAR-COMPILATION, version 7
C04865 00799 ∂14-Mar-89 1731 X3J13-mailer Issue: GENSYM-NAME-STICKINESS (Version 1)
C04871 00800 ∂14-Mar-89 1730 CL-Compiler-mailer issue COMPILED-FUNCTION-REQUIREMENTS, version 4
C04874 00801 ∂14-Mar-89 1722 CL-Compiler-mailer issue CONSTANT-COLLAPSING, version 5
C04877 00802 ∂14-Mar-89 1731 X3J13-mailer Issue: COERCE-INCOMPLETE (Version 3)
C04889 00803 ∂15-Mar-89 0520 X3J13-mailer Issue: ADJUST-ARRAY-NOT-ADJUSTABLE (Version 8)
C04904 00804 ∂15-Mar-89 0622 X3J13-mailer BASE-CHARACTER
C04908 00805 ∂15-Mar-89 0636 X3J13-mailer Issue IN-PACKAGE-FUNCTIONALITY (Version 8)
C04922 00806 ∂15-Mar-89 0912 @Score.Stanford.EDU:nilsson@Tenaya.Stanford.EDU candidates
C04924 00807 ∂15-Mar-89 0929 @Score.Stanford.EDU:jcm@ra.stanford.edu efficient use of computers
C04926 00808 ∂15-Mar-89 0924 CL-Characters-mailer BASE-CHARACTER
C04928 00809 ∂15-Mar-89 0948 X3J13-mailer Issue: GENSYM-NAME-STICKINESS (Version 1)
C04930 00810 ∂15-Mar-89 0936 CL-Cleanup-mailer Issue: ADJUST-ARRAY-NOT-ADJUSTABLE (Version 8)
C04932 00811 ∂15-Mar-89 1016 X3J13-mailer Issue: EXTRA-RETURN-VALUES (Version 2)
C04939 00812 ∂15-Mar-89 1018 X3J13-mailer BASE-CHARACTER
C04941 00813 ∂15-Mar-89 1026 STAGER@Score.Stanford.EDU Grade Sheets
C04942 00814 ∂15-Mar-89 1044 @Score.Stanford.EDU:nilsson@Tenaya.Stanford.EDU ICOT
C04947 00815 ∂15-Mar-89 1051 @Score.Stanford.EDU:nilsson@Tenaya.Stanford.EDU possible faculty meeting
C04949 00816 ∂15-Mar-89 1054 @Score.Stanford.EDU:chandler@polya.Stanford.EDU Yesterday's Faculty Meeting
C04951 00817 ∂15-Mar-89 1131 GENESERETH@Score.Stanford.EDU Re: efficient use of computers
C04953 00818 ∂15-Mar-89 1222 misha@polya.Stanford.EDU AFLB tomorrow!
C04956 00819 ∂15-Mar-89 1227 X3J13-mailer Re: Issue ERROR TERMINOLOGY, dpANS C
C04958 00820 ∂15-Mar-89 1342 HEMENWAY@Score.Stanford.EDU Peterson's Guide Information
C04960 00821 ∂15-Mar-89 1347 @Score.Stanford.EDU:chandler@polya.Stanford.EDU CSD Retreat
C04962 00822 ∂15-Mar-89 1414 aaai@sumex-aim.stanford.edu Symposium Meeting
C04964 00823 ∂15-Mar-89 1417 aaai@sumex-aim.stanford.edu Opps!
C04965 00824 ∂15-Mar-89 1446 X3J13-mailer Issue ERROR TERMINOLOGY
C04970 00825 ∂15-Mar-89 1451 CL-Compiler-mailer Issue SAFE-CODE, version 1
C04972 00826 ∂15-Mar-89 1506 CL-Editorial-mailer Re: Issue ERROR TERMINOLOGY, dpANS C
C04984 00827 ∂15-Mar-89 1553 X3J13-mailer Re: Issue: EXTRA-RETURN-VALUES
C04987 00828 ∂15-Mar-89 1603 X3J13-mailer Feb. 21 letter ballot
C04992 00829 ∂15-Mar-89 1722 X3J13-mailer Bartley's Comments
C04993 00830 ∂15-Mar-89 1747 @polya.Stanford.EDU:tah@linz MTC Seminar
C04997 00831 ∂15-Mar-89 1756 X3J13-mailer Issue: BREAK-ON-WARNINGS-OBSOLETE (Version 1)
C05000 00832 ∂15-Mar-89 1814 @polya.Stanford.EDU:goldberg@Jinn.stanford.edu Interior study group
C05003 00833 ∂15-Mar-89 1853 X3J13-mailer Re: Issue: EXTRA-RETURN-VALUES
C05006 00834 ∂15-Mar-89 1941 CL-Compiler-mailer issue COMPILE-ENVIRONMENT-CONSISTENCY, version 4
C05010 00835 ∂15-Mar-89 2041 @Score.Stanford.EDU:jlh@vsop.Stanford.EDU Re: efficient use of computers
C05012 00836 ∂15-Mar-89 2152 @Score.Stanford.EDU:wheaton@Athena.Stanford.EDU efficient use of computers
C05014 00837 ∂16-Mar-89 0601 X3J13-mailer Re: issue COMPILER-VERBOSITY, version 6
C05017 00838 ∂16-Mar-89 0632 X3J13-mailer Re: issue COMPILED-FUNCTION-REQUIREMENTS, version 4
C05038 00839 ∂16-Mar-89 0701 @Score.Stanford.EDU:ball@polya.Stanford.EDU efficient use of computers
C05040 00840 ∂16-Mar-89 0713 X3J13-mailer Issue: TIME-ZONE-NON-INTEGER, v.1
C05043 00841 ∂16-Mar-89 0708 CL-Compiler-mailer Re: Issue SAFE-CODE, version 1
C05046 00842 ∂16-Mar-89 0719 X3J13-mailer Re: issue LOAD-TIME-EVAL, version 11
C05049 00843 ∂16-Mar-89 0720 X3J13-mailer Issue: LOAD-TRUENAME (Version 1)
C05058 00844 ∂16-Mar-89 0831 X3J13-mailer Issue DESCRIBE-UNDERSPECIFIED, v.1
C05068 00845 ∂16-Mar-89 0854 X3J13-mailer Issue: CLOS-CONDITIONS (Version 4)
C05083 00846 ∂16-Mar-89 0928 CL-Compiler-mailer Issue SAFE-CODE, version 1
C05086 00847 ∂16-Mar-89 0957 X3J13-mailer Re: Issue ERROR TERMINOLOGY, dpANS C
C05092 00848 ∂16-Mar-89 0958 X3J13-mailer Re: Issue: EXTRA-RETURN-VALUES
C05096 00849 ∂16-Mar-89 1004 @Score.Stanford.EDU:jutta@coyote.stanford.edu faculty candidate visits
C05101 00850 ∂16-Mar-89 0958 CL-Compiler-mailer Re: issue COMPILED-FUNCTION-REQUIREMENTS, version 4
C05104 00851 ∂16-Mar-89 1040 X3J13-mailer Re: Issue ERROR TERMINOLOGY
C05107 00852 ∂16-Mar-89 1044 X3J13-mailer Issue: CLOSED-STREAM-OPERATION (Version 7)
C05115 00853 ∂16-Mar-89 1051 X3J13-mailer Re: Issue ERROR TERMINOLOGY, dpANS C
C05118 00854 ∂16-Mar-89 0958 X3J13-mailer Issue: TIME-ZONE-NON-INTEGER, v.1
C05120 00855 ∂16-Mar-89 1044 X3J13-mailer Issue: COERCE-INCOMPLETE (Version 3)
C05132 00856 ∂16-Mar-89 1045 X3J13-mailer DRAFT Issue: CONDITION-RESTARTS (Version 1)
C05152 00857 ∂16-Mar-89 1117 CL-Compiler-mailer issue COMPILE-ENVIRONMENT-CONSISTENCY, version 4
C05155 00858 ∂16-Mar-89 1146 X3J13-mailer Issue ERROR TERMINOLOGY, dpANS C
C05158 00859 ∂16-Mar-89 1205 X3J13-mailer Issue: TIME-ZONE-NON-INTEGER, v.1
C05161 00860 ∂16-Mar-89 1212 X3J13-mailer Issue: COPY-SYMBOL-COPY-PLIST, v.1
C05165 00861 ∂16-Mar-89 1221 X3J13-mailer Issue DESCRIBE-UNDERSPECIFIED, v.1
C05168 00862 ∂16-Mar-89 1241 X3J13-mailer Issue DYNAMIC-EXTENT: a remark
C05172 00863 ∂16-Mar-89 1212 X3J13-mailer Issue: COPY-SYMBOL-PRINT-NAME, v.2
C05176 00864 ∂16-Mar-89 1212 X3J13-mailer *DRAFT* Issue: DESTRUCTURING-BIND, v.2
C05190 00865 ∂16-Mar-89 1213 X3J13-mailer
C05215 00866 ∂16-Mar-89 1354 X3J13-mailer Issue: DYNAMIC-EXTENT
C05220 00867 ∂16-Mar-89 1356 CL-Compiler-mailer Issue SAFE-CODE, version 1
C05222 00868 ∂16-Mar-89 1418 X3J13-mailer Issue DYNAMIC-EXTENT: a remark
C05226 00869 ∂16-Mar-89 1424 X3J13-mailer Issue: TIME-ZONE-NON-INTEGER, v.1
C05229 00870 ∂16-Mar-89 1436 X3J13-mailer Fatal vesus Harmless
C05237 00871 ∂16-Mar-89 1443 CL-Compiler-mailer Re: issue COMPILED-FUNCTION-REQUIREMENTS, version 4
C05240 00872 ∂16-Mar-89 1551 X3J13-mailer Issue: COERCE-INCOMPLETE (Version 3)
C05242 00873 ∂16-Mar-89 1603 X3J13-mailer *DRAFT* Issue: DESTRUCTURING-BIND, v.2
C05244 00874 ∂16-Mar-89 1726 X3J13-mailer Issue: MAKE-STRING-FILL-POINTER (Version 1)
C05248 00875 ∂16-Mar-89 1745 X3J13-mailer Issue: EXTRA-RETURN-VALUES
C05251 00876 ∂16-Mar-89 1746 X3J13-mailer Issue: COERCE-INCOMPLETE (Version 3)
C05254 00877 ∂16-Mar-89 1801 X3J13-mailer SYMBOL-MACROLET-SEMANTICS, version 6
C05266 00878 ∂16-Mar-89 2103 X3J13-mailer Issue: EXIT-EXTENT, v.6
C05290 00879 ∂16-Mar-89 2220 X3J13-mailer Issue: FUNCTION-COERCE-TIME (Version 2)
C05307 00880 ∂16-Mar-89 2244 X3J13-mailer Issue: SETF-FUNCTION-VS-MACRO, SETF-PLACES, FUNCTION-NAME, v.1
C05346 00881 ∂16-Mar-89 2254 X3J13-mailer Issue: HASH-TABLE-ACCESS (version 2)
C05356 00882 ∂16-Mar-89 2330 X3J13-mailer Issue: LOAD-OBJECTS (Version 3)
C05378 00883 ∂16-Mar-89 2334 X3J13-mailer Issue LOOP-AND-DISCREPANCY, version 1
C05384 00884 ∂17-Mar-89 0009 X3J13-mailer Issue: REAL-NUMBER-TYPE (version 3)
C05396 00885 ∂17-Mar-89 0817 X3J13-mailer Issue: COERCE-INCOMPLETE (Version 3)
C05400 00886 ∂17-Mar-89 0822 chandler@polya.Stanford.EDU test
C05401 00887 ∂17-Mar-89 0834 X3J13-mailer Issue: LOCALLY-TOP-LEVEL (Version 2)
C05409 00888 ∂17-Mar-89 0854 X3J13-mailer Re: Issue: COERCE-INCOMPLETE (Version 3)
C05411 00889 ∂17-Mar-89 0857 X3J13-mailer Re: Issue: COERCE-INCOMPLETE (Version 3)
C05413 00890 ∂17-Mar-89 0906 @Score.Stanford.EDU:golub@na-net.stanford.edu A High-Tech Research Agenda
C05415 00891 ∂17-Mar-89 0946 @Score.Stanford.EDU:csl@sierra.STANFORD.EDU CSD Faculty Candidate Seminar, March 21, 1989 at 10 a.m.
C05419 00892 ∂17-Mar-89 1041 X3J13-mailer Issue: PACKAGE-FUNCTION-CONSISTENCY, V.3
C05427 00893 ∂17-Mar-89 1223 X3J13-mailer issue SAFE-CODE, version 1
C05429 00894 ∂17-Mar-89 1223 X3J13-mailer **DRAFT** issue SYNTACTIC-ENVIRONMENT-ACCESS (version 4)
C05432 00895 ∂17-Mar-89 1223 X3J13-mailer Issue ERROR TERMINOLOGY
C05438 00896 ∂17-Mar-89 1214 CL-Cleanup-mailer Issue: ADJUST-ARRAY-NOT-ADJUSTABLE (Version 8)
C05443 00897 ∂17-Mar-89 1246 X3J13-mailer Issue: PACKAGE-FUNCTION-CONSISTENCY, V.3
C05445 00898 ∂17-Mar-89 1257 X3J13-mailer Issue: ADJUST-ARRAY-NOT-ADJUSTABLE (Version 8)
C05448 00899 ∂17-Mar-89 1251 CL-Compiler-mailer **DRAFT** issue SYNTACTIC-ENVIRONMENT-ACCESS (version 4)
C05451 00900 ∂17-Mar-89 1254 CL-Cleanup-mailer Issue: ADJUST-ARRAY-NOT-ADJUSTABLE (Version 8)
C05454 00901 ∂17-Mar-89 1316 X3J13-mailer Issue DYNAMIC-EXTENT: a remark
C05458 00902 ∂17-Mar-89 1356 CL-Compiler-mailer **DRAFT** issue SYNTACTIC-ENVIRONMENT-ACCESS (version 4)
C05461 00903 ∂17-Mar-89 1507 @Score.Stanford.EDU:jutta@coyote.stanford.edu Seminar by Robotics Faculty Candidate
C05465 00904 ∂17-Mar-89 1426 X3J13-mailer CLTL II
C05470 00905 ∂17-Mar-89 1541 CL-Cleanup-mailer Issue: ADJUST-ARRAY-NOT-ADJUSTABLE (Version 8)
C05474 00906 ∂17-Mar-89 1555 X3J13-mailer Re: Issue: COERCE-INCOMPLETE (Version 3)
C05477 00907 ∂17-Mar-89 1600 X3J13-mailer Issue: ADJUST-ARRAY-NOT-ADJUSTABLE (Version 8)
C05479 00908 ∂17-Mar-89 1612 X3J13-mailer Re: Issue: COERCE-INCOMPLETE (Version 3)
C05481 00909 ∂17-Mar-89 1613 X3J13-mailer Issue: ADJUST-ARRAY-NOT-ADJUSTABLE (Version 8)
C05484 00910 ∂17-Mar-89 1623 X3J13-mailer Issue: PACKAGE-FUNCTION-CONSISTENCY, V.3
C05487 00911 ∂17-Mar-89 1656 X3J13-mailer Issue: ADJUST-ARRAY-NOT-ADJUSTABLE (Version 8)
C05493 00912 ∂17-Mar-89 1758 X3J13-mailer too much mail!
C05496 00913 ∂17-Mar-89 2051 X3J13-mailer March meeting issues and sections
C05505 00914 ∂17-Mar-89 2110 X3J13-mailer Issue: EXTRA-RETURN-VALUES (version 3)
C05507 00915 ∂17-Mar-89 2304 X3J13-mailer Issue: PACKAGE-FUNCTION-CONSISTENCY (version 4)
C05514 00916 ∂18-Mar-89 0137 X3J13-mailer The Cleanup Issue Status List
C05547 00917 ∂19-Mar-89 2015 @Score.Stanford.EDU:jle@Orange.stanford.edu CS Colloquium Reminder
C05551 00918 ∂19-Mar-89 2358 @Score.Stanford.EDU:jcm@ra.stanford.edu Info on Concept 100?
C05553 00919 ∂19-Mar-89 2358 @Score.Stanford.EDU:jcm@ra.stanford.edu Info on Concept 100?
C05555 00920 ∂20-Mar-89 0002 X3J13-mailer X3J13 mailer
C05558 00921 ∂20-Mar-89 0942 @Score.Stanford.EDU:janelin@krakatoa.stanford.edu Seminar by Robotics Faculty Candidate
C05562 00922 ∂20-Mar-89 0959 @Score.Stanford.EDU:chandler@polya.Stanford.EDU Good News
C05563 00923 ∂20-Mar-89 1008 @Score.Stanford.EDU:chandler@polya.Stanford.EDU Last Faculty Lunch - Winter Quarter
C05565 00924 ∂20-Mar-89 1229 X3J13-mailer Re: Fatal vesus Harmless
C05570 00925 ∂20-Mar-89 1246 @Score.Stanford.EDU:jle@Orange.stanford.edu Mailer Error
C05572 00926 ∂20-Mar-89 1315 CL-Compiler-mailer issue COMPILER-VERBOSITY, version 6
C05574 00927 ∂21-Mar-89 0847 debra@russell.Stanford.EDU REMINDER-EVENING SEMINAR
C05576 00928 ∂21-Mar-89 1106 debra@russell.Stanford.EDU C O R R E C T I O N - REMINDER-EVENING SEMINAR
C05578 00929 ∂21-Mar-89 1453 X3J13-mailer Issue: PATHNAME-COMPONENT-VALUE (version 1)
C05593 00930 ∂21-Mar-89 1455 X3J13-mailer Issue: COMMON-TYPE (version 1)
C05597 00931 ∂21-Mar-89 1458 X3J13-mailer Issue: COMPLEX-RATIONAL-RESULT (version 1)
C05602 00932 ∂21-Mar-89 1500 X3J13-mailer Issue: HASH-TABLE-SIZE (version 1)
C05607 00933 ∂21-Mar-89 1629 X3J13-mailer Issue: ADJUST-ARRAY-NOT-ADJUSTABLE (Version 9)
C05622 00934 ∂21-Mar-89 1732 CL-Compiler-mailer **DRAFT** issue CLOS-MACRO-COMPILATION, version 2
C05626 00935 con-Mar-89 2048 X3J13-mailer Issue: ADJUST-ARRAY-NOT-ADJUSTABLE (Version 9)
C05669 ENDMK
C⊗;
∂12-Dec-88 1528 X3J13-mailer Issue: TAILP-NIL (Version 5)
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 12 Dec 88 15:27:54 PST
Received: from Semillon.ms by ArpaGateway.ms ; 12 DEC 88 15:18:20 PST
Date: 12 Dec 88 15:17 PST
Sender: masinter.pa@Xerox.COM
To: x3j13@sail.stanford.edu
Subject: Issue: TAILP-NIL (Version 5)
From: cl-cleanup@sail.stanford.edu
reply-to: cl-cleanup@sail.stanford.edu
cc: masinter.pa@Xerox.COM
line-fold: no
Message-ID: <881212-151820-5387@Xerox>
!
Issue: TAILP-NIL
References: TAILP (p275)
Category: CLARIFICATION/CHANGE
Edit History: 13-Sep-88, version 1 by Walter van Roggen,
13-Sep-88, version 2 by Pitman
18-Oct-88, version 3 by van Roggen (just one proposal)
01-Dec-88, version 4 by Pitman (minor edits per discussion)
9-Dec-88, Version 5 by Masinter (clarify EQL)
Problem Description:
CLtL (p275) specifies TAILP as:
TAILP sublist list [Function]
This predicate is true if SUBLIST is a sublist of LIST (i.e.,
one of the conses that makes up LIST); otherwise, it is false.
Another way to look at this is that TAILP is true if
(NTHCDR n list) is SUBLIST, for some value of N. See LDIFF.
Two implementations of this definition might be:
(defun tailp (sublist list) ;Definition "A"
(do ((list list (cdr list)))
((endp list) nil)
(if (eql sublist list)
(return t))))
(defun tailp (sublist list) ;Definition "B"
(do ((list list (cdr list)))
((atom list) (eql list sublist))
(if (eql sublist list)
(return t))))
They differ only in their treatment of the atomic case.
At issue is the fact that () is a list, and hence some would
argue that it is a sublist of all other lists. On the other hand,
the definition of TAILP seems to imply that being a cons is a
necessary precondition of being a "sublist".
Also at issue is the question of whether dotted lists are permissible
second arguments.
Proposal (TAILP-NIL:T):
Strike any text in the definition of TAILP which suggests that a
sublist must be a cons.
Clarify that (TAILP sublist list) returns true iff (NTHCDR n list) is
sublist for some value of n, and false otherwise.
Note, however, that since the list may be dotted, so the end test
used by TAILP must be ATOM, not ENDP. That is, if (TAILP x l)
returns true, it means there was n such that (NTHCDR n list) would
return x; however, it doesn't follow that if TAILP returns false,
it is safe to go blithely NTHCDR's into the list looking for it,
since the list might be dotted and NTHCDR might hit bad data.
Note that TAILP uses EQL or equivalent to compare
sublist to list in the case where sublist is a number, etc.
Rationale:
This is more consistent with the definition of LDIFF, which
gives a useful meaning to arbitrary atomic SUBLIST arguments.
This gives a more elegant definition of SUBLIST, allowing it to
refer to any list -- including the empty list -- which is a
part of another list.
Some reasons for preferring an ATOM check to ENDP include:
- The name TAILP suggests tails, not sublists. Some users might
expect this distinction to mean that data more general than
proper sublists.
- Making TAILP require lists limits its usefulness. If we did
not make this choice, some users would end up having to write
their own extended TAILP which we could just as well have
provided compatibly.
- TAILP is not considered to be used frequently enough in code
that the minor loss in speed to an ATOM check is worth the
lost functionality. Indeed, expanding the scope of its
capabilities may lead to more uses for TAILP.
- Other operators (eg, APPEND) have recently been extended to
treat dotted lists in an interesting way because users have
expressed a desire for this. As such, this change is
culturally consistent.
- Some implementations already support this feature, and the
wording in CLtL is sufficiently ambiguous that some users
might think it appropriate to depend on the feature. In the
absence of compelling efficiency reasons to the contrary,
we should lean toward extending some implementations rather
than tightening others in our efforts to achieve cross-dialect
consistency.
Examples:
#1: (LET ((X '(B C))) (TAILP X (CONS 'A X)))
should return T in all implementations.
#2: (TAILP '(X Y) '(A B C))
should return NIL in all implementations.
#3: (TAILP '() '(A B C))
returns T under this proposal.
#4: (TAILP 3 '(A B C))
returns NIL under this proposal.
#5: (TAILP 3 '(A B C . 3))
returns T under this proposal.
#6: (TAILP '(X Y) '(A B C . 3))
returns NIL under this proposal.
Current Practice:
Symbolics Genera is consistent with TAILP-NIL:T.
Neither Lucid nor VAX LISP currently implements TAILP-NIL:T.
VAX LISP effectively implements definition "A" from the
Problem Description above.
Cost to Implementors:
An implementation of TAILP-NIL:T is given as Definition "B" in the
problem description.
Some implementations might have compiler optimizers for these definitions
as well, so a slight amount of additional effort might be required.
Cost to Users:
Given that current practice varies widely on the disputed case,
this is unlikely to have a practical effect on existing portable code.
Benefits:
Avoids unnecessary incompatibilities between implementations.
Non-Benefits:
Slows down TAILP slightly in some implementations because ENDP is
potentially faster than ATOM.
Discussion:
This issue was first raised in ">GLS>clarifications.text" of 12/06/85.
It recommended an earlier proposal, TAILP-NIL:NIL, which is effectively
equivalent to Definition "A" from the Problem Description.
Pitman introduced TAILP-NIL:T as an alternative, arguing that the
definition TAILP-NIL:NIL offered no practical value to programmers
in the disputed situations, while TAILP-NIL:T was of arguable usefulness.
Pitman and van Roggen support TAILP-NIL:T.
It was suggested more than once by more than one cleanup
committee member that we remove TAILP from the language
"since almost nobody uses it".
∂12-Dec-88 1601 X3J13-mailer Re: Issue: TEST-NOT-IF-NOT (Version 3)
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 12 Dec 88 16:01:36 PST
Received: from Cabernet.ms by ArpaGateway.ms ; 12 DEC 88 15:55:20 PST
Date: 12 Dec 88 15:53 PST
From: masinter.pa@Xerox.COM
Subject: Re: Issue: TEST-NOT-IF-NOT (Version 3)
In-reply-to: my message of 9 Dec 88 15:26 PST <881209-153026-1243@Xerox>
To: X3J13@sail.stanford.edu
Message-ID: <881212-155520-5496@Xerox>
The writeup in this issue was mislabelled Version 2. In fact, it was
Version 3, 1 Dec 88, Masinter (add comments).
The ballot will reflect this.
∂12-Dec-88 1609 X3J13-mailer Issue: TYPE-OF-UNDERCONSTRAINED (Version 3)
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 12 Dec 88 16:09:45 PST
Received: from Cabernet.ms by ArpaGateway.ms ; 12 DEC 88 16:01:09 PST
Date: 12 Dec 88 16:00 PST
Sender: masinter.pa@Xerox.COM
To: x3j13@sail.stanford.edu
Subject: Issue: TYPE-OF-UNDERCONSTRAINED (Version 3)
From: cl-cleanup@sail.stanford.edu
reply-to: cl-cleanup@sail.stanford.edu
cc: masinter.pa@Xerox.COM
line-fold: no
Message-ID: <881212-160109-5511@Xerox>
As JonL pointed out, Version 2 was missing a "not" in
a key sentence in the proposal.
!
Forum: Cleanup
Issue: TYPE-OF-UNDERCONSTRAINED
References: TYPE-OF (CLtL)
88-002R (Class-of)
88-005, p 43f, Condition system types
Related issues: SUBTYPEP-TOO-VAGUE
DATA-TYPE-HIERARCHY-UNDERSPECIFIED
FUNCTION-TYPE
ARRAY-TYPE-ELEMENT-TYPE-SEMANTICS
COERCE-INCOMPLETE
Category: CLARIFICATION/CHANGE
Edit history: Version 1, 1-Dec-88, Masinter
Version 2, 9-Dec-88, Masinter
Version 3, 12-Dec-88, Masinter (fix "egregious bug")
Problem description:
The specification of TYPE-OF in CLtL is so weak as to leave it
nearly useless, if any implementor actually took the specification
seriously.In particular, there are almost no constraints on the
value that TYPE-OF might return for any of the built in
types. The only constraint placed is that for objects created by the
constructor function of DEFSTRUCT, the result of TYPE-OF is the name of the
defstruct.
This means that implementations could return T for all other objects.
Proposal (TYPE-OF-UNDERCONSTRAINED:ADD-CONSTRAINTS):
Specify that the result of TYPE-OF satisfies the following:
(a) For any object for which (typep object built-in-type) is true when
built-in-type is one of
INTEGER, RATIO, FLOAT, SINGLE-FLOAT, DOUBLE-FLOAT, COMPLEX, NUMBER
SYMBOL,
STRING, VECTOR, ARRAY,
CONS,
STREAM, PACKAGE, CHARACTER, FUNCTION, READTABLE, HASH-TABLE, PATHNAME,
CONDITION, RESTART,
the result of TYPE-OF will be a type specifier for which
(subtypep (type-of object) built-in-type) returns T T, i.e., either the
build-in-type or a subtype of it (a subtype that the
implementation's SUBTYPEP can recognize.)
(b) For all objects, (TYPEP object (TYPE-OF object)) will be true.
(this implies that it will not be NIL, since no
object is of type NIL.)
(c) will not be a MEMBER type specifier, or T.
For objects created by the "constructor" function of a structure
defined with DEFSTRUCT without a :TYPE option, TYPE-OF
will return the structure name.
For objects created by MAKE-INSTANCE, giving a named
class, TYPE-OF will return the class name of the class.
For objects which are instances of anonymous classes (i.e., where
(CLASS-NAME (CLASS-OF object)) is NIL), the result of TYPE-OF should be the
class object itself.
(The CLOS specification has already specified that class objects are
acceptable wherever type specifiers are, and in particular, as input to
SUBTYPEP and TYPEP.)
This proposal is intended to be consistent with 88-002R,
and not to conflict with any of the definitions in that document.
Examples:
It is legal for (TYPE-OF "abc") to return (SIMPLE-STRING 3), or just
STRING. It is legal for (TYPE-OF 112312) to return SI:MEDIUM-SIZE-FIXNUM,
as long as (SUBTYPEP 'SI:MEDIUM-SIZE-FIXNUM 'INTEGER).
Given:
(defvar *foo* (make-array 5 :element-type t))
(class-name (class-of *foo*)) => SIMPLE-VECTOR
It is legal for
(type-of *foo*) => (SIMPLE-VECTOR 5)
Rationale:
The original specification for "TYPE-OF" was written to allow
implementation freedom, but the wording is in fact more vague than was
intended.
Current practice:
Most Common Lisp implementations seem to implement the proposal, at least
for the types we've tried them on.
Cost to Implementors:
Even if there are implementations that do not currently implement the
proposal, the required changes for them are likely to be minimal.
Cost to Users:
Apparently none.
Cost of non-adoption:
TYPE-OF would remain potentially inconsistent.
Performance impact:
Likely none.
Benefits:
Bring the specification of TYPE-OF in like with its common
implementation, while requiring it to be generally useful.
Esthetics:
Little effect.
Discussion:
Originally, TYPE-OF was concieved as being useful for information display.
CLOS specified CLASS-OF far more precisely, in that it must return exactly
the class of an object. Unless TYPE-OF is removed from the language, it
seems reasonable to require it to be at least as precise as CLASS-OF.
The accepted CLOS specification does not define CLASS-OF
in terms of TYPE-OF, but an earlier draft did.
This proposal presumes the (passed) proposals
DATA-TYPES-HIERARCHY-UNDERSPECIFIED:DISJOINT, FUNCTION-TYPE, and
accomodates the Condition System (version 18) and CLOS.
If ARRAY-TYPE-ELEMENT-TYPE-SEMANTICS does not pass,
and this proposal does pass, it may be that the only way an
implementation can satisfy (TYPEP array (TYPE-OF array))
would be to have (TYPE-OF array) return VECTOR or ARRAY
as appropriate, i.e., with no element type qualification.
It is possible to constrain TYPE-OF further, e.g., to eliminate
the possibility that it might return a non-portable
implementation-specific value. For example,
(TYPE-OF 112312) should not return SI:MEDIUM-SIZE-FIXNUM, but rather some
thing like (SIGNED-BYTE 17) [if that's what SI:MEDIUM-SIZE-FIXNUM means.]
We would like to make this as an implementation recommendation,
however, rather than as a constraint, at this point.
----- End Forwarded Messages -----
∂12-Dec-88 1622 X3J13-mailer Issue: REST-LIST-ALLOCATION (Version 3)
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 12 Dec 88 16:22:35 PST
Received: from Semillon.ms by ArpaGateway.ms ; 12 DEC 88 16:11:10 PST
Date: 12 Dec 88 16:08 PST
Sender: masinter.pa@Xerox.COM
To: x3j13@sail.stanford.edu
Subject: Issue: REST-LIST-ALLOCATION (Version 3)
From: cl-cleanup@sail.stanford.edu
reply-to: cl-cleanup@sail.stanford.edu
cc: masinter.pa@Xerox.COM
line-fold: no
Message-ID: <881212-161110-5531@Xerox>
Thanks to Will Clinger for getting a last minute revision in.
!
Forum: Cleanup
Issue: REST-LIST-ALLOCATION
References: CLtL pp 107-108 (APPLY)
Related issues: DYNAMIC-EXTENT
Category: CLARIFICATION
Edit history: 8-Dec-88, Version 1 by Masinter
9-Dec-88, Version 2 by Clinger (add rationale, more discussion)
12-Dec-88, Version 3 by Clinger (delete bogus examples)
Problem description:
In the special case of calling a function with an &REST list via APPLY,
Common Lisp fails to specify whether a new copy of the list is freshly
allocated. For example, given
(DEFVAR *MY-LIST* '(A B C))
(DEFUN FOO (&REST X) (EQ X *MY-LIST*))
does
(APPLY #'FOO *MY-LIST*)
return T?
This issue is different from the question of the extent of "rest lists" in
the case when they *are* newly allocated which is indefinite; the issue
DYNAMIC-EXTENT also contains some proposals about extent.
Proposal (REST-LIST-ALLOCATION:NEWLY-ALLOCATED):
Specify that &REST lists are newly allocated in the case when the function
is called via APPLY.
Proposal (REST-LIST-ALLOCATION:MAY-SHARE):
Specify that the value of an &REST parameter is permitted, but not required,
to share (top-level) structure with the last argument to APPLY.
Proposal (REST-LIST-ALLOCATION:MUST-SHARE)
Specify that the value of an &REST parameter is required
to share (top-level) structure with the last argument to APPLY.
>> this needs better spec about how the args match <<
Examples:
(DEFVAR *MY-LIST* '(A B C))
(DEFUN FOO (&REST X) (EQ X *MY-LIST*))
(APPLY #'FOO *MY-LIST*) => T ;on Symbolics systems and probably
; many stock hardware implementations
This implies that
(DEFUN BAR (&REST X) (RPLACA X 'D))
(APPLY #'BAR *MY-LIST*)
*MY-LIST* => (D B C) ;on Symbolics systems and probably many stock
; hardware implementations
Another example: which of the following have the same semantics?
(setq x '(1 2 3))
[1] (apply #'foo 1 2 3 NIL)
[2] (apply #'foo 1 2 (cddr x))
[3] (apply #'foo 1 (cdr x))
[4] (apply #'foo x)
[5] (funcall #'foo 1 2 3)
Under REST-LIST-ALLOCATION:NEWLY-ALLOCATED:
[1]-[5] are equivalent.
Under REST-LIST-ALLOCATION:MAY-SHARE:
Any answer to the question is correct for some conceivable implementation.
Abstracting over implementations, this means that [1]-[5] are pairwise
non-equivalent.
Under REST-LIST-ALLOCATION:MUST-SHARE:
[1]-[4] are pairwise non-equivalent in all implementations. This proposal
leaves open the question of whether [1] is equivalent to [5].
And finally:
Should (defun foo (&rest x) ...)
behave (aside from efficiency) as if it were defined:
(defun foo (&rest G0047) ;Gensym really
(let ((x (copy-list G0047)))
...))
Rationale:
The semantics of APPLY is unclear. In consequence it is impossible
to write portable code that relies on &REST arguments sharing structure
with the last argument to APPLY. Portable code can rely on &REST arguments
*not* sharing structure with the last argument to APPLY, but only by
performing an explicit COPY-LIST on all &REST arguments; this is redundant
and inefficient in implementations where &REST arguments are newly
allocated anyway.
Current practice:
Some implementations always share. Some implementations never share.
A few may share interpreted and not share compiled, or vice versa.
Cost to Implementors:
None for MAY-SHARE, since that is the status quo. Both of the other
proposals entail a significant cost for some implementations.
If MUST-SHARE is adopted, then implementations that don't share structure
may be nearly impossible to convert. If NEWLY-ALLOCATED is adopted, then
implementations that do share will have to insert a call to COPY-LIST
inside either APPLY or &REST list handling, which will slow things down
and may be difficult as well.
Cost to Users:
No matter what, somebody gets hurt. MAY-SHARE means you have to
write awkward and inefficient code if you care. (This is already
the case for portable code.) MUST-SHARE means you have to add
explicit calls to COPY-LIST to code that assumes the contrary.
NEWLY-ALLOCATED means you have to rewrite code that assumes sharing.
Cost of non-adoption:
Great confusion over the issue. A certain amount of awkwardness and
inefficiency would remain inevitable if you want to write portable code.
Performance impact:
MUST-SHARE costs least in consing, but might slow down function call
for some implementations. MAY-SHARE lets implementations pick, has
least impact. NEWLY-ALLOCATED requires consing in cases where it
didn't before.
Benefits:
Less confusion. Improved portability.
Esthetics:
Differing, strongly held opinions.
Discussion:
The Revised3 Report on Scheme specifies that the equivalent of a
&REST argument must be a newly allocated list, to avoid precisely this
problem.
The argument for MUST-SHARE is that copying is inefficient, so
&REST should never cause copying of a list passed to it from APPLY.
Functions that desire a new copy can just call COPY-LIST.
Two arguments for MAY-SHARE are:
1. In no other place does Common Lisp automatically unshare structure,
except when the user is explicitly modifying the structure (as in REMOVE).
Making APPLY automatically unshare would be a semantic wart.
2. If APPLY copies its last argument, recursive programs that receive an
&REST argument and pass it to APPLY become inefficient. A linear time
algorithm can change to a quadratic time algorithm. While the efficiency
could be regained through compiler flow analysis in many cases, it's
better not to put the inefficiency into the language in the first place.
The DYNAMIC-EXTENT proposal would allow &REST lists
that were "newly allocated" to have dynamic extent if they were
to be passed down via APPLY. This puts the burden in the
right place.
Two (closely related) arguments for NEWLY-ALLOCATED:
1. The programmer's model of function calling is simpler: functions
take arguments, and any two calls that pass the same arguments to the
same function are equivalent. The MAY-SHARE and MUST-SHARE proposals
require a model in which functions generally take their arguments in
the form of a list, and the extent to which that list shares structure
with other lists in the system becomes an important part of the
semantics of a function call.
2. It's not only smashing a &rest argument that's a problem, it's
smashing any list that has been given as the last argument to APPLY as
well. Consider the following in an implementation that doesn't copy
the last argument to APPLY when it is passed as a &rest argument:
> (defvar *message*)
*MESSAGE*
> (defun set-message (&rest mess)
(setq *message* mess))
SET-MESSAGE
> (let ((winner (list 'a 'winner)))
(apply #'set-message winner)
(setf (cdr winner) (list 'loser))
winner)
(A LOSER)
Is *message* (A WINNER) or (A LOSER)? (It might be
(#<DTP-LOCATIVE 76123756> #<DTP-ODD-PC 12313453> ...)
but that's a different problem.) This suggests that once a list has
been given as the last argument to APPLY it is no longer OK to modify
it.
Gail Zacharias talked about the common idiom of simply doing a COPY-LIST
on every &rest argument, to insure some normalcy. Her reasoning seems
to bolster the case for those who claim that the current CL semantics
(MAY-SHARE) are deficient:
Subject: &REST Lists
Date: 24 Mar 88 12:23:15 EST (Thu)
From: gz@spt.entity.com (Gail Zacharias)
. . .
If Common Lisp doesn't require unshared &rest lists, then I think
it must provide a declarative version of this idiom so the COPY-LIST can
be portably avoided when it's redundant. Seems to me that the fact that
this is a common case where users find a need for conditionalization
indicates a real deficiency in Common Lisp's specification.
. . .
So we have a responsibility to resolve the very thorny issue
of REST-LIST-ALLOCATION.
∂12-Dec-88 1623 X3J13-mailer Issue: UNREAD-CHAR-AFTER-PEEK-CHAR (Version 2)
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 12 Dec 88 16:22:49 PST
Received: from Semillon.ms by ArpaGateway.ms ; 12 DEC 88 16:17:33 PST
Date: 12 Dec 88 16:17 PST
Sender: masinter.pa@Xerox.COM
To: x3j13@sail.stanford.edu
Subject: Issue: UNREAD-CHAR-AFTER-PEEK-CHAR (Version 2)
From: cl-cleanup@sail.stanford.edu
reply-to: cl-cleanup@sail.stanford.edu
cc: masinter.pa@Xerox.COM
line-fold: no
Message-ID: <881212-161733-5559@Xerox>
!
Issue: UNREAD-CHAR-AFTER-PEEK-CHAR
References: pp 379, 380 of CLtL
Category: CLARIFICATION
Edit history: Version 1 by Doug Cutting <Cutting.PA@Xerox.COM> on July 29, 1988
Version 2 by Masinter 2-Dec-88
Problem description:
PEEK-CHAR and UNREAD-CHAR are very similar mechanisms. The description of
PEEK-CHAR in CLtL even states that "it is as if one had called READ-CHAR and
then UNREAD-CHAR in succession." But while CLtL prohibits calling UNREAD-CHAR
twice in succession it does not prohibit calling UNREAD-CHAR after PEEK-CHAR.
The obvious implementation of PEEK-CHAR and UNREAD-CHAR (a one-character buffer)
will not work unless this prohibition is present.
Proposal (UNREAD-CHAR-AFTER-PEEK-CHAR:DONT-ALLOW):
Rewrite the specification so that it is clear that doing either a
PEEK-CHAR or READ-CHAR `commits' all previous characters. UNREAD-CHAR
on any character preceding that which is seen by the PEEK-CHAR (including
those passed over by PEEK-CHAR when `seeking' with a non-NIL first
argument) is not specified.
In particular, the results of calling UNREAD-CHAR after PEEK-CHAR
is unspecified.
Example:
(defun test (&optional (stream *standard-input*))
(let* ((char1a (read-char stream))
(char2a (peek-char nil stream))
(char1b (progn (unread-char char1a stream)
(read-char stream)))
(char2b (read-char stream)))
(list char1a char2a char1b char2b)))
This is not legal, since the PEEK-CHAR for char2a "commits"
the character read by char1a, and so the unread-char is not legal.
Rationale:
PEEK-CHAR and UNREAD-CHAR provide equivalent functionality and it is thus
reasonable for an implementation to implement them in terms of the same
mechanism.
Current practice:
In Xerox Common Lisp, different (non-random-access) stream types behave
differently. One, (TCP/FTP) handled this correctly, while another did not.
In Symbolics Genera, for the Example above:
(test)ab
=> (#\a #\b #\a #\b)
(with-input-from-string (s "abc") (test s))
=> (#\a #\b #\a #\b)
(progn (with-open-file (s "foo.output" :direction :output)
(write-string "abc" s))
(with-open-file (s "foo.output" :direction :input)
(test s)))
Signals an error about unreading #\a when #\b was already unread.
Cost to Implementors:
Presumably none. Implementations which allow this are still correct.
Cost to Users:
Small. I suspect there is very little code which depends upon this working
correctly, as most code uses either PEEK-CHAR or UNREAD-CHAR, but not both.
Cost of non-adoption:
Implementations of sequential streams are forced to be unnecessarily complex in
order to be correct.
Benefits:
Allows simple yet adequately powerful implementation of sequential streams.
Esthetics:
Requires that users have shared, one-char buffer model of how UNREAD-CHAR and
PEEK-CHAR work, rather than two separate one-char buffers.
Discussion:
<none>
∂12-Dec-88 1643 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Call for Papers Workshop on Automatic Verification Methods for
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 12 Dec 88 16:43:10 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA03528; Mon, 12 Dec 88 16:42:22 PDT
Message-Id: <8812130042.AA03528@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Mon, 12 Dec 88 16:42:38 PST
Received: by BYUADMIN (Mailer R2.01) id 2493; Mon, 12 Dec 88 17:24:47 MST
Date: Mon, 12 Dec 88 13:01:54 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Edmund.Clarke%G.GP.CS.CMU.EDU@Forsythe.Stanford.EDU
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Edmund.Clarke%G.GP.CS.CMU.EDU@Forsythe.Stanford.EDU
Subject: Call for Papers Workshop on Automatic Verification Methods for
Finite S
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
Call for Papers
Workshop on Automatic Verification Methods for Finite State Systems
Grenoble, France
June 12-14 , 1989
Sponsored by C-cube, the French National Project on Parallelism
This workshop is dedicated to bringing together researchers and practitioners
interested in the development and use of methods tools and theories for
automatic verification of finite state systems. The goal of the workshop is
to compare the various verification methods for finite state systems, and
tools supporting them as assistants of the application designer. Emphasis will
be not only on new research results but also on the applications of existing
results to real verification problems. Special sessions for demonstration
of verification tools will be planned.
Travel support for some participants will be provided. A balanced participation
of researchers and practitioners is expected.
Papers are sollicited on the following topics :
Verification and validation tools for protocols,
Real-time systems,
hardware verification,
Verification methods based on theorem proving, model checking, and
automata based methods,
Verification theories and their applicability.
This list is not exhaustive, and papers in related areas that fit with the
intensions of the workshop will also be considered.
An author may submit a paper by mailing 4 copies of a preliminary version to
either of the program committee members:
E. M. Clarke A. Pnueli J. Sifakis
CMU Weizmann Inst. LGI-IMAG
Computer Sci. Dpt. Rehovot BP 53X
Pittsburgh, PA 15213 Israel 38041 Grenoble cedex
USA France
The preliminary version is limited to a length of 12 double spaced
typed pages. It should provide sufficient detail so that the program
committee can assess the merits of the contribution. The deadline for
the submission of the preliminary version is February 1, 1989. Authors
will be notified of acceptance by March 15, 1989. The final versions
of accepted and invited papers will be published after the workshop.
Researchers who want to attend the workshop, but not present a paper
should notify a member of the program committee as soon as possible.
∂12-Dec-88 1648 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Crypto '89 -- Call for Papers
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 12 Dec 88 16:48:11 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA03811; Mon, 12 Dec 88 16:47:22 PDT
Message-Id: <8812130047.AA03811@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Mon, 12 Dec 88 16:47:54 PST
Received: by BYUADMIN (Mailer R2.01) id 2688; Mon, 12 Dec 88 17:26:02 MST
Date: Mon, 12 Dec 88 13:05:51 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
"Kevin S. McCurley" <MCCURLEY%ALMVMA.BITNET@forsythe.stanford.edu>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: "Kevin S. McCurley" <MCCURLEY%ALMVMA.BITNET@forsythe.stanford.edu>
Subject: Crypto '89 -- Call for Papers
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
---------------------------------------------------------------------
CRYPTO '89
CALL FOR PAPERS
The Ninth Annual Crypto Conference sponsored by the International
Association for Cryptologic Research (IACR) in cooperation with the
IEEE Computer Society Technical Committee on Security and Privacy, and
the Computer Science Department of the University of California, Santa
Barbara, will be held on the campus of the University of California,
Santa Barbara, on August 20-24, 1989. Original research papers and
technical expository talks are solicited on all practical and
theoretical aspects of cryptology. It is anticipated that some talks
may also be presented by special invitation of the Program Committee.
INSTRUCTIONS FOR AUTHORS: Authors are requested to send ten copies of
a detailed abstract (not a full paper) by March 17, 1989, to the
Program Chairperson at the address given below. Abstracts should
contain sufficient detail, as well as references to and comparisons
with relevant extant work, to enable Program Committee members to
appreciate their merits. It is recommended that abstracts start with a
succinct statement of the problem and discussion of its significance
and relevance to cryptology, appropriate for a non-specialist reader.
In order to facilitate blind refereeing, the names of authors and
their affiliations should only appear on the cover page of the paper;
it should be possible to remove this page and send the papers to
Program Committee members. Limits of 10 double-spaced pages and 2500
words (not counting the bibliography and the cover page) are placed on
all abstracts. If the authors believe that more details are essential
to substantiate the main claims of the paper, they are asked to
include a clearly marked appendix that will be read at the discretion
of the Program Committee. Abstracts that significantly deviate from
these guidelines risk rejection without consideration of their merits.
Abstracts received after the March 17 deadline WILL NOT BE
CONSIDERED, unless they are postmarked not later than March 13 and
arrive a reasonable time thereafter. Authors will be informed of
acceptance or rejection in a letter mailed not later than May 26.
A compilation of all abstracts accepted will be available at the
conference. Authors of accepted papers will be given until July 14,
1989 to submit revised abstracts for this compilation. Complete
conference proceedings will be published in Springer-Verlag's Lecture
Notes in Computer Science series at a later date. The Program
Committee will consider abstracts that have also been submitted to
other conferences. However, if a submission is accepted for
presentation at more than one conference, the authors may present the
results more than once, but may publish them in at most one
proceedings.
The Program Committee consists of
Josh Benaloh (University of Toronto)
Russell Brand (Special session chairperson, Lawrence Livermore Laboratory)
Gilles Brassard (Committee chairperson, Universite de Montreal)
Claude Crepeau (Massachusetts Institute of Technology)
Whitfield Diffie (Bell Northern Research)
Joan Feigenbaum (AT&T Bell Laboratories)
James Massey (ETH Zentrum, Zurich)
Jim Omura (Cylink Corporation)
Gustavus Simmons (Sandia National Laboratories)
Scott Vanstone (University of Waterloo)
Send abstracts to the For other information,
program chairperson: contact the general chairman:
---------------------------- ---------------------------
Gilles Brassard, Crypto '89 Kevin McCurley
Departement IRO IBM Research, K53/802
Universite de Montreal 650 Harry Road
C.P. 6128, Succursale ``A'' San Jose, CA 95120-6099
Montreal (Quebec) U.S.A.
CANADA H3C 3J7 telephone: (408) 927-1708
telephone: (514) 343-6807 Internet: mccurley@ibm.com
email: brassard@iro.umontreal.ca Bitnet: mccurley@almvma
∂12-Dec-88 1735 X3J13-mailer CommonLisp/C interface
Received: from Think.COM by SAIL.Stanford.EDU with TCP; 12 Dec 88 17:35:03 PST
Received: from fafnir.think.com by Think.COM; Mon, 12 Dec 88 19:47:10 EST
Return-Path: <kahle@Think.COM>
Received: from verdi.think.com by fafnir.think.com; Mon, 12 Dec 88 20:33:03 EST
Received: from ungar.think.com by verdi.think.com; Mon, 12 Dec 88 20:31:35 EST
Received: by ungar.think.com; Mon, 12 Dec 88 20:32:57 EST
Date: Mon, 12 Dec 88 20:32:57 EST
From: kahle@Think.COM
Message-Id: <8812130132.AA13377@ungar.think.com>
To: x3j13@sail.stanford.edu
Subject: CommonLisp/C interface
We at Thinking Machines have been using Common Lisp as a system programming
language. The principle features that are missing from CommonLisp for this
purpose is the Lisp/C interface specification. This deficiency makes our
code non-portable. On the other hand, Lucid has provided a good set of
functions that have gotten better in each release. To start the
discussion:
I propose the Common Lisp committee adopt the Lucid 3.0 foreign function
interface as the Common Lisp standard.
-brewster
Brewster@think.com
∂12-Dec-88 1755 X3J13-mailer Issue: TAILP-NIL (Version 5)
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 12 Dec 88 17:55:38 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 507602; Mon 12-Dec-88 20:55:04 EST
Date: Mon, 12 Dec 88 20:55 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: Issue: TAILP-NIL (Version 5)
To: x3j13@sail.stanford.edu
cc: cl-cleanup@sail.stanford.edu, masinter.pa@Xerox.COM
In-Reply-To: <881212-151820-5387@Xerox>
Message-ID: <19881213015522.7.MOON@EUPHRATES.SCRC.Symbolics.COM>
Line-fold: No
Correction: Contrary to what the current practice section says,
the proposal TAILP-NIL:T is not what Symbolics Genera does. In
fact I know of no implementation that does what the proposal says.
However, I support the proposal anyway, because I think it's the
most consistent with the rest of Common Lisp.
∂12-Dec-88 1838 X3J13-mailer ** BALLOT ** BALLOT ** BALLOT ** BALLOT **
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 12 Dec 88 18:38:07 PST
Received: from Semillon.ms by ArpaGateway.ms ; 12 DEC 88 18:16:49 PST
Date: 12 Dec 88 18:16 PST
From: masinter.pa@Xerox.COM
to: x3J13@sail.stanford.edu
Subject: ** BALLOT ** BALLOT ** BALLOT ** BALLOT **
Message-ID: <881212-181649-5908@Xerox>
The issues and proposals named below have been mailed to the X3J13 mailing
list. (Hardcopy mail will follow.)
This ballot is "for informational purposes": If there are errors, problems,
or corrections to any of the issues-- especially the late-breaking ones--
please prepare amendments or new versions to bring to the January meeting.
The purpose of the ballot is to help us avoid discussing the
non-controversial issues; the ballot will tell us which issues should be
included in a "block" vote of endorsement/rejection. There will be
opportunity at the January meeting to correct mistakes or review issues, if
there is some belief that they were incorrectly framed, misunderstood, or
should otherwise be reviewed.
For each proposal, please chose one of the following:
[Y]es: adopt the Proposal
[N]o: don't adopt the Proposal
[I]f the following condition holds....
Only adopt the proposal given some precondition
[C]larify the following point & resubmit
You don't understand the proposal (please explain)
[A]bstain
You have read & understood the proposal but don't care
about the outcome
The result of the vote will be used by the cleanup committee:
Y (if majority): we will include in a "block" resolution
N (if majority): we will not raise the issue at X3J13
I: if no "unconditional" majority, your conditions will
affect what we propose to X3j13
C: we will attempt to clarify (even if the issue gets
a majority vote.)
Our goal is that all "voters" understand all
the issues.
A: your vote will not count in the total
Who can vote?
Anyone who wants to vote may do so, whether members of X3J13, observers, or
interested parties. Please indicate on your ballot your organization,
whether your organization is an X3J13 member, and whether your ballot is
the "official" position of your organization.
Reminders:
The fact that a proposal is before you does not mean that the cleanup
committee, or the person(s) listed as the author(s), actually endorse the
proposal. Please read the discussion section if you would like
testimonials.
Several of the proposals are interlinked in important ways. The linkage is
identified in each proposal. Please be careful to not vote for mutually
exclusive proposals.
There are a large number of issues remaining; some already "ready for
release". The selection criteria was to bring to ballot those issues which
were already pending prior to the October 1988 issue. (A few "new" issues
slipped in....) No "slight" of other issues is intended. We will bring to
the January meeting drafts of many of the issues still pending.
Only those issues modified since the October distribution have been
e-mailed to the X3J13 distribution list. All of these issues are available
online for anonymous FTP from host arisia.xerox.com, directory
clcleanup/pending. (User name "anonymous", any password.)
Again, due to my haste in preparing this ballot, there have been several
mistakes and "hasty" issue releases, for which I apologize.
I will not be reading electronic mail until after 3 January, so please send
administrative mail or ballots to cl-cleanup@sail.stanford.edu.
If you wish to mail your ballot in hardcopy form, please
send it to:
Larry Masinter
Xerox Palo Alto Research Center
3333 Coyote Hill Road
Palo Alto, California 94022
USA
before January 7.
If you wish to discuss several unrelated issues, please send a separate
message for each issue, preferably with Subject of the form "Re: Issue:
ISSUE-NAME (Version nnnn)".
!
ARGUMENTS-UNDERSPECIFIED:SPECIFY
Version 4, 21-Sep-88, Mailed 4 Dec 88
ARRAY-TYPE-ELEMENT-TYPE-SEMANTICS:UNIFY-UPGRADING
Version 9, 31-Oct-88, Mailed 5 Dec 88
CLOSED-STREAM-OPERATIONS:ALLOW-INQUIRY
Version 5, 5-Dec-88, Mailed 5 Dec 88
CONTAGION-ON-NUMERICAL-COMPARISONS:TRANSITIVE
Version 1, 14-Sep-88, Mailed 6 Oct 88
DECLARATION-SCOPE:NO-HOISTING
DECLARATION-SCOPE:LIMITED-HOISTING
Version 4, 15-Nov-88, Mailed 9-Dec-88
DECLARE-FUNCTION-AMBIGUITY:DELETE-FTYPE-ABBREVIATION
Version 4, 5-Dec-88, Mailed 5-Dec-88
DECLARE-TYPE-FREE:ALLOW
Version 8, 7-Dec-88, Mailed 9-Dec-88
DECODE-UNIVERSAL-TIME-DAYLIGHT:LIKE-ENCODE
Version 2, 30-Sep-88, Mailed 6 Oct 88
DEFPACKAGE:ADDITION
Version 7, 2-Nov-88, Mailed 5 Dec 88
DEFSTRUCT-CONSTRUCTOR-KEY-MIXTURE:ALLOW-KEY
Version 2, 21-Sep-88, Mailed 6 Oct 88
DEFSTRUCT-PRINT-FUNCTION-INHERITANCE:YES
Version 3, 7 Dec 88, Mailed 12-Dec-88
DEFSTRUCT-SLOTS-CONSTRAINTS-NAME:DUPLICATES-ERROR
Version 4, 31-Oct-88, Mailed 12-Dec-88
DESCRIBE-INTERACTIVE:EXPLICITLY-VAGUE
DESCRIBE-INTERACTIVE:NO
Version 4, 15-Nov-88 , Mailed 7-Dec-88
DOTTED-MACRO-FORMS:ALLOW
Version 3, 15-Nov-88, Mailed 7-Dec-88
EQUAL-STRUCTURE:STATUS-QUO
Version 5, 1-Oct-88, Mailed 8 Oct 88
EXIT-EXTENT:MINIMAL
EXIT-EXTENT:MEDIUM
Version 5, 12-Dec-88, Mailed 12-Dec-88
EXPT-RATIO:P.211
Version 3, 31-Oct-88, Mailed 7 Dec 88
FIXNUM-NON-PORTABLE:TIGHTEN-DEFINITION
FIXNUM-NON-PORTABLE:TIGHTEN-FIXNUM-TOSS-BIGNUM
Version 4, 7-Dec-88, Mailed 12-Dec-88
FORMAT-E-EXPONENT-SIGN:FORCE-SIGN
Version 2, 2 Oct 88, Mailed 6 Oct 88
FORMAT-PRETTY-PRINT:YES
Version 7, 15 Dec 88, Mailed 7 Dec 88
FUNCTION-COMPOSITION:NEW-FUNCTIONS
FUNCTION-COMPOSITION:COMPLEMENT-AND-ALWAYS
Version 4, 12 Dec 88, Mailed 12 Dec 88
FUNCTION-DEFINITION:FUNCTION-SOURCE
Version 2, 09-Dec-88 , Mailed 9 Dec 88
FUNCTION-TYPE-ARGUMENT-TYPE-SEMANTICS:RESTRICTIVE
Version 3, 7-Dec-88, Mailed 12-Dec-88
FUNCTION-TYPE-REST-LIST-ELEMENT:USE-ACTUAL-ARGUMENT-TYPE
Version 5, 14-Nov-88 , Mailed 8-Dec-88
GET-MACRO-CHARACTER-READTABLE:NIL-STANDARD
Version 2, 8 Dec 88, Mailed 8 Dec 88
HASH-TABLE-PACKAGE-GENERATORS:ADD-WITH-WRAPPER
Version 7, 8-Dec-88, Mailed 9-Dec-88
HASH-TABLE-STABILITY:KEY-TRANSFORM-RESTRICTIONS
Version 1, 11-Nov-88 , Mailed 12 Dec 88
HASH-TABLE-TESTS:ADD-EQUALP
Version 2, 8-Dec-88, Mailed 8 Dec 88
IN-PACKAGE-FUNCTIONALITY:SELECT-ONLY
Version 4, 12-Dec-88, Mailed 12-Dec-88
LAMBDA-FORM:NEW-MACRO
Version 4, 22-Nov-88, Mailed 8-Dec-88
LCM-NO-ARGUMENTS:1
Version 1, 17 Oct 88, Mailed 8 Dec 88
LISP-SYMBOL-REDEFINITION:DISALLOW
Version 5, 22-Nov-88, Mailed 8 Dec 88
MAKE-PACKAGE-USE-DEFAULT:IMPLEMENTATION-DEPENDENT
Version 2, 8 Oct 88, Mailed 12-Dec-88
MAPPING-DESTRUCTIVE-INTERACTION:EXPLICITLY-VAGUE
Version 2, 09-Jun-88, Mailed 8 Oct 88
NTH-VALUE:ADD
Version 4, 8-Dec-88, Mailed 8 Dec 88
PACKAGE-CLUTTER:REDUCE
Version 6, 12-Dec-88, Mailed 12-Dec-881
PACKAGE-DELETION:NEW-FUNCTION
Version 5, 21 nov 88, Mailed 8 Dec 88
PATHNAME-TYPE-UNSPECIFIC:NEW-TOKEN
Version 1 27-Jun-88, Mailed 7 Oct 88
PEEK-CHAR-READ-CHAR-ECHO:FIRST-READ-CHAR
Version 3, 8-Oct-88, Mailed 8 Oct 88
PRINT-CIRCLE-STRUCTURE:USER-FUNCTIONS-WORK
Version 3, 20 Sep 88, Mailed 8 Oct 88
PROCLAIM-LEXICAL:LG
Version 9, 8-Dec-88, Mailed 12-Dec-88
RANGE-OF-COUNT-KEYWORD:NIL-OR-INTEGER
Version 3, 9-Oct-88, Mailed 14-Oct-88
RANGE-OF-START-AND-END-PARAMETERS:INTEGER-AND-INTEGER-NIL
Version 1, 14-Sep-88, Mailed 7 Oct 88
REQUIRE-PATHNAME-DEFAULTS:ELIMINATE
Version 6, 9 Dec 88, mailed 09 Dec 88
REST-LIST-ALLOCATION:NEWLY-ALLOCATED
REST-LIST-ALLOCATION:MAY-SHARE
REST-LIST-ALLOCATION:MUST-SHARE
Version 3, 12-Dec-88, mailed 12-Dec-88
RETURN-VALUES-UNSPECIFIED:SPECIFY
Version 6, 9 Dec 88 mailed 9-Dec-88
ROOM-DEFAULT-ARGUMENT:NEW-VALUE
Version 1 12-Sep-88 mailed 8 Oct 88
[The following are mutually exclusive]
SETF-FUNCTION-VS-MACRO:SETF-FUNCTIONS
Version 3, 4-Nov-87, mailed Nov 87
SETF-PLACES:ADD-SETF-FUNCTIONS
Version 1, 11-Nov-88, mailed 9-Dec-88
SETF-SUB-METHODS:DELAYED-ACCESS-STORES
Version 5, 12-Feb-88 mailed 8 Oct 88
STANDARD-INPUT-INITIAL-BINDING:DEFINED-CONTRACTS
Version 8, 8 Jul 88, Mailed 7 Oct 88
STEP-ENVIRONMENT:CURRENT
Version 3, 20-Jun-88, mailed 7 Oct 88
STREAM-ACCESS:ADD-TYPES-PREDICATES-ACCESSORS
version 2, 30-Nov-88 mailed 9 Dec 88
(expect amendment T => "true")
STREAM-INFO:ONE-DIMENSIONAL-FUNCTIONS
Version 6, 30-Nov-88, mailed 9 dec 88
expect amendment:
LINE-WIDTH ==> STREAM-LINE-WIDTH
LINE-POSITION ==> STREAM-LINE-POSITION
PRINTED-WIDTH ==> STREAM-STRING-WIDTH
SUBTYPEP-TOO-VAGUE:CLARIFY
Version 4, 7-Oct-88, mailed 7 Oct 88
SYMBOL-MACROLET-DECLARE:ALLOW
Version 2, 9-Dec-88, mailed 9 Dec 88
SYMBOL-MACROLET-SEMANTICS:SPECIAL-FORM
Version 5, 30-Nov-88, mailed 9 Dec 88
TAGBODY-CONTENTS:FORBID-EXTENSION
Version 5, 9-Dec-88 mailed 9 Dec 88
TAILP-NIL:T
Version 5, 9-Dec-88, mailed 12-Dec-88
TEST-NOT-IF-NOT:FLUSH-ALL
TEST-NOT-IF-NOT:FLUSH-TEST-NOT
Version 3, 1 Dec 88 mailed 9 dec
TYPE-OF-UNDERCONSTRAINED:ADD-CONSTRAINTS
Version 3, 12-Dec-88, mailed 12 Dec 88
(some "bugs" in the proposal)
UNREAD-CHAR-AFTER-PEEK-CHAR:DONT-ALLOW
Version 2, 2-Dec-88, mailed 12-Dec-88
VARIABLE-LIST-ASYMMETRY:SYMMETRIZE
Version 3, 08-Oct-88, mailed 9 Dec 88
∂13-Dec-88 0800 X3J13-mailer CommonLisp/C interface
Received: from goldhill.com ([128.168.1.225]) by SAIL.Stanford.EDU with TCP; 13 Dec 88 07:58:08 PST
Received: by god.goldhill.com; Tue, 13 Dec 88 10:57:48 EST
Date: Tue, 13 Dec 88 10:57:48 EST
From: ejs@goldhill.com (Eric Swenson)
Message-Id: <8812131557.AA14746@goldhill.com>
To: x3j13@sail.stanford.edu
Cc: kahle@think.com
In-Reply-To: kahle@think.com's message of Mon, 12 Dec 88 20:32:57 EST <8812130132.AA13377@ungar.think.com>
Subject: CommonLisp/C interface
We at Gold Hill agree with Brewster's assessment that the lack of
standards vis-a-vis a foreign-function interface are a serious
deficiency for Common Lisp system programmers. Although the Lucid 3.0
foreign function interface may be lacking in some respects, it is
certainly a good starting place. I second the motion to adopt Lucid's
interface as a standard -- or at least the starting point for a standard.
-- Eric Swenson
Gold Hill Computers, Inc.
∂13-Dec-88 0819 X3J13-mailer CommonLisp/C interface
Received: from Think.COM by SAIL.Stanford.EDU with TCP; 13 Dec 88 08:19:22 PST
Return-Path: <barmar@Think.COM>
Received: from sauron.think.com by Think.COM; Tue, 13 Dec 88 10:29:30 EST
Received: from OCCAM.THINK.COM by sauron.think.com; Tue, 13 Dec 88 11:14:54 EST
Date: Tue, 13 Dec 88 11:15 EST
From: Barry Margolin <barmar@Think.COM>
Subject: CommonLisp/C interface
To: kahle@Think.COM
Cc: x3j13@sail.stanford.edu
In-Reply-To: <8812130132.AA13377@ungar.think.com>
Message-Id: <19881213161509.5.BARMAR@OCCAM.THINK.COM>
Date: Mon, 12 Dec 88 20:32:57 EST
From: kahle@Think.COM
We at Thinking Machines have been using Common Lisp as a system programming
language. The principle features that are missing from CommonLisp for this
purpose is the Lisp/C interface specification. This deficiency makes our
code non-portable.
It's a bit late in the process for us to consider an entirely new area
of standardization. We are hoping to get a draft standard out in the
next six months or so. We chartered ourselves with producing a standard
based primarily on CLtL, with the addition of necessary cleanups, an
object-oriented programming facility, error handling, and improved
iteration facilities, and we formed subcommittees to work on each area.
Had we planned on including foreign function calling at that time we
could have formed such a subcommittee, and I am confident that we would
have had something acceptable by this time. But at this time we are
basically finalizing our work, and I think it is not the time to start
discussing a new, potentially controversial aspect of the language.
On the other hand, Lucid has provided a good set of
functions that have gotten better in each release. To start the
discussion:
I propose the Common Lisp committee adopt the Lucid 3.0 foreign function
interface as the Common Lisp standard.
On what do you base this particular recommendation? Yes, Lucid has a
good set of foreign function interfaces, but so do most other vendors.
There was a good article in Lisp Pointers I.5: "Foreign Functions and
Common Lisp", by Harlan Sexton of Lucid. In addition to describing the
existing foreign function interfaces of several Lisps (Franz ExCL, Lucid
CL, and DEC Vax Lisp), he also includes suggestions on what should be in
a standard interface. Since the developer responsible for Lucid's FFI
doesn't feel that it is appropriate for standardization, why do you?
barmar
∂13-Dec-88 0833 X3J13-mailer Re: CommonLisp/C interface
Received: from Sun.COM by SAIL.Stanford.EDU with TCP; 13 Dec 88 08:32:56 PST
Received: from snail.Sun.COM by Sun.COM (4.1/SMI-4.0)
id AA01286; Tue, 13 Dec 88 08:34:57 PST
Received: from suntana.sun.com by snail.Sun.COM (4.1/SMI-4.0)
id AA17218; Tue, 13 Dec 88 08:31:37 PST
Received: from localhost by suntana.sun.com (4.0/SMI-4.0)
id AA02234; Tue, 13 Dec 88 08:32:11 PST
Message-Id: <8812131632.AA02234@suntana.sun.com>
To: ejs@goldhill.com (Eric Swenson)
Cc: x3j13@sail.stanford.edu, kahle@think.com
Subject: Re: CommonLisp/C interface
In-Reply-To: Your message of Tue, 13 Dec 88 10:57:48 -0500.
<8812131557.AA14746@goldhill.com>
Date: Tue, 13 Dec 88 08:32:07 PST
From: kempf@Sun.COM
Perhaps we can schedule a discussion and vote at the Hawaii meeting?
jak
∂13-Dec-88 0910 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Call for Papers
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 13 Dec 88 09:10:43 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA26335; Tue, 13 Dec 88 09:10:19 PDT
Message-Id: <8812131710.AA26335@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Tue, 13 Dec 88 09:10:51 PST
Received: by BYUADMIN (Mailer R2.01) id 3432; Tue, 13 Dec 88 10:08:14 MST
Date: Tue, 13 Dec 88 09:54:25 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
mitchell%community-chest.mitre.org@GATEWAY.MITRE.ORG
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: mitchell%community-chest.mitre.org@GATEWAY.MITRE.ORG
Subject: Call for Papers
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
-------------------------------------------------------------------------
***** CALL FOR PAPERS AND PARTICIPATION *****
28th Annual Technical Symposium of the Washington, D.C. Chapter of the ACM
INTERFACES: Systems and People Working Together
National Institute of Standards and Technology
Gaithersburg, Maryland - August 24, 1989
No computer is an island. Increasingly, systems are being tied together
to improve their value to the organizations they serve. This symposium will
explore the theoretical and practical issues in interfacing systems and in
enabling people to use them effectively.
*** SOME TOPICS OF INTEREST FOR SUBMITTED PAPERS ***
* HUMAN FACTORS *
User interfaces Meeting the needs of handicapped users
Conquering complexity Designing systems for people
Intelligent assistants The human dimension of information interchange
* SYSTEMS INTEGRATION *
Communications networks Distributed databases
Data standardization System fault tolerance
Communications standards (e.g. GOSIP)
* STRATEGIC SYSTEMS *
Decision support systems Embedding expert systems in information systems
Strategic info systems Computer Aided Logistics Support (CALS)
* SYSTEM DEVELOPMENT AND OPERATION *
Quality control and testing Designing a system of systems
System management Conversion and implementation strategies
Software tools and CASE Identifying requirements thru prototyping
* ENABLING TECHNOLOGIES FOR APPLICATIONS PORTABILITY *
Ada Database management
Open software Open protocol technology
Operating systems (e.g., POSIX)
==> DON'T BE LIMITED BY OUR SUGGESTIONS - MAKE YOUR OWN!
Both experienced and first-time authors are encouraged to present their
work. Papers will be refereed. A length of 10 to 20 double-spaced pages is
suggested.
Those presenting a paper are entitled to register for the symposium at
the early advance registration rate.
To propose special sessions or noncommercial demonstrations, please send
three copies of an extended abstract to the Program Chairman at the address
below.
Note: A paper must include the name, mailing address, and telephone
number of each author or other presenter. Authors of accepted papers must
transfer copyright to ACM for material published in the Proceedings (excepting
papers that cannot be copyrighted under Government regulations).
The ACM policy on prior publication was revised in 1987. A complete
statement of the policy appears in the November 1987 issue of Communications
of the ACM. In part it states that "republication of a paper, possibly
revised, that has been disseminated via a proceedings or newsletter is
permitted if the editor of the journal to which it has been submitted judges
that there is significant additional benefit to be gained from republication."
*** SCHEDULE ***
March 2, 1989 Please send five copies of your paper to the Program Chairman:
Dr. Milton S. Hess
American Management Systems, Inc.
1525 Wilson Boulevard
Arlington, VA 22209
April 13, 1989 Acceptance notification
June 22, 1989 Final camera ready papers are due
August 24, 1989 Presentation at the symposium
If you have any questions or suggestions, please contact:
Symposium General Chairman: Charles E. Youman, The MITRE Corporation,
(703) 883-6349 (voice), (703) 883-6308 (FAX), or youman@mitre.org (internet).
Program Chairman: Dr. Milton Hess, American Management Systems, Inc.,
(703) 841-5942 (voice) or (703) 841-7045 (FAX).
NIST Liaison: Ms. Elizabeth Lennon, National Institute of Standards and
Technology (formerly the National Bureau of Standards), (301) 975-2832 (voice)
or (301) 948-1784 (FAX).
∂13-Dec-88 1115 X3J13-mailer [barmar@Think.COM: CommonLisp/C interface]
Received: from lucid.com by SAIL.Stanford.EDU with TCP; 13 Dec 88 11:15:39 PST
Received: from kent-state ([192.9.200.24]) by heavens-gate.lucid.com id AA05058g; Tue, 13 Dec 88 11:12:46 PST
Received: by kent-state id AA01166g; Tue, 13 Dec 88 11:10:11 PST
Date: Tue, 13 Dec 88 11:10:11 PST
From: Harlan Sexton <hbs@lucid.com>
Message-Id: <8812131910.AA01166@kent-state>
To: kahle@Think.COM, barmar@Think.COM, ejs@goldhill.com
Cc: x3j13@sail.stanford.edu
In-Reply-To: Eric Benson's message of Tue, 13 Dec 88 10:00:56 pst <8812131800.AA00280@blacksox>
Subject: [barmar@Think.COM: CommonLisp/C interface]
I am very pleased to hear people pushing for a Common Lisp standard for a
foreign-function interface, and I am especially pleased that they like what
we did at Lucid enough to recommend it as a starting point. As Barry
Margolin mentioned in his mail, I wrote a survey/proposal for CL FFI's
which appeared in Lisp Pointers, and also in Computer Language, Aug. 1988.
(We can send hard-copies or a LaTeX "source" of this article to interested
parties.)
To summarize my views, I like Lucid's FFI best (not too surprising), but
each of the FFI's that I looked at (Franz ExCL, DEC Vax Lisp, Lucid CL)
have features that I feel belong in the standard and that are found in none
of the other FFI's. (KCL has, I think, the best Lisp to C interface of all,
but duplicating that in any other Lisp just doesn't seem feasible.)
Ideally we would have implemented my proposed standard FFI, but it was only
after implementing the one we did and using it that some of its
short-comings were seen. I then looked (again) at what had been done with
some other implementations, thought for awhile, and formulated a proposal
which seemed to add the features missing from what we had done (and to fix
some design warts).
I would be very interested in reactions to my proposal, because it
currently exists only on paper is still very easy to change. I expect that
we will eventually implement this proposal (although it is not scheduled or
even seriously planned at this time), and it would be nice to have some
outside reactions temper the design.
--Harlan
∂13-Dec-88 1120 X3J13-mailer CommonLisp/C interface
Received: from Think.COM by SAIL.Stanford.EDU with TCP; 13 Dec 88 11:20:12 PST
Received: from fafnir.think.com by Think.COM; Tue, 13 Dec 88 13:31:56 EST
Return-Path: <kahle@Think.COM>
Received: from verdi.think.com by fafnir.think.com; Tue, 13 Dec 88 14:18:22 EST
Received: from ungar.think.com by verdi.think.com; Tue, 13 Dec 88 14:16:55 EST
Received: by ungar.think.com; Tue, 13 Dec 88 14:18:18 EST
Date: Tue, 13 Dec 88 14:18:18 EST
From: kahle@Think.COM
Message-Id: <8812131918.AA15056@ungar.think.com>
To: barmar@Think.COM
Cc: x3j13@sail.stanford.edu
In-Reply-To: Barry Margolin's message of Tue, 13 Dec 88 11:15 EST <19881213161509.5.BARMAR@OCCAM.THINK.COM>
Subject: CommonLisp/C interface
Date: Tue, 13 Dec 88 11:15 EST
From: Barry Margolin <barmar@Think.COM>
Date: Mon, 12 Dec 88 20:32:57 EST
From: kahle@Think.COM
We at Thinking Machines have been using Common Lisp as a system programming
language. The principle features that are missing from CommonLisp for this
purpose is the Lisp/C interface specification. This deficiency makes our
code non-portable.
It's a bit late in the process for us to consider an entirely new area
of standardization.
...
This is a reasonable reply, of course. I have not followed your committee,
so I am sending this out of the blue.
The reason I bring it up is that the foreign function interface (to C) has
become very important to us. Without a standard we will have a very
difficult time porting much of our software if we ever want to (and we have
no plans to port as far as I know).
On the other hand, Lucid has provided a good set of
functions that have gotten better in each release. To start the
discussion:
I propose the Common Lisp committee adopt the Lucid 3.0 foreign function
interface as the Common Lisp standard.
On what do you base this particular recommendation? Yes, Lucid has a
good set of foreign function interfaces, but so do most other vendors.
There was a good article in Lisp Pointers I.5: "Foreign Functions and
Common Lisp", by Harlan Sexton of Lucid. In addition to describing the
existing foreign function interfaces of several Lisps (Franz ExCL, Lucid
CL, and DEC Vax Lisp), he also includes suggestions on what should be in
a standard interface. Since the developer responsible for Lucid's FFI
doesn't feel that it is appropriate for standardization, why do you?
barmar
I suggested Lucid's interface to get the conversation rolling and no more.
I have not studied the other vendor's interfaces, but the lucid interface
is pretty good. I thought that making a specific recommendation would draw
out counter proposals.
-brewster
brewster@think.com
∂13-Dec-88 1233 X3J13-mailer Re: CommonLisp/C interface
Received: from multimax.encore.com by SAIL.Stanford.EDU with TCP; 13 Dec 88 12:33:39 PST
Received: from mist.encore.COM by multimax.encore.com (5.59/25-eef)
id AA07900; Tue, 13 Dec 88 15:28:14 EST
Received: from localhost by mist. (4.0/SMI-4.0)
id AA11784; Tue, 13 Dec 88 14:24:15 EST
Message-Id: <8812131924.AA11784@mist.>
To: Barry Margolin <barmar@Think.COM>
Cc: x3j13@sail.stanford.edu, kahle@think.com
Subject: Re: CommonLisp/C interface
In-Reply-To: Your message of Tue, 13 Dec 88 11:15:00 -0500.
<19881213161509.5.BARMAR@OCCAM.THINK.COM>
Date: Tue, 13 Dec 88 14:24:13 EST
From: Dan L. Pierson <pierson@mist.encore.com>
On what do you base this particular recommendation? Yes, Lucid has a
good set of foreign function interfaces, but so do most other vendors.
There was a good article in Lisp Pointers I.5: "Foreign Functions and
Common Lisp", by Harlan Sexton of Lucid. In addition to describing the
existing foreign function interfaces of several Lisps (Franz ExCL, Lucid
CL, and DEC Vax Lisp), he also includes suggestions on what should be in
a standard interface. Since the developer responsible for Lucid's FFI
doesn't feel that it is appropriate for standardization, why do you?
Well, actually Lucid rewrote their foreign function interface to
essentially what's in Harlan's paper for 3.0. So it would seem likely
that the responsible developer does support it.
I agree that it's late in the standardization process to entertain
major new areas. On the other hand, as Larry Masinter pointed out at
the last meeting, the foreign function interface is one of the three
most important remaining areas to standardize. By now, all stock
hardware vendors have significant experience in this area; at least
one vendor has moved to a second generation design (presumably after
discovering shortcomings in their first generation design).
Therefore, we do have a substantial body of current practice and
experience to draw on.
I think it would be well worthwhile to work some on this area and see
if there really is fundamental disagreement before assuming that we
can't succeed in time.
∂13-Dec-88 1442 @Score.Stanford.EDU:nilsson@Tenaya.stanford.edu cs300
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 13 Dec 88 14:42:08 PST
Received: from Tenaya.stanford.edu by SCORE.STANFORD.EDU with TCP; Tue 13 Dec 88 14:39:25-PST
Received: by Tenaya.stanford.edu (5.59/25-eef) id AA12791; Tue, 13 Dec 88 14:38:33 PDT
Date: Tue, 13 Dec 88 14:38:33 PDT
From: Nils Nilsson <nilsson@Tenaya.stanford.edu>
Message-Id: <8812132238.AA12791@Tenaya.stanford.edu>
To: faculty@score
Subject: cs300
I have received sufficient positive responses about running cs300
during Winter Quarter to conclude that we ought to do it. Any
volunteers? The main tasks are to schedule speakers, to introduce the
speakers, and to preside over discussion (which the students would
like to see more of). This quarter, the seminar has occurred on
Thursdays from 4:15-5:30. -Nils
∂13-Dec-88 1649 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Calgary theory positions
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 13 Dec 88 16:49:32 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA26016; Tue, 13 Dec 88 16:48:46 PDT
Message-Id: <8812140048.AA26016@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Tue, 13 Dec 88 16:49:05 PST
Received: by BYUADMIN (Mailer R2.01) id 3854; Tue, 13 Dec 88 17:45:16 MST
Date: Tue, 13 Dec 88 18:31:15 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
lisa higham <higham%CS.UBC.CA@Forsythe.Stanford.EDU>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMT
From: lisa higham <higham%CS.UBC.CA@Forsythe.Stanford.EDU>
Subject: Calgary theory positions
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
-------------------------------------------------------------------------
Theory Positions at the University of Calgary
The profile of the department of Computer Science at the
University of Calgary has been steadily strengthening due to
significant contributions in many areas of applied computer
science. The department recognizes that strong underpinnings in
theoretical computer science are essential for continued
development. Therefore, the university is committed to building
a larger and stronger theoretical group to complement the well
established applied component of the department. The computer
science department currently has open two tenure track positions
at the level of assistant professor. It expects to fill both
positions with strong candidates capable of maintaining active
and significant research in core areas of theoretical computer
science.
The department encourages and supports inter-departmental and
inter-university collaboration. For example, successful
candidates will enjoy close association with the department of
computer science at the University of British Columbia where
there is an outstanding group of theoretical computer
scientists. The activities of the newly formed theory seminar
WOBCATS (Wash., Oregon, B.C., Alberta --- comparable to BATS in
California) are enthusiastically supported by the department.
The research interests of several members of the math department
at the University of Calgary intersect with subdomains in
theoretical computer science.
The department currently has 25 full time faculty members. It
has active graduate programmes at both the Ph.D. and M.Sc.
levels. Restricted enrollment applies in the undergraduate
programme.
The University of Calgary in Southern Alberta is a modern campus
with excellent facilities including those that are the legacy of
the 1988 Olympics. Banff, Kananaskis and Jasper Parks (all
easily and quickly accessible from Calgary) are among the worlds
most scenic areas and offer unlimited opportunities for outdoor
recreation.
Interested strong candidates should direct applications to:
Dr. John Kendall, chairman
Department of Computer Science
The University of Calgary
2500 University Drive N.W.
Calgary, Alberta, Canada T2N 1N4
telephone: (403) 220--6015
I have recently accepted a position in the computer science
department at the University of Calgary and am excited by the
prospect of participating in the growth of a vibrant theory
group. I would be happy to supply further information. I can
be reached at the University of British Columbia until
mid-December:
Lisa Higham
telephone: (604) 228--4907
e-mail: higham@cs.ubc.ca
and after January 3 at the University of Calgary:
telephone: (403) 220--6015
e-mail: higham@calgary.ca
∂13-Dec-88 1719 betsy@russell.Stanford.EDU Schedule for 1988-89
Received: from russell.Stanford.EDU by SAIL.Stanford.EDU with TCP; 13 Dec 88 17:19:43 PST
Received: by russell.Stanford.EDU (4.0/4.7); Tue, 13 Dec 88 17:21:32 PST
Date: Tue 13 Dec 88 17:21:31-PST
From: Betsy Macken <BETSY@CSLI.Stanford.EDU>
Subject: Schedule for 1988-89
To: evesem@russell.Stanford.EDU
Message-Id: <598065691.0.BETSY@CSLI.Stanford.EDU>
Mail-System-Version: <SUN-MM(242)+TOPSLIB(128)@CSLI.Stanford.EDU>
Here's our 1988-89 schedule:
Evening Seminar Schedule
1988-89
November 16 Dave Rumelhart
December 7 Ivan Sag
January 11 Jon Barwise
January 25 John McCarthy
February 8 Herb Clark
February 22 Stanley Peters
March 8 Ellen Markman
March 22 Amos Tversky
April 12 Eve Clark
April 26 Nils Nilsson
May 10 John Etchemendy
May 24 Yoav Shoham
-------
∂14-Dec-88 1043 X3J13-mailer Re: [barmar@Think.COM: CommonLisp/C interface]
Received: from multimax.encore.com by SAIL.Stanford.EDU with TCP; 14 Dec 88 10:43:16 PST
Received: from mist.encore.COM by multimax.encore.com (5.59/25-eef)
id AA00847; Wed, 14 Dec 88 13:42:09 EST
Received: from localhost by mist. (4.0/SMI-4.0)
id AA00470; Wed, 14 Dec 88 13:42:04 EST
Message-Id: <8812141842.AA00470@mist.>
To: Harlan Sexton <hbs@lucid.com>
Cc: x3j13@sail.stanford.edu
Subject: Re: [barmar@Think.COM: CommonLisp/C interface]
In-Reply-To: Your message of Tue, 13 Dec 88 11:10:11 -0800.
<8812131910.AA01166@kent-state>
Date: Wed, 14 Dec 88 13:42:02 EST
From: Dan L. Pierson <pierson@mist.encore.com>
I was confused, sorry. Of course your Lisp Pointers paper is
different from the Lucid 3.0 implementation. Your paper also looks
like an improvement, though it is missing a few important features
such as the ability to determine the size of a foreign structure.
We should establish a working group on foreign function interface at
the January meeting. Will you be able to be there?
We should also find a way to move this discussion to another mailing
listt, but I'm afraid that that may be tied up in question of moving
everything off of Sail...
∂14-Dec-88 1157 X3J13-mailer Issue: PACKAGE-CLUTTER (Version 6)
Received: from goldhill.com ([128.168.1.211]) by SAIL.Stanford.EDU with TCP; 14 Dec 88 11:56:23 PST
Received: by goldhill.com; Wed, 14 Dec 88 14:55:55 EST
Date: Wed, 14 Dec 88 14:55:55 EST
From: rpk@goldhill.com (Robert Krajewski)
Message-Id: <8812141955.AA16807@goldhill.com>
To: cl-cleanup@sail.stanford.edu
Cc: x3j13@sail.stanford.edu, masinter.pa@xerox.com
In-Reply-To: cl-cleanup@sail.stanford.edu's message of 12 Dec 88 13:44 PST <881212-134536-5049@Xerox>
Subject: Issue: PACKAGE-CLUTTER (Version 6)
I just noticed two problems in this paragraph:
A valid implimentation may have or put additional properties
on symbols (even user created symbols) as long as the
property indicators are not in the LISP, KEYWORD or USER
package.
1. The spelling of the third word.
2. It should be OK for an implementation to use property list indicators
that are *internal* symbols in the LISP package. (Of course, the ``internal''
concept doesn't make sense, really, for keywords, and internal USER symbols
are the most common kind.)
∂14-Dec-88 1205 X3J13-mailer Re: [barmar@Think.COM: CommonLisp/C interface]
Received: from Sun.COM by SAIL.Stanford.EDU with TCP; 14 Dec 88 12:05:31 PST
Received: from snail.Sun.COM by Sun.COM (4.1/SMI-4.0)
id AA03961; Wed, 14 Dec 88 12:07:13 PST
Received: from suntana.sun.com by snail.Sun.COM (4.1/SMI-4.0)
id AA04016; Wed, 14 Dec 88 12:03:50 PST
Received: from localhost by suntana.sun.com (4.0/SMI-4.0)
id AA04870; Wed, 14 Dec 88 11:24:33 PST
Message-Id: <8812141924.AA04870@suntana.sun.com>
To: Dan L. Pierson <pierson@mist.encore.com>
Cc: Harlan Sexton <hbs@lucid.com>, x3j13@sail.stanford.edu
Subject: Re: [barmar@Think.COM: CommonLisp/C interface]
In-Reply-To: Your message of Wed, 14 Dec 88 13:42:02 -0500.
<8812141842.AA00470@mist.>
Date: Wed, 14 Dec 88 11:24:09 PST
From: kempf@Sun.COM
>We should establish a working group on foreign function interface at
>the January meeting.
This sounds like an excellent idea.
jak
∂14-Dec-88 1659 X3J13-mailer Hawaii registration
Received: from lucid.com by SAIL.Stanford.EDU with TCP; 14 Dec 88 16:59:14 PST
Received: from challenger ([192.9.200.17]) by heavens-gate.lucid.com id AA11077g; Wed, 14 Dec 88 16:56:28 PST
Received: by challenger id AA13417g; Wed, 14 Dec 88 16:52:36 PST
Date: Wed, 14 Dec 88 16:52:36 PST
From: Jan Zubkoff <jlz@lucid.com>
Message-Id: <8812150052.AA13417@challenger>
To: x3j13@sail.stanford.edu
Subject: Hawaii registration
Please let me know if there are any changes/additions. Note that there will
be room to bring guests to the luau, I just need to know how many.
---jan---
X3J13 Attendee Information
12/14/88
Name Institute Paid L1 L2 L3 Luau
Jim Antonisse MITRE Corp. 113.50 y y y 1
Bill Arbaugh U.S. Army -0- y y y -
Paul Beiser HP -0- y y y -
Jerome Chailloix ILOG -0- y y y -
Kathy Chapman DEC -0- y y y 1
Jeff Dalton University of Edinburgh -0- y y y -
Jerry Duggen HP -0- y y y -
Patrick Dussud Lucid, Inc. -0- y y y 1
Dick Gabriel Lucid, Inc. -0- y y y 1
Kevin Layer Franz, Inc. $75.00 y y y 1
Thom Linden IBM $75.00 y y y 1
David Loeffler MCC 113.50 y y y 1
Larry Masinter Xerox $75.00 y y y 1
Greg Nuyens ILOG -0- y y y -
Chris Perdue SUN MicroSystems -0- y y y 1
Jeff Rosenking Grumman Corp. -0- y y y -
David Unietis Lucid, Inc. -0- y y y 1
Mary Van Deusen IBM -0- y y y -
Ellen Waldrum TI $75.00 y y y 2
JonL White Lucid, Inc. -0- y y y 1
Jan Zubkoff Lucid, Inc. -0- y y y 2
∂14-Dec-88 1707 X3J13-mailer Re: CommonLisp/C interface
Received: from FRED.SLISP.CS.CMU.EDU by SAIL.Stanford.EDU with TCP; 14 Dec 88 17:06:25 PST
Received: from FRED.SLISP.CS.CMU.EDU by FRED.SLISP.CS.CMU.EDU; 14 Dec 88 20:03:13 EST
To: Dan L. Pierson <pierson@mist.encore.com>
cc: Barry Margolin <barmar@Think.COM>, x3j13@sail.stanford.edu,
kahle@think.com
Subject: Re: CommonLisp/C interface
In-reply-to: Your message of Tue, 13 Dec 88 14:24:13 -0500.
<8812131924.AA11784@mist.>
Date: Wed, 14 Dec 88 20:00:32 EST
From: Rob.MacLachlan@WB1.CS.CMU.EDU
I agree that a foreign function call mechanism is an important part of any
Common Lisp implementation on an architecture that supports multiple
languages. Nonetheless, I think that attempts to standardize foreign
function call are premature. Good results are especially unlikely under
time pressure.
I believe that the acid test of a foreign interface facility is that it
can be use to define an interface to arbitrary foreign subroutine library.
Use of magical glue code that knows about Lisp or foreign data structure
representations isn't allowed.
Inter-language communication is in general a hard problem. The problem
isn't in calling a routine written in another language, it is with making
foreign data structures sensible. Consider complex data structures: linked
list structures, pointers to arrays of records, etc. Also consider byte
ordering, foreign compiler decisions about record packing, etc.
Since there are spurious proposals in the air, I propose that the CMU
Common Lisp Alien type, the associated C type definition macros, and the
DEFROUTINE macro be made part of Common Lisp. The CMU Lisp facility comes
a lot closer to meeting the desiderata than any other foreign interface
facility that I have seen. For example, we provided a complete interface
to version 10 Xlib without using any glue code.
This is a spurious proposal, since I am sure that our current facility can
be improved quite a bit. It was also never designed to be part of a
portable standard.
In addition to the technical issue of "do we know a good foreign interface
when we see one?", there is the language definition issue of "do we know
how to define a foreign interface mechanism in the Common Lisp context, and
does it make any sense to do so?"
The current standardization effort is undertaking to determine what it
means to "be Common Lisp": what properties all Common Lisp implementations
must have. Availability of C or any other foreign language is not a
required part of the Common Lisp environment, so it doesn't make any sense
to adopt a foreign interface mechanism as part of the core Common Lisp
standard.
People interested in standardizing interface to C should look to what was
done with CLX (the Common Lisp interface to X11.) Informal work on a
mailing list resulted in a Common Lisp extension that is available in
almost all environments where it is meaningful.
Rob
∂15-Dec-88 0802 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Call for Papers/Distributed Comp Workshop South of France
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 15 Dec 88 08:01:59 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA15390; Thu, 15 Dec 88 08:01:39 PDT
Message-Id: <8812151601.AA15390@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Thu, 15 Dec 88 08:02:10 PST
Received: by BYUADMIN (Mailer R2.01) id 2515; Thu, 15 Dec 88 08:59:07 MST
Date: Thu, 15 Dec 88 09:45:50 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Paul Vitanyi <paulv%CWI.NL@Forsythe.Stanford.EDU>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Paul Vitanyi <paulv%CWI.NL@Forsythe.Stanford.EDU>
Subject: Call for Papers/Distributed Comp Workshop South of France
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
-------------------------------------------------------------------------
3rd INTERNATIONAL WORWSHOP
ON
DISTRIBUTED ALGORITHMS
Nice, September 26-28, 1989
Following the two first successful Workshops on Distributed Algo-
rithms in Ottawa (1985) and Amsterdam (1987), the third workshop
of this kind will be held at La Colle sur Loup, near Nice,
France. The workshop is intended to provide a forum for research-
ers and other parties interested in distributed algorithms on
communication networks, graphs and decentralized systems. Aim is
to present recent research results, explore directions for future
research, and identify common fundamental techniques that serve
as building blocks in many distributed algorithms.
Paper are solicited describing original results in all areas of
distributed algorithms and their applications, including e.g.
- distributed combinatorial algorithms
- distributed optimization algorithms
- distributed graphs algorithms
- routing algorithms
- distributed algorithms for control and communication
- design of network protocols
- distributed database techniques
- algorithms for transaction management
- distributed algorithms for decentralizated systems
- composition of distributed algorithms
- fail-safe and fault-tolerant distributed algorithms
Intended contributors are invited to submit 8 copies of a full
paper (not exceeding 12 pages) to one of the scientific chairmen.
Jean-Claude Bermond Michel Raynal
LRI, Bat 490 IRISA
Universite Paris-Sud Campus de Beaulieu
91405 Orsay, France 35042 Rennes, France
e-mail bermond@FRLRI61.BITNET e-mail raynal@irisa.fr (uucp)
or bermond@lri.lri.fr (uucp)
Submissions must arrive before April 25, 1989. Authors will be
notified of acceptance or rejection by June 19, 1989. Proceedings
will be published, possibly in the Springer Verlag series Lecture
Notes in Computer Science. The final version of accepted
papers must arrive in camera-ready form before July 15, 1989, to
ensure the availability of the proceedings at the conference.
PROGRAM COMMITEE
J-C Bermond (CNRS, LRI Ordsay, France)
F. Mattern (U. Kaiserslautern, Germany)
M. Raynal (IRISA, Rennes, France)
N. Santoro (Carlton University, Ottawa, Canada)
A. Segfall (Technion, Haifa, Israel)
S. Toueg (Cornell University, Ithaca, USA)
P. Vitanyi (C.W.I. and Univ. of Amsterdam, Netherlands)
Organizing chairman :
C. Lavault
INRIA
Domaine de Voluceau, Rocquencourt,
BP 105, 78153 Le Chesnay, France
General Information:
The workshop will be held at a French Holyday Center VVF, Chemin
de Montmeuille, 06480, La Colle sur Loup, France. This small
"provencal village" is located in a pine forest near Saint-Paul
de Vence, at 12 km from Nice Airport, 20 km from Cannes and 6 km
from the mediteranean sea. Further details will be mailed with
the second announcement. For further information contact either
J-C Bermond, C. Lavault, M. Raynal, or any member of the program
committee.
Please fill up this form and send it to ******* (will be pre-
cised)
NAME:
ADDRESS;
e-mail adress (if available ):
I Intend to submit a paper: yes no maybe
I want to receive the second announcement: yes no
∂15-Dec-88 0929 X3J13-mailer Re: [barmar@Think.COM: CommonLisp/C interface]
Received: from NSS.Cs.Ucl.AC.UK by SAIL.Stanford.EDU with TCP; 15 Dec 88 09:28:42 PST
Received: from aiai.edinburgh.ac.uk by NSS.Cs.Ucl.AC.UK via Janet with NIFTP
id aa05577; 15 Dec 88 16:27 GMT
Date: Thu, 15 Dec 88 16:38:16 GMT
Message-Id: <6378.8812151638@subnode.aiai.ed.ac.uk>
From: Jeff Dalton <jeff%aiai.edinburgh.ac.uk@NSS.Cs.Ucl.AC.UK>
Subject: Re: [barmar@Think.COM: CommonLisp/C interface]
To: kempf@sun.com, "Dan L. Pierson" <pierson%mist.encore.com@NSS.Cs.Ucl.AC.UK>
In-Reply-To: kempf@com.sun's message of Wed, 14 Dec 88 11:24:09 PST
Cc: Harlan Sexton <@sail.stanford.edu:hbs@lucid.com>, x3j13@sail.stanford.edu
>We should establish a working group on foreign function interface at
>the January meeting.
I too think this is a good idea.
It also turns out that the ISO Lisp working group, WG-16, is supposed
to comment on a document, "Working documents on CALLING MECHANISMS
and LANGUAGE-INDEPENDENT DATA TYPES", prepared by WG-11, the working
group for Language Bindings.
Anyone interested in these issues may want to comment, and the plan,
at the last WG-16 meeting, was for anyone interested to prepare
comments by the next WG-16 meeting, in March.
Jeff Dalton, JANET: J.Dalton@uk.ac.ed
AI Applications Institute, ARPA: J.Dalton%uk.ac.ed@nss.cs.ucl.ac.uk
Edinburgh University. UUCP: ...!ukc!ed.ac.uk!J.Dalton
∂15-Dec-88 0945 X3J13-mailer Re: [barmar@Think.COM: CommonLisp/C interface]
Received: from Sun.COM by SAIL.Stanford.EDU with TCP; 15 Dec 88 09:44:51 PST
Received: from snail.Sun.COM by Sun.COM (4.1/SMI-4.0)
id AA12664; Thu, 15 Dec 88 09:44:56 PST
Received: from suntana.sun.com by snail.Sun.COM (4.1/SMI-4.0)
id AA01149; Thu, 15 Dec 88 09:41:36 PST
Received: from localhost by suntana.sun.com (4.0/SMI-4.0)
id AA07434; Thu, 15 Dec 88 09:42:10 PST
Message-Id: <8812151742.AA07434@suntana.sun.com>
To: Jeff Dalton <jeff%aiai.edinburgh.ac.uk@NSS.Cs.Ucl.AC.UK>
Cc: kempf@Sun.COM, "Dan L. Pierson" <pierson%mist.encore.com@NSS.Cs.Ucl.AC.UK>,
Harlan Sexton <@sail.stanford.edu:hbs@lucid.com>,
x3j13@sail.stanford.edu
Subject: Re: [barmar@Think.COM: CommonLisp/C interface]
In-Reply-To: Your message of Thu, 15 Dec 88 16:38:16 +0000.
<6378.8812151638@subnode.aiai.ed.ac.uk>
Date: Thu, 15 Dec 88 09:42:08 PST
From: kempf@Sun.COM
Jeff:
Could you bring along a copy of this document to the Hawaii
meeting, presuming you're coming. If not, perhaps you could let
us know where we could get it, or mail it electronically or otherwise?
Thanx.
I'll ask Jan Zubkov about arranging a subcommittee meeting.
jak
∂15-Dec-88 1424 @Score.Stanford.EDU:jps@amadeus.Stanford.EDU panel on federal science funding
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 15 Dec 88 14:24:02 PST
Received: from amadeus.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Thu 15 Dec 88 14:20:59-PST
Received: by amadeus.Stanford.EDU (5.59/inc-1.0)
id AA07320; Thu, 15 Dec 88 14:21:03 PDT
Date: Thu, 15 Dec 88 14:21:03 PDT
From: jps@amadeus.Stanford.EDU (Jaswinder Singh)
Message-Id: <8812152221.AA07320@amadeus.Stanford.EDU>
To: ee-faculty@sierra.stanford.edu, faculty@score.stanford.edu
Subject: panel on federal science funding
The following is an announcement I received from Barbara Simons
at IBM Almaden:
>From: "Barbara B. Simons" <simons@IBM.com>
To: jps@amadeus.Stanford.EDU (Jaswinder Singh)
Cc: simons@ibm.com
Message-Id: <881215.105249.simons@IBM.com>
Subject: Re: report draft
In-Reply-To: Your message of Wed, 14 Dec 88 12:00:54 PDT
Status: RO
==============================
There will be a panel on federal funding of those sciences for which the DoD
(as opposed to the NIH) is the primary mission oriented funding agency. This
panel is to be held during the annual meeting of the AAAS and is jointly
sponsored by the American Association for the Advancement of Science, the
American Physical Society, and the American Association of Physics Teachers.
Date: Jan. 17, 1989
Place: the California Room of the St. Francis Hotel, San Francisco
Time: 8:30 A.M.
Federal Funding of the Academic Physical Sciences
Federal funding of science is a major component of science policy. Which
areas are funded, how much funding they receive, which agencies do the
funding, and who makes the decisions are important issues. Fields prosper and
decline according to these decisions. Graduate students' choice of specialty
is influenced by funding. Teaching loads and even tenure decisions can be
affected. Since funding has a profound influence on technology, funding
policy has significant economic repercussions. It also has political
repercussions, as politicians become increasingly involved with the funding
process. Scientific and academic freedom are at issue. Researchers who fear
that their funding may be cut for political reasons, even if the fears are
unfounded, may engage in self-censorship.
What impact has science funding policy had on universities?
What has been the effect of the increased emphasis on 'big science' in recent
years?
Is there an imbalance of funding sources for some scientific disciplines, and,
if so, is this a problem?
Have government policies with respect to science funding been in the best
interest of science?
Are there ways in which these policies can be improved?
How have the trends toward mission oriented and defense oriented funding
affected the quality and nature of scientific research?
Panelists
Prof. Philip Anderson (Nobel Prize)
Physics, Princeton University
Prof. Peter Lax (Wolf Prize)
Mathematics, Courant Institute
Dr. Robert Park
Executive Director, Office of Public Affairs, The American Physical Society
Dr. Burton Richter (Nobel Prize)
Director, SLAC
Dr. Robert M. Rosenzweig
President, Association of American Universities
Prof. William Thurston (Fields Medal)
Mathematics, Princeton University
Moderator: Dr. Barbara Simons
Computer Science, IBM Almaden Research Center
∂15-Dec-88 1504 X3J13-mailer Hawaii registration form
Received: from lucid.com by SAIL.Stanford.EDU with TCP; 15 Dec 88 15:04:29 PST
Received: from challenger ([192.9.200.17]) by heavens-gate.lucid.com id AA00573g; Thu, 15 Dec 88 15:01:40 PST
Received: by challenger id AA14949g; Thu, 15 Dec 88 14:56:18 PST
Date: Thu, 15 Dec 88 14:56:18 PST
From: Jan Zubkoff <jlz@lucid.com>
Message-Id: <8812152256.AA14949@challenger>
To: x3j13@sail.stanford.edu
Subject: Hawaii registration form
It's been a while since I've sent this....
X3J13/ISO Meeting
X3J13: 1/16/89 - 1/18/89
ISO: 1/19/89 - 1/20/89
Kauai, Hawaii
Committee Meeting:
Dates: 1/16/89 - 1/18/89
Time: 9:00 - 5:00
City: Kapaa, Kauai, Hawaii
Place: Sheraton Coconut Beach Hotel
REGISTRATION FEE: $75 Payable to: LUCID, Inc.
ISO Meeting:
Dates: 1/19/89 - 1/20/89
Hotel Accomodations:
Hotel: Sheraton Coconut Beach Hotel
Address: Coconut Plantation
Phone: 808/822-3455
Directions from airport:
Turn right onto route 56 north (Kuhio Highway)
Look for the 7 mile marker and take next right (can see hotel from the
road but it is not on the main road)
Rate: $80/night
Mention: "X3J13 Standards Committee" for rate
Group Luau:
Place: Shearton Coconut Grove
Date: 1/17/89
Time: TBA
For further information contact:
Jan Zubkoff
Lucid, Inc.
707 Laurel Street
Menlo Park, CA 94025
jlz@lucid.com
(415) 329-8400
!
X3J13/ISO January Meeting Registration Form
Please include check for $75.00 payable to Lucid mail to:
Jan Zubkoff
Lucid, Inc.
707 Laurel Street
Menlo Park, CA 94025
(415) 329-8400
jlz@lucid.com
Name: _____________________________________________________________
Institution: ______________________________________________________
Net-Address: ______________________________________________________
Phone: ____________________________________________________________
Attend X3J13 _________ Attend ISO _________
Lunch 1/16: _________ yes _______ no
Lunch 1/17: _________ yes _______ no
Lunch 1/18: _________ yes _______ no
Luau 1/17 $38.50: _________ yes _______ no
∂15-Dec-88 1525 X3J13-mailer Hawaii registration form OOOPS!
Received: from lucid.com by SAIL.Stanford.EDU with TCP; 15 Dec 88 15:25:46 PST
Received: from challenger ([192.9.200.17]) by heavens-gate.lucid.com id AA00611g; Thu, 15 Dec 88 15:22:51 PST
Received: by challenger id AA15067g; Thu, 15 Dec 88 15:18:58 PST
Date: Thu, 15 Dec 88 15:18:58 PST
From: Jan Zubkoff <jlz@lucid.com>
Message-Id: <8812152318.AA15067@challenger>
To: x3j13@sail.stanford.edu
In-Reply-To: Jan Zubkoff's message of Thu, 15 Dec 88 14:56:18 PST <8812152256.AA14949@challenger>
Subject: Hawaii registration form OOOPS!
Scratch the ISO meeting from the registration form. It really has been
cancelled.
---jan---
∂15-Dec-88 1715 X3J13-mailer Symbolics Cambridge office is moving
Received: from AI.AI.MIT.EDU by SAIL.Stanford.EDU with TCP; 15 Dec 88 17:15:23 PST
Date: Thu, 15 Dec 88 20:16:17 EST
From: KMP@STONY-BROOK.SCRC.Symbolics.COM
Sender: KMP@AI.AI.MIT.EDU
Subject: Symbolics Cambridge office is moving
To: X3J13@SAIL.STANFORD.EDU
Message-ID: <505706.881215.KMP@AI.AI.MIT.EDU>
The Symbolics Cambridge office (corporate HQ and R&D) is moving to
Burlington this week. Our file servers will be offline for some of
the transition and mail to me, Moon, etc. may bounce. If you get
back mail because Symbolics doesn't respond (and if it's possible,
convenient, etc.), please hang onto any bounced messages and
re-send them to us mid next week when things will (hopefully) be
back in order. Thanks very much.
∂15-Dec-88 1716 @Score.Stanford.EDU:jwilson@jaguar.Stanford.EDU [SLOAN@Score.Stanford.EDU: Theft]
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 15 Dec 88 17:16:37 PST
Received: from jaguar.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Thu 15 Dec 88 17:04:49-PST
Received: by jaguar.Stanford.EDU (5.51/inc-1.01)
id AA04484; Thu, 15 Dec 88 17:08:04 PST
Date: Thu, 15 Dec 88 17:08:04 PST
From: James Wilson <jwilson@jaguar.Stanford.EDU>
Message-Id: <8812160108.AA04484@jaguar.Stanford.EDU>
To: csd-list@score.stanford.edu
Subject: [SLOAN@Score.Stanford.EDU: Theft]
>From: Yvette Sloan <SLOAN@Score.Stanford.EDU>
Subject: Theft
Lynn Munday's wallet was stolen from her office this morning. This is a
reminder that if you must leave your office for any length of time, you
should close and lock your door. If you leave your door open, please
make sure your purse/wallet or other valuabe items are locked away in
your desk.
If you see any suspicious looking people roaming around the building, ask
them if you can help them find something or someone. This might help them
decide to leave the building before they get to take anything.
Anyway, a word to the wise....
∂16-Dec-88 0847 X3J13-mailer Re: [barmar@Think.COM: CommonLisp/C interface]
Received: from NSS.Cs.Ucl.AC.UK by SAIL.Stanford.EDU with TCP; 16 Dec 88 08:47:33 PST
Received: from aiai.edinburgh.ac.uk by NSS.Cs.Ucl.AC.UK via Janet with NIFTP
id aa05376; 16 Dec 88 16:11 GMT
Date: Fri, 16 Dec 88 16:22:55 GMT
Message-Id: <7682.8812161622@subnode.aiai.ed.ac.uk>
From: Jeff Dalton <jeff%aiai.edinburgh.ac.uk@NSS.Cs.Ucl.AC.UK>
Subject: Re: [barmar@Think.COM: CommonLisp/C interface]
To: kempf@sun.com, x3j13@sail.stanford.edu
In-Reply-To: kempf@com.sun's message of Thu, 15 Dec 88 09:42:08 PST
Cc: pierson <@NSS.Cs.Ucl.AC.UK:pierson@mist.encore.com>,
hbs <@sail.stanford.edu:hbs@lucid.com>
> Could you bring along a copy of this document to the Hawaii
> meeting, presuming you're coming. If not, perhaps you could let
> us know where we could get it, or mail it electronically or otherwise?
Dick Gabriel should have received a copy fro ISO. I've received
several by now, via various paths, and will try to remmeber to
bring one.
-- Jeff
∂16-Dec-88 1306 @Score.Stanford.EDU:mkatz@sesame.stanford.edu [SLOAN@Score.Stanford.EDU: Theft]
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 16 Dec 88 13:06:34 PST
Received: from sesame.stanford.edu by SCORE.STANFORD.EDU with TCP; Fri 16 Dec 88 12:55:36-PST
Received: by sesame.stanford.edu (5.57/Ultrix2.4-C)
id AA27796; Fri, 16 Dec 88 12:52:02 PST
Date: Fri, 16 Dec 88 12:52:02 PST
From: mkatz@sesame.stanford.edu (Morris Katz)
Message-Id: <8812162052.AA27796@sesame.stanford.edu>
To: jwilson@jaguar.stanford.edu
Cc: csd-list@score.stanford.edu
In-Reply-To: James Wilson's message of Thu, 15 Dec 88 17:08:04 PST <8812160108.AA04484@jaguar.Stanford.EDU>
Subject: [SLOAN@Score.Stanford.EDU: Theft]
Date: Thu, 15 Dec 88 17:08:04 PST
From: James Wilson <jwilson@jaguar.Stanford.EDU>
>From: Yvette Sloan <SLOAN@Score.Stanford.EDU>
Subject: Theft
Lynn Munday's wallet was stolen from her office this morning. This is a
reminder that if you must leave your office for any length of time, you
should close and lock your door. If you leave your door open, please
make sure your purse/wallet or other valuabe items are locked away in
your desk.
Merely locking things in ones office is not sufficient. A number of people,
myself included, have had things stolen from locked offices this term.
Unfortunately, it seems that one just can't store things one would like to keep
in MJH.
Morry Katz
katz@polya.stanford.edu
∂16-Dec-88 1313 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Undecidability of containment
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 16 Dec 88 13:13:37 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA14965; Fri, 16 Dec 88 13:12:58 PDT
Message-Id: <8812162112.AA14965@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Fri, 16 Dec 88 13:13:27 PST
Received: by BYUADMIN (Mailer R2.01A) id 9809; Fri, 16 Dec 88 14:11:37 MST
Date: Fri, 16 Dec 88 15:06:06 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Sanjeev Mahajan <mahajan%CMPT.SFU.CDN@Forsythe.Stanford.EDU>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Sanjeev Mahajan <mahajan%CMPT.SFU.CDN@Forsythe.Stanford.EDU>
Subject: Undecidability of containment
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
There is a problem in the Automata theory book by Hopcroft and Ullmann, which
states that if P =! NP, then it is undecidable to determine if a given
problem (or language) in NP is in P. Can anyone provide any references
to me in this regard? Thanks in advance.
∂16-Dec-88 1315 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Re: TCS geneology
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 16 Dec 88 13:15:44 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA15064; Fri, 16 Dec 88 13:15:14 PDT
Message-Id: <8812162115.AA15064@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Fri, 16 Dec 88 13:15:43 PST
Received: by BYUADMIN (Mailer R2.01A) id 0096; Fri, 16 Dec 88 14:14:05 MST
Date: Fri, 16 Dec 88 15:08:54 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Judy Goldsmith <goldsmit%CS.WISC.EDU@Forsythe.Stanford.EDU>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Judy Goldsmith <goldsmit%CS.WISC.EDU@Forsythe.Stanford.EDU>
Subject: Re: TCS geneology
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
It is official. I finally handed in my dissertation, so I am officially
PhD'd. Advisor: Deborah A. Joseph; graduation date: Dec, 1988.
First job: John Welsey Young Research Instructor, Dartmouth.
Me: Judy Goldsmith.
University: University of Wisconsin-Madison
Dept: Mathematics
∂16-Dec-88 1319 JONES@Score.Stanford.EDU Winter quarter AI classes
Received: from csli.Stanford.EDU by SAIL.Stanford.EDU with TCP; 16 Dec 88 13:19:05 PST
Received: from Score.Stanford.EDU by csli.Stanford.EDU (4.0/4.7); Fri, 16 Dec 88 13:15:15 PST
Date: Fri 16 Dec 88 13:15:05-PST
From: "H. Roy Jones" <JONES@Score.Stanford.EDU>
Subject: Winter quarter AI classes
To: ssp-faculty@CSLI.Stanford.EDU, ssp-students@CSLI.Stanford.EDU
Message-Id: <12454955706.20.JONES@Score.Stanford.EDU>
Winter quarter AI courses of interest:
CS322 AUTONOMOUS AGENT ARCHITECTURE
A rigorous treatment of the problems involved in building intelligent agents
that interact with the physical world. Topics: the representation of knowledge
about states, actions, and procedures, simulation and planning, and knowledge
level agents.
Prerequisites: 157, 221
Instructor: Mike Genesereth
MWF 1:15 in Skilling Aud
3 units
CS323 NONMONOTONIC REASONING
(Same as Philosophy 326) Formalisms for representing nonmonotonic
reasoning and their applications to AI. Nonmonotonic aspects of commonsense
knowledge and reasoning. Default logic, autoepistemic logic and
circumscription. Computational nonmonotonic reasoning. Applications of
nonmonotonic formalisms to inheritance systems, to logic programming, and
to reasoning about action using the situation calculus.
Prerequisites: A basic knowledge of logic.
Instructor: John McCarthy
TTh 2:45-4:00 in Skilling Aud
3 units
CS325 PLANNING METHODS IN ARTIFICIAL INTELLIGENCE
Introduction to AI methods for planning courses of actions in order to
achieve a specified goal from an initial state of the world. Methods
linear planning (means-ends analysis, goal regression), non-linear planning,
hierarchical planning, and compromise-based planning. Underlying problems-
frame, qualification, prediction, and persistence, and notions, such as
interdependent subgoals, are reviewed and analyzed. Two parts: the basics
illustrated with simple examples; and applications in various domains
(robotics, process planning, etc.).
Prerequisite: CS221
Instructor: Jean-Claude Latombe
TTh 1:15-2:30 in Terman 156
3 units
CS327B INTRODUCTION TO COMPUTER VISION
Visual perception by computer: formation of the image of a surface patch;
surface reflectivity; cameras and range sensors; statistical estimation.
Three-dimensional vision: local geometry of a surface patch; global surface
geometry; segmentation of surface data; stereo vision and motion perception.
Image segmentation: edge operators and extended curves; texture.
Interpretation: shape representation and geometric modeling; interpretation of
line drawings; structural matching. Comparisons are made with psychophysics.
Prerequisites: 106A, Statistics 115 or 116, Math. 103 or 113, and orthogonal
polynomials.
Instructor: Tom Binford
TTh 1:15-2:30 in ERL 320
3 units
CS429 Representing Large Bodies of Knowledge:
Issues in Representation, Inference, and Ontology
Douglas B. Lenat (Principal Scientist and Director of AI at MCC)
Mondays, 2:15 - 5:05 Building 50, Room 51P
2 Units (course will meet 2 out of every 3 Mondays)
Survey of representation "thorns", such as time, substances, space, belief,
desire, hypotheticals, intentionality. Identifying, for each of those, the
special cases that most frequently occur in our everyday dealings with
the real world; and discussing ways to adequately handle those cases.
Using the same empirical approach to develop a global ontology -- a set
of primitive objects and predicates, and rules for creating new categories,
individuals, and attributes. And using the same approach to produce a
hierarchy of useful templates for inference.
The MCC CYC project will be covered in detail. That large (two
person-century), long (1984-94) project is attempting to codify the
millions of facts, heuristics, representations, models, inference
templates, etc., that comprise human consensus reality. Such a KB could
play a key role in supporting natural language understanding, machine
learning, and non-brittle expert systems of the future.
CYC will be used to help anchor the discussions, focusing them on
problems that "really occur" and on approaches to solutions that are
"pragmatically adequate". Our approach has recently been branded as
"too scruffy" by Neats, and "too neat" by Scruffies, so perhaps we are
on the right track.
-------
∂16-Dec-88 1352 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Call for papers FOCS 89
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 16 Dec 88 13:52:43 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA17552; Fri, 16 Dec 88 13:52:05 PDT
Message-Id: <8812162152.AA17552@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Fri, 16 Dec 88 13:52:29 PST
Received: by BYUADMIN (Mailer R2.01A) id 1091; Fri, 16 Dec 88 14:48:26 MST
Date: Fri, 16 Dec 88 15:21:16 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Zvi Galil <galil%CS.COLUMBIA.EDU@Forsythe.Stanford.EDU>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Zvi Galil <galil%CS.COLUMBIA.EDU@Forsythe.Stanford.EDU>
Subject: Call for papers FOCS 89
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
-------------------------------------------------------------------------
CALL FOR PAPERS
1989 IEEE Symposium on
Foundations of Computer Science
The 30th Annual IEEE Symposium on Foundations of Computer Science will be
held at the Sheraton Imperial Hotel, Research Triangle North Carolina
October 30 - November 1, 1989. The Symposium is sponsored by the IEEE Computer
Society's Technical Committee on Mathematical Foundations of Computing.
Papers presenting original research on theoretical aspects of computer
science are sought. Topics include but are not limited to the following:
Algorithms and Data Structures Databases
Automata and Formal Languages Logic in Computer Science
Computability and Complexity Theory Machine Learning
Computational Geometry and Robotics Parallel and Distributed Computation
Cryptography VLSI Computation and Design
Persons wishing to submit a paper should send 15 copies of an extended
abstract by May 2, 1989 to the Program Committee chair:
Zvi Galil
Department of Computer Science
Columbia University
450 CS Building
500 West 120-th St.
New York, New York 10027
Submissions or revisions received after May 2, 1989 will not be considered.
Authors will be notified of acceptance or rejection by June 30, 1989. A
camera-ready copy of each accepted paper, prepared in a special format for
inclusion in the Symposium proceedings, will be due by August 15, 1989.
Submission format: Abstracts should begin with a succinct statement of
the problems that are considered in the paper, the main results achieved,
an explanation of the significance of the work, and a comparison to past
research. This material should be readily understandable to non-specialists.
Technical development, directed toward the specialist, should follow as
appropriate. The entire extended abstract must not exceed 2500 words or
10 double-spaced pages. Abstracts deviating significantly from these
guidelines will not be considered.
Meeting format: Authors of accepted papers will be expected to present
their work at the Symposium. The format of the meeting, including time
allocations for presentations and scheduling of sessions, will be
determined by the Program Committee. The Program Committee plans to accept
substantially more papers than in previous years and will compose a program
of parallel sessions, if warranted by the quality of the submitted papers.
Machtey Award for Best Student Paper: This award of up to $400, to help
defray the expenses for attending the Symposium, will be given for that
paper which the Program Committee judges to be the most outstanding paper
written solely by a student or students. To be considered for the award,
an abstract must be accompanied by a letter identifying all authors as
full-time students at the time of submission. At its discretion, the
Committee may decline to make the award or may split the award among two
or more papers.
Conference Chair: Program Committee Chair: Local Arrangements Chair:
Christos Papadimitriou Zvi Galil John Reif
EE&CS Department Computer Science Dept. Computer Science Dept.
University of California, 450 CS Building Duke University
San Diego Columbia University 04 North Build.
La Jolla, CA 92037 New York, NY 10027 Durham, NC 27706
Program Committee:
Alok Aggarwal Charles Leiserson Ray Strong
Eric Bach Rohit Parikh Robert Tarjan
Zvi Galil Nicholas Pippenger Mihalis Yannakakis
Juris Hartmanis Charles Rackoff Frances Yao
∂16-Dec-88 1448 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Distr.Comp.Workshop France, Corrected Version
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 16 Dec 88 14:48:47 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA19990; Fri, 16 Dec 88 14:48:19 PDT
Message-Id: <8812162248.AA19990@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Fri, 16 Dec 88 14:48:47 PST
Received: by BYUADMIN (Mailer R2.01A) id 2425; Fri, 16 Dec 88 15:45:55 MST
Date: Fri, 16 Dec 88 15:23:32 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Paul Vitanyi <paulv%CWI.NL@Forsythe.Stanford.EDU>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Paul Vitanyi <paulv%CWI.NL@Forsythe.Stanford.EDU>
Subject: Distr.Comp.Workshop France, Corrected Version
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
-------------------Corrected Version, Especially the Deadlines----------------
3rd INTERNATIONAL WORKSHOP
ON
DISTRIBUTED ALGORITHMS
Nice, September 26-28, 1989
Following the two first successful Workshops on Distributed Algo-
rithms in Ottawa (1985) and Amsterdam (1987), the third workshop
of this kind will be held at La Colle-sur-Loup, near Nice,
France. The workshop is intended to provide a forum for research-
ers and other parties interested in distributed algorithms on
communication networks, graphs and decentralized systems. The
aim is to present recent research results, explore directions for
future research, and identify common fundamental techniques that
serve as building blocks in many distributed algorithms.
Papers are solicited describing original results in all areas of
distributed algorithms and their applications, including e.g.
- distributed combinatorial algorithms
- distributed optimization algorithms
- distributed graph algorithms
- routing algorithms
- distributed algorithms for control and communication
- design of network protocols
- distributed database techniques
- algorithms for transaction management
- distributed algorithms for decentralized systems
- composition of distributed algorithms
- fail-safe and fault-tolerant distributed algorithms
- analysis of distributed algorithms
Intended contributors are invited to submit 8 copies of a full
paper (not exceeding 12 pages) to one of the scientific chairmen.
Jean-Claude Bermond Michel Raynal
LRI, Bat 490 IRISA
Universite Paris-Sud Campus de Beaulieu
91405 Orsay, France 35042 Rennes, France
e-mail bermond@FRLRI61.BITNET e-mail raynal@irisa.fr (uucp)
or bermond@lri.lri.fr (uucp)
Submissions must arrive before April 25, 1989. Authors will be
notified of acceptance or rejection by June 12, 1989. Proceedings
will be published, possibly in the Springer Verlag series Lec-
tures Notes in Computer Science. The final version of accepted
papers must arrive in camera-ready form before July 5, 1989, to
ensure the availability of the proceedings at the conference.
PROGRAM COMMITTEE
J-C Bermond (CNRS, LRI Orsay, France)
F. Mattern (U. Kaiserslautern, Germany)
M. Raynal (IRISA, Rennes, France)
N. Santoro (Carlton University, Ottawa, Canada and Universita` di
A. Segall (Technion, Haifa, Israel)
S. Toueg (Cornell University, Ithaca, USA)
P. Vitanyi (C.W.I. and University of Amsterdam, Amsterdam, Nether
Organizing chairman :
C. Lavault
INRIA
Domaine de Voluceau, Rocquencourt,
BP 105, 78153 Le Chesnay, France
e-mail lavault@seti.inria.fr
General Information
The workshop will be held at a French Holyday Center VVF, Chemin
de Montmeuille, 06480, La Colle-sur-Loup, France. This small
"provencal village" is located in a pine forest near Saint-Paul
de Vence, at 12 km from Nice Airport, 20 km from Cannes and 6 km
from the mediterranean sea. Further details will be mailed with
the second announcement. For further information contact either
J-C Bermond, C. Lavault, M. Raynal, or any member of the program
committee.
Please fill up this form and send it to:
J-C. Bermond, Informatique,
bat 490,Universite Paris-Sud
91405 ORSAY FRANCE
NAME:
ADDRESS:
e-mail address (if available ):
I intend to submit a paper: yes no maybe
I want to receive the second announcement: yes no
∂16-Dec-88 1547 HEMENWAY@Score.Stanford.EDU more proposals
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 16 Dec 88 15:46:45 PST
Mail-From: GENESERETH created at 16-Dec-88 15:03:37
Date: Fri 16 Dec 88 15:03:37-PST
From: Mike Genesereth <GENESERETH@Score.Stanford.EDU>
Subject: more proposals
To: hemenway@Score.Stanford.EDU
Message-ID: <12454975464.40.GENESERETH@Score.Stanford.EDU>
ReSent-Date: Fri 16 Dec 88 15:44:13-PST
ReSent-From: Sharon Hemenway <HEMENWAY@Score.Stanford.EDU>
ReSent-To: faculty@Score.Stanford.EDU
ReSent-Message-ID: <12454982856.38.HEMENWAY@Score.Stanford.EDU>
In its last meeting last year, the Phd program committee discussed
and approved a new requirement for students in the Phd program.
Before we can put this policy into effect, we need your approval
(or, at least, your lack of non-approval).
The proposed policy is an augmentation of the reasonable progress
guidelines. In particular, we propose to require that each student in
each quarter (except for first year students in their first quarters)
conduct the equivalent of at least 9 credit hours of research (whether
for credit, as a research assistant, or both). To attest to this
work, we propose to require that each student at the end of each
quarter (except the first quarter of the first year) submit a form
signed by faculty member in which the student describes the research
done that quarter to fulfill this requirement. The description need
be no more than a paragraph long.
There are two primary reasons for this little addition to our policy.
First of all, we believe that the increasing average time to
graduation is a result, in part, of the amount of time students spend
getting started on research. Many students do not even begin to
think about research until comps and sometimes quals are out of the
way. By starting on research (of even a simple sort) earlier
in their careers here, they will be ready to embark on thesis work earlier.
Of course, many students do start their research earlier, in which case
the proposed policy has no effect but causes no problems either.
The second reason for the policy (actually for the form) is to
help both students and faculty members to know who is supervising whom
during each quarter. In past review meetings, I have too frequently
seen faculty memebrs surprised about the students for whom they
are listed as advisors.
There was really very little disagreement with this proposal in our
discussion, mostly a discussion of the reporting format. We decided
on a 2 part form. First paragraph (written by student) agreed to by
both student and advisor at beginning of the quarter states
expectations for that quarter's research. Second paragraph (also
written by student) summarizes the research actually done. The work
actually done may depart from what was planned, so long as (1) it is
agreed to by the faculty member verbally and (2) it is RESEARCH. In
other words it is okay to change direction during the quarter, but it
is NOT okay to substitute other things for research. For example, not
acceptable is a paragraph that say ``Too busy because I was preparing
for the comps''.
Comments?
-------
∂16-Dec-88 1613 @Score.Stanford.EDU:jcm@ra.stanford.edu PhD proposal
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 16 Dec 88 16:13:23 PST
Received: from ra.stanford.edu by SCORE.STANFORD.EDU with TCP; Fri 16 Dec 88 16:10:38-PST
Received: by ra.stanford.edu (5.59/25-eef) id AA01885; Fri, 16 Dec 88 16:11:04 PDT
Date: Fri, 16 Dec 88 16:11:04 PDT
From: John Mitchell <jcm@ra.stanford.edu>
Message-Id: <8812170011.AA01885@ra.stanford.edu>
To: GENESERETH@Score
Subject: PhD proposal
Cc: faculty@score
Basically, I support the proposal. As I imagine implementing it
with my own students, I would ask for one or two sentences at
the beginning of the quarter (e.g., "I will read about category
theory and think about ...") and a statement of similar length
at the end. For beginning students, I would think that a list of
research seminars they intend to go to would be sufficient.
One part of the proposal that bothers me is the degree to which
the final paragraph is "required" to agree with the first.
If a student decides he/she is not interested in the things I
spend too much time on, that might be a valuable learning experience
(to be cliche). It is not clear from the proposal what happens if
a student ends up saying ``Too busy because I was preparing
for the comps''. Without some specific (and easy to implement)
standard course of action, this proposal might just end up creating
more work for everyone, with little useful result. (Is it necessary
to legislate "good practice" as part of departmental policy?)
I am also reminded of a student statement at one of the recent
student gripe sessions. Whoever it was said, "if you add more
research requirements [early on in the program], you had
better lessen the examination requirements." I can hear someone
saying this again.
John
∂16-Dec-88 1656 @Score.Stanford.EDU:baskett@SGI.COM [SLOAN@Score.Stanford.EDU: Theft]
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 16 Dec 88 16:56:39 PST
Received: from amadeus.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Fri 16 Dec 88 16:15:20-PST
Received: from SGI.COM by amadeus.Stanford.EDU (5.59/inc-1.0)
id AA09509; Fri, 16 Dec 88 16:15:34 PDT
Received: from baskett.sgi.com by sgi.sgi.com (5.52/880418.SGI)
(for jwilson@jaguar.stanford.edu) id AA26524; Fri, 16 Dec 88 16:15:04 PST
Received: by baskett.sgi.com (5.52/880418.SGI)
(for csd-list@score.stanford.edu) id AA10937; Fri, 16 Dec 88 16:14:59 PST
Message-Id: <8812170014.AA10937@baskett.sgi.com>
To: jwilson@jaguar.stanford.edu
From: mkatz@sesame.stanford.edu (Morris Katz)
Date: Fri, 16 Dec 88 12:52:02 PST
Cc: csd-list@score.stanford.edu
In-Reply-To: James Wilson's message of Thu, 15 Dec 88 17:08:04 PST <8812160108.AA04484@jaguar.Stanford.EDU>
Subject: [SLOAN@Score.Stanford.EDU: Theft]
Date: Thu, 15 Dec 88 17:08:04 PST
From: James Wilson <jwilson@jaguar.Stanford.EDU>
>From: Yvette Sloan <SLOAN@Score.Stanford.EDU>
Subject: Theft
Lynn Munday's wallet was stolen from her office this morning. This is a
reminder that if you must leave your office for any length of time, you
should close and lock your door. If you leave your door open, please
make sure your purse/wallet or other valuabe items are locked away in
your desk.
Merely locking things in ones office is not sufficient. A number of people,
myself included, have had things stolen from locked offices this term.
Unfortunately, it seems that one just can't store things one would like to keep
in MJH.
Morry Katz
katz@polya.stanford.edu
∂16-Dec-88 1821 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu #P-complete problem
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 16 Dec 88 18:21:37 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA00860; Fri, 16 Dec 88 18:21:04 PDT
Message-Id: <8812170221.AA00860@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Fri, 16 Dec 88 18:21:34 PST
Received: by BYUADMIN (Mailer R2.01A) id 7222; Fri, 16 Dec 88 19:19:45 MST
Date: Fri, 16 Dec 88 20:16:30 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Dan Pehoushek <pehoushe@GANG-OF-FOUR.STANFORD.EDU>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Dan Pehoushek <pehoushe@GANG-OF-FOUR.STANFORD.EDU>
Subject: #P-complete problem
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
Does anyone have an analytic calculation for the number of distinct
hamiltonian circuits in an nxn grid, when n is even? The grid looks
like a go board, except that a go board is 19x19. In general, this
problem is #P-complete.
The table I have so far compiled is:
#distinct solutions
2x2: 1
4x4: 6
6x6: 1072
8x8: 4638576
10x10: 467260456608
The table was derived experimentally, not analytically. Can anyone
verify this table?
By the way, the algorithm is definitely non-polynomial.
Thanks, in advance. -dan
∂16-Dec-88 1837 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu AMAST -- Second Call for Abstracts
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 16 Dec 88 18:37:29 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA01475; Fri, 16 Dec 88 18:37:00 PDT
Message-Id: <8812170237.AA01475@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Fri, 16 Dec 88 18:37:29 PST
Received: by BYUADMIN (Mailer R2.01A) id 7351; Fri, 16 Dec 88 19:34:39 MST
Date: Fri, 16 Dec 88 20:18:13 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Chic Rattray <cr%CS.STIR.AC.UK@Forsythe.Stanford.EDU>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Chic Rattray <cr%CS.STIR.AC.UK@Forsythe.Stanford.EDU>
Subject: AMAST -- Second Call for Abstracts
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
-------------------------------------------------------------------------
Second CALL FOR ABSTRACTS
International Conference on
Algebraic Methodology And Software Technology, AMAST
Iowa City, Iowa, May 22-24, 1989
The goal of the conference is to consolidate the trend of using algebraic
methodology as a foundation for software technology showing that universal
algebra provides a practical mathematical alternative to ad hoc approaches
used in software development. Both academia and industry are the benefici-
ary of such a formal foundation.
In order to achieve this goal, we plan to bring together leading research-
ers in mathematics and computer science on a common platform so that alge-
braic methodologies that can be used as a viable alternative to ad hoc
approaches for software development can be identified and the appropriate-
ness of such alternatives in view of actual implementations can be dis-
cussed.
Talks reporting research in algebra suitable as a foundation for software
technology as well as software technologies developed by means of algebraic
methodologies are welcome. We invite you to submit a two page abstract
(including a few citations of relevant work) of your talk to the address
AMAST CONFERENCE
Computer Science and Mathematics Departments
The University of Iowa
Iowa City, IA 52242, U.S.A.
Important due dates:
(1) Two page abstract submission by February 1, 1989.
(2) Notification of acceptance by March 15, 1989.
(3) Abbreviated four page camera ready papers to be published in proceed-
ing by April 10, 1989.
A special issue of the journal ``Theoretical Computer Science'' will
be dedicated to this conference and each participant will be invited to
submit a full paper for publication. In addition, four page abreviated
papers of the talks presented at the conference together with the invited
talks will be published in the proceedings that will be available to the
attendees upon their arrival in Iowa City. Further information can be
obtained from:
In Europe: In U.S.A: In Canada:
-------------------------------------------------------------------------
Prof. Maurice Nivat Prof. Eugene Madison, Math. Prof. Dan Ionescu
Universite Paris Prof. Teodor Rus, Comp.Sci. University of Ottawa
Place Jussieu University of Iowa Department of Elect. Eng.
75005 Paris, France Iowa City, IA 52242 770 King Edward, Ottawa
Phone: (1) 43259874 Phone: (319)-335-0694 Ont. Canada K1N 6N5
e-mail:rus@herky.cs.uiowa.edu Phone: (613)-564-2211
Prof Charles Rattray e-mail:
Computing Science Dpt. diopb@uottawa.BITNET
University of Stirling
Stirling, Scotland FK9 4LA.
e-mail: cr%compsci.stirling.ac.uk@nss.cs.ucl.ac.uk
The conference will be held at the Conference Center of the University of
Iowa. The Center for Conferences and Institutes will handle hotel reserva-
tion and registration. A block of rooms in the student dormitory will be
available at about $15 a night. A limited number of rooms at the Iowa
Memorial Union guest house at $40 a night are also reserved. For more
information contact:
Bobby C Davis
Center for Conferences and Institutes
The University of Iowa, Iowa Memorial Union
Iowa City, Iowa 52242
Phone (319)335-3231
Limousine services between Cedar Rapids airport and Iowa City are avail-
able.
∂17-Dec-88 1546 @Score.Stanford.EDU:RWF@SAIL.Stanford.EDU re: more proposals
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 17 Dec 88 15:46:08 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Sat 17 Dec 88 15:44:01-PST
Message-ID: <1PRyeA@SAIL.Stanford.EDU>
Date: 17 Dec 88 1544 PST
From: Robert W Floyd <RWF@SAIL.Stanford.EDU>
Subject: re: more proposals
To: GENESERETH@SCORE.STANFORD.EDU, hemenway@SCORE.STANFORD.EDU
CC: faculty@SCORE.STANFORD.EDU
[In reply to message from GENESERETH@Score.Stanford.EDU sent Fri 16 Dec 88 15:03:37-PST.]
The reasonable progress doctrines, which I believe have served us
well, are based on demonstrable accomplishments. The new proposal
is based on the undemonstrable. It is uncheckable and unenforceable.
It embodies the assumption that concentrating on one thing at a
time is never an optimal strategy for a student. I see no objection
to a student concentrating on preparation for the comp. Lack of
research experience will not limit comp performance, but lack of
breadth is likely to limit research performance. I understand
research advisors wanting to pledge their students to keep their
noses firmly to that particular grindstone, but even granting that,
what about students in a teaching quarter or onfellowship money?
I think there should be a reasonable demonstration that the proposal
is in the best interests of the students before giving it further
consideration.
∂18-Dec-88 0030 @polya.Stanford.EDU:pehoushe@Gang-of-Four.Stanford.EDU Re: #P-complete problem, the 12x12 case.
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 18 Dec 88 00:30:09 PST
Received: from Gang-of-Four.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA25086; Sun, 18 Dec 88 00:29:28 PDT
Received: by Gang-of-Four.Stanford.EDU (5.59/25-eef) id AA03224; Sun, 18 Dec 88 00:27:30 PST
Date: Sun, 18 Dec 88 00:27:30 PST
From: Dan Pehoushek <pehoushe@Gang-of-Four.Stanford.EDU>
Message-Id: <8812180827.AA03224@Gang-of-Four.Stanford.EDU>
To: THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu,
pehoushe@GANG-OF-FOUR.STANFORD.EDU
Cc: aflb-tn@POLYA.STANFORD.EDU
In-Reply-To: Dan Pehoushek's message of Fri, 16 Dec 88 20:16:30 CST <8812170221.AA00860@polya.Stanford.EDU>
Subject: Re: #P-complete problem, the 12x12 case.
The number of hamiltonian circuits in an nxn grid for
the following cases has been found:
#distinct solutions
2x2: 1
4x4: 6
6x6: 1072 (10 seconds)
8x8: 4638576 (2 minutes)
10x10: 467260456608 (30 minutes)
12x12 1076226888605605706 (5 hours 40 minutes)
This last value was calculated in 5 hours and 40 minutes, on a single
processor of an Alliant FX-8, in Lucid Common Lisp, making heavy use
of Bignums.
I probably shouldn't be posting this (but it's exciting), because I'm
not quite ready to field many questions about it. Also, there may be
a simple analytic solution to the problem.
The algorithm is non-polynomial in general. It is useful for finding
the minimum weighted circuit, and for counting the number of circuits,
in a certain class of sparse, skinny graphs (skinny in the sense of
having small Tree-width, or small "matrix bandwidth"), although nxn
grids are not exactly skinny. -Dan Pehoushek
∂18-Dec-88 1603 LOGMTC-mailer beeson
Received: from ra.stanford.edu by SAIL.Stanford.EDU with TCP; 18 Dec 88 16:03:31 PST
Received: by ra.stanford.edu (5.59/25-eef) id AA02962; Sun, 18 Dec 88 16:02:54 PDT
Date: Sun, 18 Dec 88 16:02:54 PDT
From: John Mitchell <jcm@ra.stanford.edu>
Message-Id: <8812190002.AA02962@ra.stanford.edu>
To: logmtc@sail
Subject: beeson
Does anyone have a phone number of email address
for Michael Beeson? Sorry to bother those of you
who do not.
John
∂19-Dec-88 0922 STAGER@Score.Stanford.EDU Another Winter Quarter AI Class of Interest
Received: from csli.Stanford.EDU by SAIL.Stanford.EDU with TCP; 19 Dec 88 09:22:21 PST
Received: from Score.Stanford.EDU by csli.Stanford.EDU (4.0/4.7); Mon, 19 Dec 88 09:19:31 PST
Date: Mon 19 Dec 88 09:20:04-PST
From: Claire Stager <STAGER@Score.Stanford.EDU>
Subject: Another Winter Quarter AI Class of Interest
To: ssp-faculty@CSLI.Stanford.EDU, ssp-students@CSLI.Stanford.EDU
Office: CS-TAC 29, 723-6094
Message-Id: <12455699355.17.STAGER@Score.Stanford.EDU>
CS356 REASONING ABOUT KNOWLEDGE
Knowledge plays a crucial role in distributed systems, cryptography, and
artificial intelligence. Material examines formalizing reasoning about
knowledge and the extent to which knowledge is applicable to the areas above.
Issues: common knowledge, probabilistic knowledge, applying knowledge to
analyzing distributed systems, attainable states of knowledge, and modeling
resource-bounded reasoning.
Prerequisites: Mathematical maturity and a acquaintance with propositional
logic.
Instructor: Joe Halpern
Fridays 2:15-4:05 in 260-264
1-3 units
-------
∂19-Dec-88 0924 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Re: #P-complete problem, the 12x12 case.
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 19 Dec 88 09:23:10 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA15674; Mon, 19 Dec 88 09:22:37 PDT
Message-Id: <8812191722.AA15674@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Mon, 19 Dec 88 09:23:01 PST
Received: by BYUADMIN (Mailer R2.01A) id 3365; Mon, 19 Dec 88 10:21:06 MST
Date: Mon, 19 Dec 88 09:51:02 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Dan Pehoushek <pehoushe@GANG-OF-FOUR.STANFORD.EDU>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Dan Pehoushek <pehoushe@GANG-OF-FOUR.STANFORD.EDU>
Subject: Re: #P-complete problem, the 12x12 case.
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
The number of hamiltonian circuits in an nxn grid for
the following cases has been found:
#distinct solutions
2x2: 1
4x4: 6
6x6: 1072 (10 seconds)
8x8: 4638576 (2 minutes)
10x10: 467260456608 (30 minutes)
12x12 1076226888605605706 (5 hours 40 minutes)
This last value was calculated in 5 hours and 40 minutes, on a single
processor of an Alliant FX-8, in Lucid Common Lisp, making heavy use
of Bignums.
I probably shouldn't be posting this (but it's exciting), because I'm
not quite ready to field many questions about it. Also, there may be
a simple analytic solution to the problem.
The algorithm is non-polynomial in general. It is useful for finding
the minimum weighted circuit, and for counting the number of circuits,
in a certain class of sparse, skinny graphs (skinny in the sense of
having small Tree-width, or small "matrix bandwidth"), although nxn
grids are not exactly skinny. -Dan Pehoushek
∂19-Dec-88 0930 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Bar-Ilan Symposium Announcement
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 19 Dec 88 09:30:12 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA15944; Mon, 19 Dec 88 09:29:48 PDT
Message-Id: <8812191729.AA15944@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Mon, 19 Dec 88 09:30:14 PST
Received: by BYUADMIN (Mailer R2.01A) id 3671; Mon, 19 Dec 88 10:26:56 MST
Date: Mon, 19 Dec 88 10:01:49 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Martin Charles Golumbic <GOLUMBIC%ISRAEARN.BITNET@forsythe.stanford.edu>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Martin Charles Golumbic <GOLUMBIC%ISRAEARN.BITNET@forsythe.stanford.edu>
Subject: Bar-Ilan Symposium Announcement
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
-------------------------------------------------------------------------
Bar-Ilan Symposium on the
Foundations of Artificial Intelligence
19-21 June 1989
Sponsored by the Research Institute for the Mathematical Sciences
Bar-Ilan University, Ramat Gan, Israel
Symposium Chair: Martin Golumbic
Organizing Chair: Ariel Frank
Program Committee:
Yaacov Choueka (Bar-Ilan University)
Rina Dechter (Technion)
Ariel Frank (Bar-Ilan University)
Martin Golumbic (IBM Israel Scientific Center)
David Harel (Weizmann Institute)
Daniel Lehmann (Hebrew University)
Judea Pearl (UCLA)
Uri Schild (Bar-Ilan University)
Micha Sharir (New York University)
Jonathan Stavi (Bar-Ilan University)
Bar-Ilan University, through its Center for Applied Logic and Artificial
Intelligence (CALAI) of the Research Institute for the Mathematical
Sciences, is pleased to announce its first "Symposium on the Foundations
of Artificial Intelligence" to be held June 19-21, 1989. The Symposium
will be international in scope, with invited lectures by several leading
researchers from Israel and abroad. Although a small meeting is
anticipated, with selected speakers and no parallel sessions, an attempt
will be made to open attendance to all interested research scientists.
The Bar-Ilan Symposium on the Foundations of Artificial Intelligence is
intended to become a bi-annual event which will focus on a range of
topics of concern to scholars applying quantitative, combinatorial,
logical, algebraic and algorithmic methods to AI areas as diverse as
decision support, automatic reasoning, knowledge-based systems, machine
learning, computer vision, and robotics. These include applied
logicians, algorithms and complexity researchers, AI theorists, and
applications specialists using mathematical methods. By sponsoring such
symposia, we hope to influence the spawning of new areas of applied
mathematics and the strengthening of the scientific underpinnings of
artificial intelligence.
...................... INVITED LECTURES ......................
Ron Rivest (MIT) will lecture on
"Recent Developments in Machine Learning Theory".
Joe Halpern (IBM Research) will lecture on
"Reasoning about Knowledge and Probability".
Additional invited speakers will be announced at a later date.
...................... CALL FOR PAPERS .......................
High quality research papers are solicited for consideration by the
program committee to be presented at the Symposium. Submissions of
extended abstracts of 4-10 pages or full papers must arrive by
15 March 1989 and should be sent in triplicate to:
Prof. Martin Golumbic
IBM Israel Scientific Center
Technion City
Haifa, Israel
Decisions on presentations will be made on or before 15 April 1989.
.................... REFEREED PROCEEDINGS ....................
At the conclusion of the Symposium, all participants are invited to
submit full length papers which will be refereed according the usual
standard of the best professional journals, and those accepted will be
published in a separate, special issue of the Annals of Mathematics and
Artificial Intelligence as a permanent record of the Symposium.
For further information on the Symposium and to receive additional
announcements, contact
Dr. Ariel Frank, BISFAI-89
Department of Mathematics and Computer Science
Bar-Ilan University
Ramat Gan, ISRAEL
(email: ariel@bimacs.bitnet)
∂19-Dec-88 0940 @Score.Stanford.EDU:jlh@vsop.Stanford.EDU Re: more proposals
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 19 Dec 88 09:40:49 PST
Received: from vsop.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Mon 19 Dec 88 09:38:32-PST
Received: from LOCALHOST by vsop.Stanford.EDU (5.59/inc-1.0)
id AA02053; Mon, 19 Dec 88 09:28:49 PDT
Message-Id: <8812191728.AA02053@vsop.Stanford.EDU>
To: Mike Genesereth <GENESERETH@Score.Stanford.EDU>
Cc: faculty@score.stanford.edu, hemenway@Score.Stanford.EDU
Subject: Re: more proposals
In-Reply-To: Your message of Fri, 16 Dec 88 15:03:37 -0800.
<12454975464.40.GENESERETH@Score.Stanford.EDU>
Date: Mon, 19 Dec 88 09:28:44 PST
From: jlh@vsop.Stanford.EDU
I believe that continually increasing the requirements for our PhD
students is a major contributor to increasing the time to graduation. For
example, the comp has become HARDER to pass than earlier, despite the
fact that the students are better prepared (i.e. they know more CS than
they did 5-10 years ago).
I don't want students dragging the comp into their second or third
year. If a first year student tells me she was too busy preparing for
the comps to get much else done, that's fine with me. Why can't the
advisor approve or disapprove what the student has written without some
other judgement about what is or isn't a valid way to spend time?
I also believe that our present mentor system is too "loose" and that a
traditional advisor relationship, but without any long-term commitment
would serve the students better.
John
P.S. As CS matures, some increase in the time to complete a PhD is
probably inevitable. This is certainly true in systems.
∂19-Dec-88 0952 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Capital City Conference
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 19 Dec 88 09:52:08 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA16690; Mon, 19 Dec 88 09:51:44 PDT
Message-Id: <8812191751.AA16690@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Mon, 19 Dec 88 09:52:09 PST
Received: by BYUADMIN (Mailer R2.01A) id 4322; Mon, 19 Dec 88 10:46:36 MST
Date: Mon, 19 Dec 88 10:03:45 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Bob Robinson <rwr%GATECH.EDU@Forsythe.Stanford.EDU>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Bob Robinson <rwr%GATECH.EDU@Forsythe.Stanford.EDU>
Subject: Capital City Conference
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
Capital City Conference on
COMBINATORICS and THEORETICAL COMPUTER SCIENCE
MAY 22-26, 1989
at
The George Washington University, Washington, D.C.
announcement
call for papers
registration information
sponsored by the National Science Foundation
and The George Washington University
The aim of the conference is to offer a setting for relaxed and
productive professional interaction between combinatorists and
theoretical computer scientists. We will aim for substantive rather
than numerous talks, in an effort to maximize information content and
depth, and to allow time for discussions among the participants.
We hope that the conference activities will expand the participants'
research interests across the boundaries of the two disciplines, and
lead to increased collaboration between members of the two communities.
TOPICS AND PRINCIPAL SPEAKERS
graph theory
Laszlo Lovasz, Princeton University and Eotvos Lorand University
"Communication Complexity of Graph Problems"
May 22, 11:00 a.m. and 2:00 p.m., and May 23, 11 a.m.
algebraic combinatorics
Richard Stanley, Massachusetts Institute of Technology
"Applications of Algebra to Combinatorics"
May 24, 11:00 a.m. and 2:00 p.m., and May 25, 11:00 a.m.
algorithms and complexity
Richard Karp, University of California, Berkeley
"Randomized Algorithms"
May 25, 2:00 p.m. and May 26, 11:00 a.m. and 2:00 p.m.
Each principal speaker will give three lectures which will
overview the topic and will highlight major results, techniques, and open
problems. The principal speakers will be asked to provide a list of
suggested reading which will be made available to the interested
preregistrants before the time of the conference.
CALL FOR PAPERS
We will schedule 25-minute contributed talks on subjects directly
related to the conference topics and consistent with the theme of
the conference. We will do our best to accommodate
contributed talks to the extent permitted by the intent to give sufficient
time to each talk, and to have time for informal discussions among
the participants.
If you are interested in giving a contributed talk, please submit
before March 1, 1989 a two-page abstract describing the subject, background,
and main results of your paper .
In the case of joint work, please indicate which of the authors will
give the talk.
A special issue of Discrete Applied Mathematics and/or Annals of
Discrete Mathematics will be devoted to the refereed proceedings
of this conference. Complete texts of submissions must reach
Rodica Simion by June 15, 1989.
PROBLEM SESSION, Thursday, May 25, 7:30 p.m.
We invite contributions of open problems which will
generate discussions and collaborations. Please send problems,
including references, by March 1, 1989. Preregistered participants
will receive the list of problems before the beginning of the conference.
SPECIAL SESSION, Wednesday, May 24, 7:30 p.m.
Interested participants are invited to an evening discussion
on topics including funding sources for research in combinatorics and
theoretical computer science, and educational issues in combinatorics
and computer science. If you wish to suggest other discussion topics,
please do so by March 1, 1989.
PARTICIPANTS SUPPORT
Limited funds are available for partial support of participants,
in particular for graduate students.
Selection for the graduate student awards will be made based on a
description of the student's research interests and work, and two letters
of recommendation.
For full consideration, applications should be received by
March 7, 1989.
LOCAL INFORMATION
The conference talks will begin on May 22, at 9:00 a.m.,
in Marvin Center, room 402. The registration desk will open at 8:30 a.m.,
in room 410. Marvin Center is located on the GWU campus at 800 21st
Street, N.W.
We have reserved blocks of rooms at reduced rates, under
"GWU Math Dept Conference", at several hotels which are
within 10-15 min.\ walking distance of the metro station and campus.
River Inn, 924 25th Street, N.W., (202) 337-7600;$95 single/double.
Georgetown Marbury Hotel, 3000 M Street, N.W.,(202) 726-5000;
$80 single/double.
State Plaza Hotel, 2117 E Street, N.W., (202) 861-8200 or
1-800-424-2859; mention "group number 2815"; $85 single, $95 double.
Lombardy Hotel, 2019 I Street, N.W., (202) 828-2600;
$80 single, $90 double.
Please call the hotel directly and guarantee your
reservations by April 21, 1989.
After this date, the rooms will be released, and the regular rates will
apply to available rooms.
On a first come first served basis, until April 15, 1989,
rooms can be reserved in Thurston Hall, 1900 F Street, N.W.
This is a GWU dormitory with air-conditioned rooms, private bath,
and sheets/towels/etc. provided. The information on the registration
form is particularly important in signing up for dormitory space.
The rates are \$30 for single, \$20 for double occupancy.
>From National Airport, take the metro Blue Line to the GWU/Foggy
Bottom stop, which is at 23rd St. and I St., N.W. Cab rides from
National and Dulles Airports are approx. $10 and $30, resp. From
Union Station, take the metro Red Line to Metro Center, change to the Blue
Line, and get off at GWU/Foggy Bottom. Cab rides from Union Station are
approx. $5.
May weather in Washington is pleasant, with average highs of
68F and lows of 58F. May is also a popular camping time.
Attractive camping facilities exist at Greenbelt Park (National Park
Service), (301) 344-3948.
REGISTRATION
To register, please send your completed registration form, or facsimile,
and check to the address on the form.
Refunds, less \$10, will be made if a written request is received by
May 10, 1989.
MAIL and FURTHER INQUIRIES
Regarding the problem/special session, please contact
Louis Shapiro, Mathematics Department, Howard University, Washington,
D.C. 20059, (202) 636-7125; regarding other matters, please contact Rodica
Simion, Department of Mathematics, George Washington University, Washington,
D.C. 20052; (202) 994-6238; simion@gwuvm.bitnet
REGISTRATION FORM
The following information will be very helpful in planning the
conference events.
Full name .................................................
.......................................... Title .............................
Business address ........................................
........................................ Phone (B).........................
......................................................
.................................................... Phone (H)................
City .......................... State ...... Zip Code ............
e-mail address ................................................................
Registration fee: $80 if received by April 15, 1989;
$95 after April 15, 1989. Amount enclosed $ ...............
During the conference I will stay at Marbury ........ River Inn ........
Lombardy ......... State Plaza ..........
Other ..........................................
Arrival time ........................
Departure time .........................
I wish to request a dormitory room.
I wish to share a room: yes .... no .... no preference ......
Sex F ........ M ........
My roommate should be smoker ...... non-smoker ....... no preference .......
For dormitory space, please send a separate check for the full
amount. Please make your check(s) payable to The George Washington
University, and mail your check(s) and registration form to Rodica Simion,
Department of Mathematics, George Washington University, Washington,
D.C. 20052.
chairperson
Rodica Simion, George Washington University
program committee
Ira Gessel, Brandeis University
Robert W. Robinson, University of Georgia
Michael Saks, University of California, San Diego
organizing committee
Hosam Mahmoud, George Washington University
Louis Shapiro, Howard University
Dan Ullman, George Washington University
∂19-Dec-88 1030 DEWERK@Score.Stanford.EDU CS-TAC Shutdown.
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 19 Dec 88 10:30:17 PST
Date: Mon 19 Dec 88 10:21:58-PST
From: Gerda de Werk <DEWERK@Score.Stanford.EDU>
Subject: CS-TAC Shutdown.
To: csd-list@Score.Stanford.EDU
cc: dewerk@Score.Stanford.EDU
Message-ID: <12455710623.29.DEWERK@Score.Stanford.EDU>
The CS-TAC offices will be closed 12/20-12/23, while power for the
Tresidder deck addition is installed. CS-TAC offices, LOTS-II, the
Recreation Desk, and the Coffee House will be closed from 7:30am
Tuesday, 12/20, until Friday afternoon (12/23).
Please send electronic mail to CS-TAC occupants if you need to
communicate with them during this time.
Gerda
-------
∂19-Dec-88 1114 @polya.Stanford.EDU:mendel@ois.db.toronto.edu Positions in Toronto
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 19 Dec 88 11:14:40 PST
Received: from [128.100.1.161] by polya.Stanford.EDU (5.59/25-eef) id AA20419; Mon, 19 Dec 88 11:12:46 PDT
Received: by ois.db.toronto.edu id 9269; Mon, 19 Dec 88 14:11:48 EST
From: Alberto Mendelzon <mendel@db.toronto.edu>
To: nail@navajo.stanford.edu
Subject: Positions in Toronto
Message-Id: <88Dec19.141148est.9269@ois.db.toronto.edu>
Date: Mon, 19 Dec 88 14:11:46 EST
The Computer Science Department at the University
of Toronto is looking for research associates
and postdoctoral fellows. The area of
databases/knowledge bases is of particular interest.
There is also a tenure-stream faculty appointment to
be made jointly to the Faculty of Library and Information
Sciences and the Department of Computer Science.
For more information, contact:
Alberto Mendelzon
mendel@db.toronto.edu
416-978-2952
Or apply directly to:
Prof. Derek Corneil
Department of Computer Science
University of Toronto
Toronto, Ontario M5S 1A4
Canada
∂19-Dec-88 1426 @Score.Stanford.EDU:dill@amadeus.Stanford.EDU Re: more proposals
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 19 Dec 88 14:26:32 PST
Received: from amadeus.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Mon 19 Dec 88 14:23:34-PST
Received: by amadeus.Stanford.EDU (5.59/inc-1.0)
id AA13195; Mon, 19 Dec 88 14:23:32 PDT
Date: Mon, 19 Dec 88 14:23:32 PDT
From: dill@amadeus.Stanford.EDU (David Dill)
Message-Id: <8812192223.AA13195@amadeus.Stanford.EDU>
To: faculty@score.stanford.edu
Subject: Re: more proposals
GETTING AN EARLY START IN RESEARCH
We ought to be structuring the PhD program to maximize the quality and
quantity of the research that the students do during their time here.
It is important for students to start research early for
several reasons:
* Getting up to speed in a research area takes time (typically a
year or so).
* Some students spend a great deal of time shopping for a research
area they are interested in. The best way to decide interestedness
(or develop it) is to work on research problems in an area.
* It takes many students some time to shift gears from meeting
preset goals to setting their own, and from understanding to
creativity.
* Some students are ultimately not interested in doing research
(even if they think they are). The sooner they discover this,
the less of everyone's time they will waste.
As nearly as I can tell from talking to some of the students, the
message that they are getting is that research in the first year is
neither required nor rewarded -- the only things that matter are the
comps. This is the wrong message for us to be sending. Their
primary purpose here is to do research and become researchers.
Supervising first year students is an investment that may pay off
later, but it is important for the health of the program. (Although
in some cases first year students will be very productive.)
RESEARCH REQUIREMENT
If we want students to do some research in addition to the comps, and
the comps are required, there should also be a research requirement
(otherwise, it is easy to see which activity will go by the wayside).
I have talked to several students about why the first year students
don't get involved in research, and sometimes don't even talk to
faculty. The answer in both cases was: "They're scared. They hear
about students getting booted because they didn't pass the comps."
Even if students are chafing at the bit to get start on research, they
don't, because of this perception.
This is not to say that comps are unimportant. As Bob Floyd has
pointed out, understanding (much of) the material on the comps is
crucial for sustaining research. I believe that students should
be spending the majority of their time on comps. But the
majority of their time is not ALL of their time.
It is also unreasonable to expect that all students will have, for
example, publications at the end of their first year. I think it IS
reasonable to expect that students have some insights about
interesting research problems in an area, some background as to what
has already been done, and some ideas about what they would like to
do. Their advisor would be the best judge of this sort of progress.
RESEARCH ADVISORS
It is unreasonable to have a research requirement unless students have
research advisors. I am very unhappy with the current mentor system.
The message to the students is that a mentor is something less than an
advisor. Perhaps the message to the faculty is the same -- that
serving as a mentor should not be as great a commitment as serving as
an research advisor.
Students often do not realize the importance of advisors.
(I speak from personal experience.)
I was appalled when a second year student told me that since he
was on a fellowship, he didn't need an advisor. He planned
to "shop around" for an interesting research project while he
worked on his remaining comps and qual. I have a feeling that
he is not shopping very intensely. Instead, he is falling through
the cracks.
Students should be required to have advisors, not mentors,
as soon as is reasonable, whether they have fellowships or not.
COMPS
If we add some requirements in the first year, we should remove some
others. The comps are an obvious target.
The basic arguments for the comps, that our students have a broader
background than those of some other schools, and that a good general
grounding in computer science is essential for sustained research, are
valid. However, I feel that they can be somewhat scaled back with
good effect.
There is obviously a tradeoff between time spent on the comps and time
spent on research. (I resented it when my student had to study for
the Graphics comp instead of reading about his area or helping me
with a paper.) However, I don't see that the forces determining
the scope and size of the comps reflect this tradeoff.
PROPOSALS
The research requirement proposal is a good start. It should be
coupled with the more important requirement that every student have a
faculty research advisor (say, by the end of the first quarter). No
more mentors. Furthermore, it is essential that the comps be scaled
back significantly. This means reducing the size of the exams in some
cases and reducing the readings in others.
Finally, students should be fill out a short form at the end of the
first year (maybe in the middle of the year, too) saying what they
have accomplished in different areas: exams passed, papers published,
research they have worked on, and other. Students should understand
that if there are other ways to excel in their first year than
doing exams, and that suboptimal performance in one area can
be compensated for by better performance in other areas.
Ideally, this would introduce more flexibility into the program.
Instead of being forced to devote all their time to the comps,
students can spend some on research and still no fear being
ejected from the program.
STUDENT INPUT
I'm worried that the students may not have sufficient input into this
proposal because of the timing, particularly if it is voted on in the
faculty meeting at the beginning of the Winter quarter.
SUMMARY
The current hidden curriculum strongly encourages first-year PhD
students to be nerds. In many cases, this reinforces tendencies
ingrained by years of schooling. Instead, we ought to be inculcating
more adult values: that we are judged not on our grades and exams,
but on our original contributions.
∂19-Dec-88 1519 @Score.Stanford.EDU:dill@amadeus.Stanford.EDU PhD research discussion
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 19 Dec 88 15:19:51 PST
Received: from amadeus.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Mon 19 Dec 88 15:17:08-PST
Received: by amadeus.Stanford.EDU (5.59/inc-1.0)
id AA13322; Mon, 19 Dec 88 15:17:10 PDT
Date: Mon, 19 Dec 88 15:17:10 PDT
From: dill@amadeus.Stanford.EDU (David Dill)
Message-Id: <8812192317.AA13322@amadeus.Stanford.EDU>
To: faculty@score.stanford.edu
Subject: PhD research discussion
Is this a private discussion among us faculty? Perhaps we should
post it on the Phd-program bboard?
∂19-Dec-88 1621 @Score.Stanford.EDU:wheaton@athena.stanford.edu visitor
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 19 Dec 88 16:21:54 PST
Received: from athena.stanford.edu by SCORE.STANFORD.EDU with TCP; Mon 19 Dec 88 16:19:15-PST
Received: by athena.stanford.edu (5.59/25-eef) id AA03476; Mon, 19 Dec 88 16:19:18 PDT
Date: Mon, 19 Dec 88 16:19:18 PDT
From: George Wheaton <wheaton@athena.stanford.edu>
Message-Id: <8812200019.AA03476@athena.stanford.edu>
To: faculty@score
Subject: visitor
Stacey Green of the North East Asia Forum called to say that a Mr.
Sekizawa, an Executive Director of Fujitsu, will be here one day
between Jan 10 & 12. He, and the company, are supporters of Stanford.
He would like to meet with people working in image processing and
graphics.
Anyone interested and available?
gw
∂19-Dec-88 1637 @Score.Stanford.EDU:HALPERN@IBM.COM Re: research
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 19 Dec 88 16:37:42 PST
Received: from IBM.COM by SCORE.STANFORD.EDU with TCP; Mon 19 Dec 88 16:35:10-PST
Date: 19 Dec 88 15:03:18 PST
From: "Joseph Y. Halpern" <HALPERN@ibm.com>
To: faculty@score.stanford.edu
Message-Id: <121988.150321.halpern@ibm.com>
Subject: Re: research
Although I'm somewhat of an outsider to Stanford, I felt inspired
by David Dill's comments to comment myself on the issue of students
doing research. At the risk of putting my foot in my mouth, let me
say that I have been struck be the relatively low impact Stanford
students have had in the theory community in the past 5-7 years. I
don't think it would be hard to reel off 10 Berkeley or MIT students
who have had a major impact on the STOC/FOCS community in that time
period; the same certainly can't be said for Stanford. Since I don't
think that Stanford starts with students who are any less bright than
those at MIT or Berkeley, so we have to look elsewhere for the causes.
Part of the problem very recently has been lack of advisors, but I
don't think that's the whole problem (Berkeley did pretty well with
just Karp and Blum for a long time). I would guess that the reason
lies much more in the greater emphasis on research at MIT and Berkeley.
Certainly at MIT, just before the FOCS/STOC deadlines, you see lots
of students slaving away at papers they want to submit (often with
only student coauthors). I suspect the same is true at Berkeley
(where students have historically worked with each other, due to the
lack of faculty advisors). Obviously one can't change a culture
overnight, but I would like to make two suggestions as to what can
be done. The first is to de-emphasize examwork or coursework (including
the comps). (By "de-emphasize" I mean cut down on the requirements.)
Although having a broad understanding of the field is clearly an asset
to doing research, I believe that the experience of doing research is as
important an asset, and one that gets relatively much less attention,
especially at Stanford. The second is to de-emphasize
the view of a thesis as a magnum opus. We should encourage students to
think in terms of writing papers, whether or not they are related, rather
than to think in terms of writing a thesis. My own thesis consisted of
four papers stapled together; I don't think my research career has suffered
as a result. I write papers now; not theses. The current emphasis
on writing a big thesis tends to discourage students from working
on problems that aren't part of a "big question" that can be a thesis.
I also agree that the students should be involved with this
discussion. Since I'm not sure of the appropriate address to mail
this to in order to include students, I hope that someone can post the
message on the appropriate bboard for me. Thanks.
-- Joe
∂19-Dec-88 2207 @Score.Stanford.EDU:jcm@ra.stanford.edu research
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 19 Dec 88 22:07:14 PST
Received: from ra.stanford.edu by SCORE.STANFORD.EDU with TCP; Mon 19 Dec 88 22:05:08-PST
Received: by ra.stanford.edu (5.59/25-eef) id AA03855; Mon, 19 Dec 88 22:05:09 PDT
Date: Mon, 19 Dec 88 22:05:09 PDT
From: John Mitchell <jcm@ra.stanford.edu>
Message-Id: <8812200605.AA03855@ra.stanford.edu>
To: faculty@score
Subject: research
I basically agree with Joe Halpern. I suppose this
is not surprising, given that we had the same advisor and
4-paper staple-thesis approach. (I tried to follow his example.)
Two factors that contributed to my immediate involvment in research
at MIT were the MS thesis requirement, and the lack of emphasis on
written exams. If the current proposal to require quarterly research
contracts were balanced with a change in the comp grading procedure,
the net effect might be to encourage early research in a similar way.
At the time I was a student, everyone took a written exam,
but no one passed or failed. Grades were interpreted by an oral exam
committee that also reviewed MS thesis results, or progress
if the thesis was not completed after 3 semesters.
I also took classes in which it was typical for at
least one or two students to produce publishable papers as term
projects. I particularly remeber a database class where Christos
said that the year (or two years?) before, Kanellakis had proved
something or other in his term paper. We all felt challenged to
prove something more difficult in our own term papers, to the
extent that I skipped about 50% of the remaining lectures once
I had chosen a problem to work on. While I missed out on some of
the course material, I read quite a bit about the problem I was
working on. So I believe it all balanced out in the end.
(This may also apply to cutting comp requirements and increasing
research emphasis.)
Many students here seem perfectly content,
even in their third year, to dabble about without writing anything up.
Perhaps this is attributable to some "find yourself" California search
ethic, but it is more likely that students are not getting the proper
guidance or encouragement. Most would like to be doing reseach,
but don't seem to think they know enough to start right now.
In thinking about this, I am reminded of the session with
theory students during my interview here two years ago.
I asked them what their reactions would be if I
suggested a topic for a joint paper. Most either said they couldn't do
this now, because they had to study for comps or quals or some such
thing, or that they were surprised that as a faculty member I would
consider co-authoring a paper with a student. While I know that
faculty here do write papers with students, I think this is an
interesting indication of how some students perceive the possibility.
∂19-Dec-88 2233 @Score.Stanford.EDU:cheriton@Pescadero.Stanford.EDU Re: research
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 19 Dec 88 22:33:06 PST
Received: from Pescadero.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Mon 19 Dec 88 22:31:23-PST
Received: by Pescadero.Stanford.EDU (5.59/25-eef) id AA06458; Mon, 19 Dec 88 22:33:57 PDT
Date: Mon, 19 Dec 88 22:33:57 PDT
From: David Cheriton <cheriton@Pescadero.Stanford.EDU>
Message-Id: <8812200633.AA06458@Pescadero.Stanford.EDU>
To: faculty@score, jcm@ra.stanford.edu
Subject: Re: research
In-Reply-To: <8812200605.AA03855@ra.stanford.edu> from John Mitchell
<jcm@ra.stanford.edu> on Mon, 19 Dec 88 22:05:09 PDT
I really object to this discussion - it's too frightening! If we eliminated
the comps then:
1) The students would have more time to do research.
2) The faculty would have more time to advise and work with students.
3) The students would likely graduate sooner and publications coming out
of the dept. would goo up, making it look like we were working harder
to the dean and everyone else, but at something we actually enjoyed.
Isnt there a less dangerous idea to discuss?
∂19-Dec-88 2242 X3J13-mailer Corrections to the ISO Report
Received: from lucid.com by SAIL.Stanford.EDU with TCP; 19 Dec 88 22:42:08 PST
Received: from challenger ([192.9.200.17]) by heavens-gate.lucid.com id AA03191g; Mon, 19 Dec 88 22:39:08 PST
Received: by challenger id AA19722g; Mon, 19 Dec 88 22:35:13 PST
Date: Mon, 19 Dec 88 22:35:13 PST
From: Richard P. Gabriel <rpg@lucid.com>
Message-Id: <8812200635.AA19722@challenger>
To: x3j13@sail.stanford.edu
Subject: Corrections to the ISO Report
Colleagues:
There have been a couple of questions directed privately to me about
my ISO meeting report. I think the answers are of general interest, so
I will direct them to the X3J13 mailing list.
1. The first regards the Japanese position on CLOS. I believe there
are two concerns that the Japanese have: one is that the CLOS
specification is difficult to read and thus is difficult to evaluate;
the other is that CLOS is comparatively new and represents relatively
recent research, which leads them to believe that it would be good to
gather some practical experience with it before international
standardization. I believe this is a reasonable position. I believe
the US must make its case convincingly for the Japanese to agree to
adopting CLOS into a near-term international standard.
2. There was a wording problem with my comments on the AFNOR
delegation's response to the US position. The US indeed voted to
accept the New Work Item that is the basis for the establishment of
WG16. At the first meeting AFNOR proposed a work plan (which I
inaccurately referred to as a ``work item''). The proposed work plan
is to adopt Common Lisp as the starting point for IsLisp but to try to
alter Common Lisp in certain ways. The structure of the work plan is
to identify features of Common Lisp that WG16 should alter and to
associate with the feature a default. For each such feature, if no
acceptable technical alternative to the feature is determined within a
reasonable time period, the default replaces the feature. For
example, the package system is on the list of features to alter, and
if no better solution than the current Common Lisp package system is
determined, the default is to provide only a flat namespace - that is,
the default is no package system. The US did not agree to this work
plan, and the evidence for this is simply that the acceptability of
the work plan never came to a vote at WG16. Therefore, the US did not
change its position regarding this work plan, and the current US
position is the first time the US took any position with regard to the
work plan for WG16 proposed by the AFNOR delegation.
When the AFNOR delegation stated that the US position represented a
``preposterous'' change in position by the US, I interpreted their
statement as a response to an incorrectly perceived change in position
by the US regarding the never-agreed-on AFNOR-proposed work plan. The
only alternative interpretation I could think of is that the AFNOR
delegation incorrectly perceived a change in position by the US to the
New Work Item that defines the goal of WG16. Since the latter
interpretation is illogical, I adopted the other one.
3. There was a minor error in my report on the presentation by Mr
Kurokowa. The following is the amended section (the word that should
be deleted is in [square brackets]):
``Mr Kurokowa presented a report on Japanese activity on provisions
within [Common] Lisp for international character sets. Thom Linden
presented the latest X3J13 work on the same topic. In addition, the
U.S. was asked to present the current WG16 status on character
handling at the next SC22 meeting.''
That is, Mr Kurokowa discussed international character set handling
for an internationally standardized Lisp and not for Common Lisp.
-rpg-
∂19-Dec-88 2338 @Score.Stanford.EDU:eaf@sumex-aim.stanford.edu Re: more proposals
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 19 Dec 88 23:38:25 PST
Received: from sumex-aim.stanford.edu by SCORE.STANFORD.EDU with TCP; Mon 19 Dec 88 23:36:26-PST
Received: by sumex-aim.stanford.edu (4.0/inc-1.0)
id AA23232; Mon, 19 Dec 88 23:37:15 PST
Date: Mon, 19 Dec 1988 23:37:15 PST
From: Edward A. Feigenbaum <eaf@sumex-aim.stanford.edu>
To: dill@amadeus.stanford.edu (David Dill)
Cc: faculty@score.stanford.edu
Subject: Re: more proposals
In-Reply-To: Your message of Mon, 19 Dec 88 14:23:32 PDT
Message-Id: <CMM.0.88.598606635.eaf@sumex-aim.stanford.edu>
I agree wholeheartedly with Dave's message. And, in fact, that's the way
things USED TO BE! We were a research-oriented department, not a "cram-
material-for-exams" department. But there's a kind of Greshem's Law operating
in which the study-and-test mode gradually drives out the research mode.
The gold standard is research, and we should take significant steps to
return to that standard in the department.
Ed F.
∂20-Dec-88 0233 X3J13-mailer Gabriel's report
Received: from RELAY.CS.NET by SAIL.Stanford.EDU with TCP; 20 Dec 88 02:33:05 PST
Received: from relay2.cs.net by RELAY.CS.NET id ab19605; 20 Dec 88 4:03 EST
Received: from utokyo-relay by RELAY.CS.NET id ab03791; 20 Dec 88 3:58 EST
Received: by ccut.cc.u-tokyo.junet (5.51/6.3Junet-1.0/CSNET-JUNET)
id AA21505; Tue, 20 Dec 88 16:24:50 JST
Received: by nttlab.ntt.jp (3.2/6.2NTT.h) with TCP; Tue, 20 Dec 88 15:56:01 JST
Received: by tutics.tut.junet (ver3.3/6.2J/systemV)
id AA07407; Tue, 20 Dec 88 12:37:46 jst
Message-Id: <8812201237.AA07407@tutics.tut.junet>
Date: Tue, 20 Dec 88 12:37:46 jst
From: Taiichi Yuasa <yuasa%tutics.tut.junet@UTOKYO-RELAY.CSNET>
To: x3j13@SAIL.STANFORD.EDU
Subject: Gabriel's report
Cc: RPG@SAIL.STANFORD.EDU
As a secretary of Japanese SC22/LISP WG, I have some comments on Richar
d
Gabriel's report on the November ISO meeting.
> Mr. Kurokawa presented a report on Japanese activity on
> provisions within Common Lisp for international character sets.
This sentence is wrong. The Japanese SC22/LISP WG is working for
ISO standard, but NOT for Common Lisp standard. Mr. Kurokawa is
supposed to have presented (and he confirmed me that he indeed
presented) a Japanese contribution on international character
set handling within ISO standard, but not necessarily within
Common Lisp. He may have used some Common Lisp terminology, but
this is because of the WG16 agreement that Common Lisp
be a starting point.
> Professor Ito
> is primarily concerned about CLOS,
This is true. And, this is not only his personal concern, but a general
concern of Japanese Lisp WG as well. It seems to me that this is a more
general concern of the Japanese computer science community, since CLOS
has not received a citizenship in object-oriented world in Japan.
> but after private discussions I
> learned that because of lack of study he did not understand it,
This is not true. I know he fully understands CLOS. Note,
however, that it is painful to read the CLOS document, especially
when no one has officially proposed it to WG16, and when
inclusion of CLOS to ISO standard is so doubtful in one's
country.
> and
> the expert group that advises him consists of object-oriented
> programming researchers who press their own ideas on him.
I'm afraid this sentence came from Gabriel's misunderstanding or
prejudice about Japanese activities for Lisp standardization.
Prof. Ito himself is a programming expert (he is one of the first
Lisp hackers in Japan) and his opinion has been reflected to "the
expert group" to a great extent.
Programming experts including Prof. Ito himself is working very
hard for ISO standard, as well as investigating their own ideas.
To sum up, I found the sentences of Gabriel's report concerning with
Japanese activities are quite misleading. I hope my comments can
help you avoid misinterpretation of these sentences.
-- Taiichi Yuasa
∂20-Dec-88 0757 X3J13-mailer Re: Gabriel's report
Received: from Sun.COM by SAIL.Stanford.EDU with TCP; 20 Dec 88 07:57:15 PST
Received: from snail.Sun.COM by Sun.COM (4.1/SMI-4.0)
id AA28013; Tue, 20 Dec 88 07:59:03 PST
Received: from suntana.sun.com by snail.Sun.COM (4.1/SMI-4.0)
id AA28535; Tue, 20 Dec 88 07:55:43 PST
Received: from localhost by suntana.sun.com (4.0/SMI-4.0)
id AA18561; Tue, 20 Dec 88 07:56:17 PST
Message-Id: <8812201556.AA18561@suntana.sun.com>
To: Taiichi Yuasa <yuasa%tutics.tut.junet@UTOKYO-RELAY.CSNET>
Cc: x3j13@SAIL.STANFORD.EDU, RPG@SAIL.STANFORD.EDU
Subject: Re: Gabriel's report
In-Reply-To: Your message of Tue, 20 Dec 88 12:37:46 +0200.
<8812201237.AA07407@tutics.tut.junet>
Date: Tue, 20 Dec 88 07:56:14 PST
From: kempf@Sun.COM
>concern of Japanese Lisp WG as well. It seems to me that this is a more
>general concern of the Japanese computer science community, since CLOS
>has not received a citizenship in object-oriented world in Japan.
What, precisely, is the Japanese concern with CLOS? The committee has
made an effort over the past 2 years to remain open to suggestions
about modifying the design. There have been several electronic mail
messages from someone in Japan on the subject (it may have been Prof. Ito)
which have been taken into account during the design. What changes do
the Japanese delegates feel are needed (if any) for CLOS to receive
"full citizenship" in the Japanese object-oriented world, presuming,
of course, that Common Lisp is accepeted as an adequate base? Is there
a reasonable chance that CLOS can achieve that status, or do most
Japanese object-oriented programmers feel more confortable using Smalltalk?
jak
∂20-Dec-88 1137 X3J13-mailer access to the standard
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 20 Dec 88 11:37:37 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
for x3j13@sail.stanford.edu; id AA29610; Tue, 20 Dec 88 11:36:35 PST
Message-Id: <8812201936.AA29610@decwrl.dec.com>
From: chapman%aitg.DEC@decwrl.dec.com
Date: 20 Dec 88 14:02
To: x3j13@sail.stanford.edu
Subject: access to the standard
Following is the updated account information for accessing the
working draft of the standard:
Username: ftp_user
Password: merrychristmas
Node: hudson@dec.com
The password has changed.
kc
∂20-Dec-88 1301 @Score.Stanford.EDU:tah@linz PhD Requirements & Research
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 20 Dec 88 13:01:41 PST
Received: from linz.stanford.edu by SCORE.STANFORD.EDU with TCP; Tue 20 Dec 88 12:59:45-PST
Received: by linz.stanford.edu (5.59/25-eef) id AA05797; Tue, 20 Dec 88 12:56:38 PDT
Message-Id: <8812202056.AA05797@linz.stanford.edu>
To: faculty@score
Subject: PhD Requirements & Research
Reply-To: tah@cs.stanford.edu
Date: 20 Dec 88 12:56:35 PST (Tue)
From: Tom Henzinger <tah@linz>
Does anyone object if I forward the entire discussion to the PhD program
bboard, so that the students are able to follow and join?
In general, it is a welcome idea to cc messages about the PhD requirements
and on how to do research to phd-program@score; that would save the student
bureaucrats a lot of reporting and redistribution work (and would leave
them more time for research). Thank you.
-- Tom.
∂20-Dec-88 1544 @Score.Stanford.EDU:goldberg@polya.Stanford.EDU Ph.D. research
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 20 Dec 88 15:44:44 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Tue 20 Dec 88 15:42:29-PST
Received: by polya.Stanford.EDU (5.59/25-eef) id AA01620; Tue, 20 Dec 88 15:43:07 PDT
Date: Tue 20 Dec 88 15:43:05-PST
From: Andrew V. Goldberg <GOLDBERG@Polya.Stanford.EDU>
Subject: Ph.D. research
To: faculty@score
Message-Id: <598664585.0.GOLDBERG@Polya.Stanford.EDU>
Mail-System-Version: <VAX-MM(229)+TOPSLIB(128)@Polya.Stanford.EDU>
I'd like to add some points to the discussion.
I think the biggest problem is that of attitude: students are being told
to start research earlier, but comps provide an excuse not to do this.
A Berkeley -- where in fact a significant fraction of students is kicked
out because of the exams -- there still is a tendency to start research
right away. This is partially explained by a semi-formal practice to
relax the breadth requirenments for students doing good research.
Sometimes this has bad effects -- some smart students get away with
graduating without learning some of the fundamentals of CS, but otherwise
the system seems to work.
I think the faculty should have an option of reviewing individual student
cases, considering both comp performance and research, and deciding on
that information.
I'd also like to mention that working with other students is very valuable,
but it cannot replace working with a good advisor (at least in the area of
theory).
--Andy
-------
∂20-Dec-88 1816 @polya.Stanford.EDU:tah@linz Minimal models
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 20 Dec 88 18:16:21 PST
Received: from linz.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA08107; Tue, 20 Dec 88 18:14:31 PDT
Received: by linz.stanford.edu (5.59/25-eef) id AA06067; Tue, 20 Dec 88 18:10:48 PDT
Message-Id: <8812210210.AA06067@linz.stanford.edu>
To: lop@polya
Cc: shoham@polya
Subject: Minimal models
Reply-To: tah@cs.stanford.edu
Date: 20 Dec 88 18:10:44 PST (Tue)
From: Tom Henzinger <tah@linz>
We've been discussing initial and final algebras as "distinguished"
models for equational/Horn theories. Now there are several other
approaches in logic/CS to somehow restrict the number of "classical"
models, in order to allow a (more concise) syntactic characterization
of a certain (class of) structure(s).
Immediately to mind come:
+ Logic programming. Restriction to "least" Herbrand models.
+ Circumscription. Restriction to "minimal" models.
+ Conditional logics. Nonmonotonic, nontransitive consequence relations.
(M |= A->B iff N|=B for the "minimal revision" N of M such that N|=A.)
+ Model theory (so Tim tells me). Prime and saturated models.
So what is the connection between all these approaches to, in some
sense, "minimal" modeling? Do, for example, all of them incorporate
the power of some second-order induction-like axiom into a redefinition
of classical (first-order) semantics? Is this an interesting question?
-- Tom.
∂20-Dec-88 2226 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Complete axiom sets for arithmetic equations,
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 20 Dec 88 22:26:33 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA11263; Tue, 20 Dec 88 22:26:05 PDT
Message-Id: <8812210626.AA11263@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Tue, 20 Dec 88 22:26:29 PST
Received: by BYUADMIN (Mailer R2.01A) id 6615; Tue, 20 Dec 88 23:24:32 MST
Date: Tue, 20 Dec 88 23:16:37 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Undetermined origin c/o Postmaster <POSTMASTER%NDSUVM1.BITNET@forsythe.stanford.edu>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: <Parser> E: Unmatched parenthesis in address field.
From: Undetermined origin c/o Postmaster <POSTMASTER%NDSUVM1.BITNET@forsythe.stanford.edu>
Subject: Complete axiom sets for arithmetic equations,
using only equational rea
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
I am working with equational axioms for Peano arithmetic, but I wonder
whether I have a complete set. I don't want to do induction proofs, just
equational reasoning, so the question is whether a finite set of
axioms can express all true arithmetic equations.
I am especially interested in equations where addition, multiplication,
exponentiation and variables may occur, but not constants.
Thus:
expr ::= expr + expr
| expr * expr
| expr ~ expr
| variable
equation ::= expr = expr
Question 1) Is the following set of axioms complete? That is, can all
equations that are provable in Peano arithmetic be derived from
the axioms using only equational reasoning?
x+y = y+x (1)
x+(y+z) = (x+y)+z (2)
x*y = y*x (3)
x*(y*z) = (x*y)*z (4)
x*(y+z) = x*y + x*z (5)
x~(y+z) = x~y * x~z (6)
(x~y)~z = x~(y*z) (7)
(x*y)~z = x~z * y~z (8)
Question 2) Suppose that we also allow the constants 0 and 1 as expressions.
Is it then enough to add these axioms?
x+0 = x (9)
x*0 = 0 (10)
x~0 = 1 (11)
x*1 = x (12)
x~1 = x (13)
1~x = 1 (14)
Question 3) Suppose that we disallow '+' in expressions. Do we then get
a complete axiom system if we delete those axioms
where '+' occurs?
(This question can be asked both for the variant with constants,
and the one without.)
If the answer is 'no' to any of these questions, I would of course
want to know whether I have simply forgotten some axioms, or if it is
impossible to give a finite equational axiomatisation.
Any kind of information about these problems will be gratefully received.
Mikael Rittri
E-mail: rittri@cs.chalmers.se
Dept. of Computer Sciences
Chalmers Univ. of Technology
S-412 96 Goteborg, Sweden
∂20-Dec-88 2301 @Score.Stanford.EDU:linton@interviews.stanford.edu Re: Ph.D. research
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 20 Dec 88 23:01:48 PST
Received: from interviews.stanford.edu by SCORE.STANFORD.EDU with TCP; Tue 20 Dec 88 22:59:58-PST
Received: by interviews.stanford.edu (5.57/Ultrix2.4-C)
id AA11656; Tue, 20 Dec 88 22:58:45 PST
Date: Tue, 20 Dec 88 22:58:45 PST
From: linton@interviews.stanford.edu (Mark Linton)
Message-Id: <8812210658.AA11656@interviews.stanford.edu>
To: faculty@score.stanford.edu
Subject: Re: Ph.D. research
I suppose comp-bashing is easy because the comps can't fight back,
but I can't believe they are the cause of the problem. Berkeley
students must take 2-3 years of course work (at least they did 5 years ago),
which is a much greater distraction than studying for comps.
Stanford EE also requires this amount of course work.
Mark
∂21-Dec-88 0910 @Score.Stanford.EDU:daniel@mojave.Stanford.EDU Ph.D. research: the difference between exam requirements and course requirements.
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 21 Dec 88 09:10:05 PST
Received: from mojave.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Wed 21 Dec 88 09:07:44-PST
Received: by mojave.Stanford.EDU (5.59/inc-1.0)
id AA10440; Wed, 21 Dec 88 09:08:47 PDT
Date: Wed, 21 Dec 88 09:08:47 PDT
From: daniel@mojave.Stanford.EDU (Daniel Weise)
Message-Id: <8812211708.AA10440@mojave.Stanford.EDU>
To: linton@lurch.stanford.edu
Cc: faculty@score.stanford.edu
Subject: Ph.D. research: the difference between exam requirements and course requirements.
The difference between courses and exams is that students view courses
as knowns: they know how little or how much work to do to satisfy a
course requirement. This is not so for noncourse-related exams. More
studying is always necessary because one doesn't know what part of the
massive reading list will be tested. It's the paranoia factor we
have to address.
Like inflation, exam paranoia is a self-sustaining and growing
problem. MIT CS stopped their comprehensive written exams just a few
years after instituting them because each year students spent more and
more time studying for them.
I believe our students should have a comprehensive background, but
that the way we go about ensuring this is wrong. First, we should
eliminate some of the areas we require, such as graphics and networks.
Second, we should be willing to take as evidence of background
undergraduate and graduate courses the students have had. If a
student hasn't had a course in an area we require then they must
either take a test or a course in that specific area.
The advantage of this approach is that the students will see
fulfilling the requirement as covering a hole in their background
rather as than jumping through a hoop. They will view the time taken
for meeting the requirement as fruitfully spent. Students who
matriculate fully prepared will be able to start research immediately.
Students who need to take a few courses will be able to simultaneously
take courses and do research. The paranoia factor will be eliminated.
Daniel
∂21-Dec-88 0913 aaai@sumex-aim.stanford.edu Happy Holidays!
Received: from sumex-aim.stanford.edu by SAIL.Stanford.EDU with TCP; 21 Dec 88 09:12:50 PST
Received: by sumex-aim.stanford.edu (4.0/inc-1.0)
id AA11296; Wed, 21 Dec 88 09:05:39 PST
Date: Wed, 21 Dec 1988 9:05:37 PST
From: AAAI <aaai@sumex-aim.stanford.edu>
To: officers:;@sumex-aim.stanford.edu
Cc: aaai@sumex-aim.stanford.edu
Subject: Happy Holidays!
Message-Id: <CMM.0.88.598727137.aaai@sumex-aim.stanford.edu>
The AAAI staff would like to wish the officers and councilors Happy
Holidays and Merry Christmas!
Cheers,
Claudia
∂21-Dec-88 0946 @Score.Stanford.EDU:JMC@SAIL.Stanford.EDU comprehensives and research orientation
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 21 Dec 88 09:45:11 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Wed 21 Dec 88 09:43:05-PST
Message-ID: <8TXSs@SAIL.Stanford.EDU>
Date: 21 Dec 88 0943 PST
From: John McCarthy <JMC@SAIL.Stanford.EDU>
Subject: comprehensives and research orientation
To: faculty@SCORE.Stanford.EDU
I have been here for 26 years and witnessed many perturbations in
the examination process. None of the approximately 10 reforms
have seemed to me really well motivated. Most of them come from
two sources. First some students find some aspect of the exams
too hard. Second faculty (and students who have been through
the exams) want to put new topics on the exams. In the AI qual
this resulted in a reading list so enormous that I once walked
out at the beginning of an oral on the grounds that I could
not honestly examine students who were supposed to have prepared
on the basis of a bibliography of which I had read such a small
proportion. I don't know if there is any AI at all on the
comprehensive now. If there is, I would propose to remove it
on the grounds that AI is better taught in connection with
research than by preparing for an exam. I want to keep
mathematical logic on the comprehensive as a foundation for AI
research. I also believe that the basic mathematics of program
verification should be kept.
∂21-Dec-88 0946 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Re: Linear Programming Program Needed
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 21 Dec 88 09:44:44 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA17370; Wed, 21 Dec 88 09:44:18 PDT
Message-Id: <8812211744.AA17370@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Wed, 21 Dec 88 09:44:42 PST
Received: by BYUADMIN (Mailer R2.01A) id 4370; Wed, 21 Dec 88 10:43:02 MST
Date: Wed, 21 Dec 88 11:36:45 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Steve Vestal Steve Vestal <vestal@ALTURA.SRC.HONEYWELL.COM>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Steve Vestal Steve Vestal <vestal@ALTURA.SRC.HONEYWELL.COM>
Subject: Re: Linear Programming Program Needed
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
I've got a PC LP package if you're interested (Unix, too). The fixed
limitation is that the number of variables + the number of constraints doesn't
exceed 3600 (PC) or 16000 (Unix). It uses a sparse matrix representation,
and the operational limit is that all the non-zero coefficients fit in
your memory. It's a primal/dual algorithm, so it doesn't really matter
whether you're lopsided towards variables or constraints. The real strength
of the package is it's high-level matrix generation language: subscripted
variables, read/write statements (including spreadsheet files),
conditionals, etc. Makes it easy to play around different models.
Steve Vestal, (612) 490-0356 evenings
∂21-Dec-88 1013 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Re: Complete axiom sets for arithmetic equations
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 21 Dec 88 10:13:13 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA18216; Wed, 21 Dec 88 10:12:50 PDT
Message-Id: <8812211812.AA18216@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Wed, 21 Dec 88 10:13:13 PST
Received: by BYUADMIN (Mailer R2.01A) id 4596; Wed, 21 Dec 88 11:06:17 MST
Date: Wed, 21 Dec 88 11:38:16 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
"Stephen J. Garland" <garland%LARCH.LCS.MIT.EDU@Forsythe.Stanford.EDU>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: "Stephen J. Garland" <garland%LARCH.LCS.MIT.EDU@Forsythe.Stanford.EDU>
Subject: Re: Complete axiom sets for arithmetic equations
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
Mikael Rittri of the Chalmers Univ. of Technology is Goteborg, Sweden,
asks whether various equational axiomatizations for Peano arithmetic are
equationally complete. Answers to his questions, insofar as they were known
in 1977, can be found in ``The Logic of Equality'' by Leon Henkin, American
Mathematical Monthly 84 (1977), pp. 597-612. Rittri's questions, with Henkin's
answers, follow.
Question 1) Is the following set of axioms complete? That is, can all
equations that are provable in Peano arithmetic be derived from
the axioms using only equational reasoning?
x+y = y+x (1)
x+(y+z) = (x+y)+z (2)
x*y = y*x (3)
x*(y*z) = (x*y)*z (4)
x*(y+z) = x*y + x*z (5)
x~(y+z) = x~y * x~z (6)
(x~y)~z = x~(y*z) (7)
(x*y)~z = x~z * y~z (8)
Henkin cites a 1973 Ph. D. thesis by Charles Martin, a student of
Tarski's, in which it is shown that no finite set of axioms suffices. In
particular, Martin shows that the identity
(x~y + x~y)~x * (y~x + y~x)~y = (x~x + x~x)~y * (y~y + y~y)~x
is not derivable from axioms (1) through (8).
Question 2) Suppose that we also allow the constants 0 and 1 as expressions.
Is it then enough to add these axioms?
x+0 = x (9)
x*0 = 0 (10)
x~0 = 1 (11)
x*1 = x (12)
x~1 = x (13)
1~x = 1 (14)
Henkin attributes this question to Tarski and says the answer is unknown.
Question 3) Suppose that we disallow '+' in expressions. Do we then get a
complete axiom system if we delete those axioms where '+' occurs?
Martin shows that the answer is "yes" in the case without constants.
Stephen J. Garland
MIT Laboratory for Computer Science
garland@lcs.mit.edu
∂21-Dec-88 1328 SLOAN@Score.Stanford.EDU Closing of offices tomorrow
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 21 Dec 88 13:28:40 PST
Date: Wed 21 Dec 88 13:16:14-PST
From: Yvette Sloan <SLOAN@Score.Stanford.EDU>
Subject: Closing of offices tomorrow
To: csd-list@Score.Stanford.EDU, csd@Score.Stanford.EDU
Message-ID: <12456266635.23.SLOAN@Score.Stanford.EDU>
Departmental offices will close at 3:00 p.m. tomorrow (December 22) so that
we may start our Christmas holiday. Tomorrow is PAYDAY. If you need to
pick up your paycheck, plan to do so before 3:00 p.m.
Merry Christmas!!
--Yvette
-------
∂21-Dec-88 1347 @Score.Stanford.EDU:pratt@chehalis.stanford.edu status of "cs.stanford.edu"
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 21 Dec 88 13:45:03 PST
Received: from chehalis.stanford.edu by SCORE.STANFORD.EDU with TCP; Wed 21 Dec 88 13:43:05-PST
Received: by chehalis.stanford.edu (5.59/25-eef) id AA00755; Wed, 21 Dec 88 13:43:14 PDT
Date: Wed, 21 Dec 88 13:43:14 PDT
From: Vaughan Pratt <pratt@chehalis.stanford.edu>
Message-Id: <8812212143.AA00755@chehalis.stanford.edu>
To: faculty@score
Subject: status of "cs.stanford.edu"
It would be *very* nice if (at least) those of us on the CS faculty and
staff could be mailed to as surname@cs.stanford.edu. Currently cs is a
synonym for polya, which presumably implements just this. However I
haven't seen this synonym advertised anywhere, so before I start
telling everyone that that's my new address I'd like to find out its
status.
Is there anything resembling a policy on the care and feeding of this
name? Can we assume that the department owns the name and intends to
keep it in working order (e.g. by switching it to another machine
temporarily if polya is so unfortunate as to be down for several days)?
-v
∂21-Dec-88 1351 @Score.Stanford.EDU:RWF@SAIL.Stanford.EDU re: Ph.D. research: the difference between exam requirements and course requirements.
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 21 Dec 88 13:51:22 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Wed 21 Dec 88 13:49:23-PST
Message-ID: <14Tx8$@SAIL.Stanford.EDU>
Date: 21 Dec 88 1348 PST
From: Robert W Floyd <RWF@SAIL.Stanford.EDU>
Subject: re: Ph.D. research: the difference between exam requirements and course requirements.
To: daniel@MOJAVE.STANFORD.EDU, linton@LURCH.STANFORD.EDU
CC: faculty@SCORE.Stanford.EDU
[In reply to message from daniel@mojave.Stanford.EDU sent Wed, 21 Dec 88 09:08:47 PDT.]
I am skeptical about accepting undergrad courses as evidence of breadth.
For one thing, I regularly ask incoming students questions like:
Have you had a course in modern algebra? (answer yes or i think so)
Define an ideal. (ans i don't remember but i could look it up)
Prove that the order of a group element divides the order of the group.
(ans: mumble). Same thing for statistics, computability theory,
NP completeness, etc.
For another thing, most undergrads at good schools I've sampled,
say Berkeley, Cornell, and Stanford, are taking watered-down
touchy-feely versions of some courses. A student who gets a PhD
knowing what the students learn in CS154 is not ready to step in
and teach it on short notice, still less to teach a rigorous
course. I think a PhD should be able to teach any intro level
core CS course. Remember what DOCTOR means in Latin (it doesn't
mean researcher).
∂21-Dec-88 1605 @Score.Stanford.EDU:pratt@chehalis Re: Ph.D. research: the difference between exam requirements and course requirements.
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 21 Dec 88 16:05:33 PST
Received: from chehalis.stanford.edu by SCORE.STANFORD.EDU with TCP; Wed 21 Dec 88 15:58:56-PST
Received: by chehalis.stanford.edu (5.59/25-eef) id AA00943; Wed, 21 Dec 88 15:58:46 PDT
Message-Id: <8812212358.AA00943@chehalis.stanford.edu>
To: Robert W Floyd <RWF@sail.stanford.edu>
Cc: faculty@score.stanford.edu
Subject: Re: Ph.D. research: the difference between exam requirements and course requirements.
In-Reply-To: Your message of 21 Dec 88 1348 PST.
<14Tx8$@SAIL.Stanford.EDU>
Date: 21 Dec 88 15:58:40 PST (Wed)
From: pratt@chehalis
Define an ideal. (ans i don't remember but i could look it up)
By chance Bob picked my favorite example of something you *can't*
find the definition of by looking it up. Different texts define
"ideal" specialized to the class of structures at hand. What do you
want an ideal of? Posets? A downward-closed subset (= an order
ideal). Semilattices? An order ideal closed under join. Lattices? A
prime semilattice ideal. Rings? A subset closed under addition of
ideal elements and multiplication by ring elements.
The "right" answer, which I don't believe can be looked up in any
algebra book (counterexamples gratefully received) is that an ideal is
an inverse image of 0.
With that answer one gets additional insight into ideals. For example
an ideal of a group is more commonly known as a normal subgroup, while
a monoid ideal of a group is just a subgroup.
Details on request.
-v
∂21-Dec-88 1722 @Score.Stanford.EDU:RWF@SAIL.Stanford.EDU re: Ph.D. research: the difference between exam requirements and course requirements.
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 21 Dec 88 17:22:47 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Wed 21 Dec 88 17:20:48-PST
Message-ID: <4T#vC@SAIL.Stanford.EDU>
Date: 21 Dec 88 1721 PST
From: Robert W Floyd <RWF@SAIL.Stanford.EDU>
Subject: re: Ph.D. research: the difference between exam requirements and course requirements.
To: pratt@CHEHALIS.Stanford.EDU, RWF@SAIL.Stanford.EDU
CC: faculty@SCORE.Stanford.EDU
[In reply to message from pratt@chehalis sent 21 Dec 88 15:58:40 PST.]
All right, Vaughan, we will waive the comp requirement
in your case, but I won't hold my breath until an
incoming student gives me such a good answer.
∂21-Dec-88 1930 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Complete axiom sets for arithmetic equations,
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 21 Dec 88 19:30:01 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA02297; Wed, 21 Dec 88 19:29:38 PDT
Message-Id: <8812220329.AA02297@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Wed, 21 Dec 88 19:30:02 PST
Received: by BYUADMIN (Mailer R2.01A) id 4828; Wed, 21 Dec 88 19:44:10 MST
Date: Wed, 21 Dec 88 14:58:25 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Mikael Rittri <rittri%CS.CHALMERS.SE@Forsythe.Stanford.EDU>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Mikael Rittri <rittri%CS.CHALMERS.SE@Forsythe.Stanford.EDU>
Subject: Complete axiom sets for arithmetic equations,
using only equational rea
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
I am working with equational axioms for Peano arithmetic, but I wonder
whether I have a complete set. I don't want to do induction proofs, just
equational reasoning, so the question is whether a finite set of
axioms can express all true arithmetic equations.
I am especially interested in equations where addition, multiplication,
exponentiation and variables may occur, but not constants.
Thus:
expr ::= expr + expr
| expr * expr
| expr ~ expr
| variable
equation ::= expr = expr
Question 1) Is the following set of axioms complete? That is, can all
equations that are provable in Peano arithmetic be derived from
the axioms using only equational reasoning?
x+y = y+x (1)
x+(y+z) = (x+y)+z (2)
x*y = y*x (3)
x*(y*z) = (x*y)*z (4)
x*(y+z) = x*y + x*z (5)
x~(y+z) = x~y * x~z (6)
(x~y)~z = x~(y*z) (7)
(x*y)~z = x~z * y~z (8)
Question 2) Suppose that we also allow the constants 0 and 1 as expressions.
Is it then enough to add these axioms?
x+0 = x (9)
x*0 = 0 (10)
x~0 = 1 (11)
x*1 = x (12)
x~1 = x (13)
1~x = 1 (14)
Question 3) Suppose that we disallow '+' in expressions. Do we then get
a complete axiom system if we delete those axioms
where '+' occurs?
(This question can be asked both for the variant with constants,
and the one without.)
If the answer is 'no' to any of these questions, I would of course
want to know whether I have simply forgotten some axioms, or if it is
impossible to give a finite equational axiomatisation.
Any kind of information about these problems will be gratefully received.
Mikael Rittri
E-mail: rittri@cs.chalmers.se
Dept. of Computer Sciences
Chalmers Univ. of Technology
S-412 96 Goteborg, Sweden
∂21-Dec-88 1935 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Complete axiom sets for arithmetic equations
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 21 Dec 88 19:34:54 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA02340; Wed, 21 Dec 88 19:34:37 PDT
Message-Id: <8812220334.AA02340@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Wed, 21 Dec 88 19:35:01 PST
Received: by BYUADMIN (Mailer R2.01A) id 6539; Wed, 21 Dec 88 20:32:52 MST
Date: Wed, 21 Dec 88 21:27:45 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
meyer%THEORY.LCS.MIT.EDU@Forsythe.Stanford.EDU
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: meyer%THEORY.LCS.MIT.EDU@Forsythe.Stanford.EDU
Subject: Complete axiom sets for arithmetic equations
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
Comment on Garland's comment:
Henkin's article was about axiomatizing the equations VALID in arithmetic,
not just those PROVABLE from the Peano axioms. I'm not aware that these are
known to be the same: is Peano complete for this subset of formulas?
Yours truly,
Prof. Albert R. Meyer
MIT Lab. for Computer Science
∂22-Dec-88 0925 @Score.Stanford.EDU:RPG@SAIL.Stanford.EDU Students and Research
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 22 Dec 88 09:25:40 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Thu 22 Dec 88 09:23:40-PST
Message-ID: <DU8vB@SAIL.Stanford.EDU>
Date: 22 Dec 88 0923 PST
From: Dick Gabriel <RPG@SAIL.Stanford.EDU>
Subject: Students and Research
To: faculty@SCORE.Stanford.EDU
The debate on PhD requirements started as a debate about how to get
students to get into research and be better researchers. I'm afraid
(but I don't know) that Stanford's problem is deeper than the comp
requirements stalling people.
The students I know these days don't seem to have the same
fire-in-the-belly that I remember from the mid-70's through the mid-80's.
By this I don't mean that they are less intelligent, but that they
seem less interested in quickly making their marks in research.
I have three theories about this:
1. The students we got 15 years ago were often not from computer science
backgrounds, and usually they had math backgrounds. I'm not sure that the
math background was the important thing except that folks with math
backgrounds like me learned a rigorous way of thinking (no comments
please) but no body of important information. Therefore, such students are
in the right frame of mind to absorb CS quickly and are in a position to
think out their research problems. Today CS students have learned CS at
a stage of their lives when what they learn is rigid and sacred, which is
not a good attitude with which to approach research.
2. When I learned CS, we used math books and quasi math books (Knuth Vol
1) for what we needed to do analysis, and we used research papers and
journal articles to learn CS. When you learn CS with CS books, you're not
getting the feel of the science as it lives, but as it is now viewed. So
the role models we had back then were working researchers with current
papers, and the ones students have now are working scholars and
academicians with books on worked-over material. The glamor of research is
squeezing off a series of hot papers, not writing a thoughtful textbook
(apologies to Jeff Ullman).
And we worked to imitate these hotshots: we'd know the deadlines for conferencs
and we'd try to meet those deadlines with our own papers, and we'd get help
and criticism from our peers and advisors. When the conference was over, we'd
get a group together to read the papers and present them to each other.
3. Stanford used to be a ``big science'' school in CS. That is, when I was
choosing grad schools, Stanford had big AI projects, and I was attracted
to them. There were lots of big projects with about a dozen researchers
we wanted to imitate and work with. With a big project you have the
ability to join and get work done while remaining behind the scenes until
you feel you are up to speed and ready to try your stuff. There was a
range of grad students to illustrate the stages of development you had to
go through. And the project was one that would make a big difference to
the course of CS and would make you famous.
Whether or not Stanford has any such project today, it doesn't seem like
it does. Having spent some time trying to entice people I knew and worked
with to Stanford to be grad students, I found that these guys wanted to go
to MIT, for example, to ``work with the <mumble> project.'' They told me
that Stanford didn't have any projects they wanted to join.
I happen to think that big projects can provide the localized critical
mass of enthusiasm you need to attract and nurture students. I believe MIT
and probably CMU still have this setup, and I think we fail to attract
students who will be good researchers - they go elsewhere. Therefore, no
amount of tweaking the system will fix it. The problem is that Stanford
CS is dull and attracts research-dull students.
4. It might be that CS has now progressed to the point where it is not possible
to do big science (and I don't mean hacking projects), and therefore we are
inherently screwed, but MIT seems to still do it. However, I think we ought to
try to at least bring back the practice of trying to get students to write
research papers.
Here is a sad story: I employ a CS PhD student at Lucid. This student has
a good advisor. We write a lot of research papers together. We worked on
the design and specification of an important system together. The student
says that the advisor ``never taught how to write papers,'' but that I
did. This is fine because I'm affiliated with Stanford, but it is not fine
because I am not the advisor.
-rpg-
∂22-Dec-88 1028 @Score.Stanford.EDU:gio@sumex-aim.stanford.edu Re: comprehensives and research orientation
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 22 Dec 88 10:28:01 PST
Received: from sumex-aim.stanford.edu by SCORE.STANFORD.EDU with TCP; Thu 22 Dec 88 10:14:46-PST
Received: by sumex-aim.stanford.edu (4.0/inc-1.0)
id AA23918; Thu, 22 Dec 88 10:14:08 PST
Date: Thu, 22 Dec 1988 10:14:07 PST
From: Gio Wiederhold <gio@sumex-aim.stanford.edu>
To: John McCarthy <JMC@sail.stanford.edu>
Cc: faculty@score.stanford.edu
Subject: Re: comprehensives and research orientation
In-Reply-To: Your message of 21 Dec 88 0943 PST
Message-Id: <CMM.0.88.598817647.gio@sumex-aim.stanford.edu>
There is AI theory in the theory section, probably corresponding to what you
would like as foundation, and some pragmatics in the Application section.
I would like to retain that much AI in the comprehensive, not for the sake of
research --- here the qual is the barrier, but for the sake of general
education. I'd hate to have database specializing students who don't even
have the minimal comprehension of AI that we ask now as part of the comp.
Gio
∂22-Dec-88 1049 @Score.Stanford.EDU:winograd@loire.stanford.edu Re: research
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 22 Dec 88 10:48:39 PST
Received: from loire.stanford.edu by SCORE.STANFORD.EDU with TCP; Thu 22 Dec 88 10:45:29-PST
Received: by loire.stanford.edu (5.59/25-eef) id AA18475; Thu, 22 Dec 88 10:45:11 PDT
Date: Thu, 22 Dec 88 10:45:11 PDT
Message-Id: <8812221845.AA18475@loire.stanford.edu>
From: Winograd@csli.stanford.edu
To: faculty@score, phd@score
Subject: Re: research
Dick Gabriel's note compared our research environment unfavorably with
MIT. You may be interested in a document called "How to do research at the
AI Lab", issued as MIT AI Working paper 316, October 1988, wlritten by
"a whole bunch of current, former, and honorary MIT AI Lab graduate
students." It is 36 pages long and discusses a wide variety of topics,
including "Getting connected", "Learning other fields", "Advisors",
"Research Methodology", "Emotional factors," etc. I haven't read it
through, but on a quick scan it looks sensible and useful. I can make
my copy available for copying. --t
p.s., as a side note, it singles out the Stanford AI reading list that
John McCarthy objected to as being particuarly useful.
∂22-Dec-88 1139 X3J13-mailer Error terminology
Received: from lucid.com by SAIL.Stanford.EDU with TCP; 22 Dec 88 11:39:15 PST
Received: from bhopal ([192.9.200.13]) by heavens-gate.lucid.com id AA04427g; Wed, 21 Dec 88 22:05:23 PST
Received: by bhopal id AA10159g; Wed, 21 Dec 88 22:06:00 PST
Date: Wed, 21 Dec 88 22:06:00 PST
From: Jon L White <jonl@lucid.com>
Message-Id: <8812220606.AA10159@bhopal>
To: chapman%aitg.DEC@decwrl.dec.com
Cc: x3j13@sail.stanford.edu
In-Reply-To: chapman%aitg.DEC@decwrl.dec.com's message of 3 Oct 88 15:42 <8810031951.AA06841@decwrl.dec.com>
Subject: Error terminology
re: - THE "CONSEQUENCES ARE UNSPECIFIED"
means that
. . .
- ... and all portable programs are required to treat
the situation as unpredictable but harmless.
It looks like to me that "harmless" has the same lack of specificity
as Barry's word "benign". Taken in context of the rest of your message,
it could only mean "not fatal". Is that good enough?
[By the bye, was this msg really intended for x3j13 distribution? or
should it have been cl-editorial?]
-- JonL --
∂22-Dec-88 1147 TAJNAI@Score.Stanford.EDU Sunrise Club, Jan. 17.
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 22 Dec 88 11:47:35 PST
Date: Thu 22 Dec 88 11:41:33-PST
From: Carolyn Tajnai <TAJNAI@Score.Stanford.EDU>
Subject: Sunrise Club, Jan. 17.
To: faculty@Score.Stanford.EDU, PHD@Score.Stanford.EDU, RAS@Score.Stanford.EDU
cc: hiller@Score.Stanford.EDU
Message-ID: <12456511542.16.TAJNAI@Score.Stanford.EDU>
TO: Faculty, Research Associates and PHD students
FROM: Carolyn Tajnai
RE: Sunrise Meeting, Jan. 17, 1988
The next Sunrise Club meeting will be on Tuesday,
January 17, 1989, same place, same time - Tresidder
Union, Oak Lounge West at 7:30 a.m. The speaker
will be Dr. R. Fabian Pease of the Electrical
Engineering Department whose lecture is titled
"The Impact of Micro-miniaturization on Electronics."
Please R.S.V.P. to Bonnie Hiller (3-3051) or Hiller@Score.
-------
∂22-Dec-88 1241 X3J13-mailer Re: Corrections to the ISO Report
Received: from NSS.Cs.Ucl.AC.UK by SAIL.Stanford.EDU with TCP; 22 Dec 88 12:35:20 PST
Received: from aiai.edinburgh.ac.uk by NSS.Cs.Ucl.AC.UK via Janet with NIFTP
id aa06698; 22 Dec 88 20:30 GMT
Date: Thu, 22 Dec 88 20:27:12 GMT
Message-Id: <20454.8812222027@subnode.aiai.ed.ac.uk>
From: Jeff Dalton <jeff%aiai.edinburgh.ac.uk@NSS.Cs.Ucl.AC.UK>
Subject: Re: Corrections to the ISO Report
To: rpg <@sail.stanford.edu:rpg@lucid.com>, x3j13@sail.stanford.edu
In-Reply-To: Richard P. Gabriel's message of Mon, 19 Dec 88 22:35:13 PST
> 2. There was a wording problem with my comments on the AFNOR
> delegation's response to the US position.
I think there are two issues. One is that the NWI does not talk
about multiple standards for multiple varieties ("dialects" might
be prejudicial) of Lisp. At the first WG-16 meeting in Paris,
the US made the point that an ISO standard named something like
"ISO Lisp" might seem to preclude standards for other varieties
of Lisp but there was not, as far as I can recall (I haven't checked
my notes), anything said about multiple standards under the current
Work Item. The US seemed willing then to have WG-16 work on a
single standard, even one based on Common Lisp. Indeed, the US
insisted that the WG-16 schedule (the 18 months) required a starting
point in existing work, and the US voted for "Common Lisp or Scheme"
as the starting point.
This brings us to the second issue, for which you have found the
convenient term "work plan". I think the following is a fair
summary:
1. At the first WG-16, the US cooperated in drafting the work
plan and did not voice strong objections. We can contrast
this with the US approach to the name of the standard, where
the US made it clear that "ISO Lisp" was unacceptable.
However, the US made the point that any deviation from
CL would need an environmental impact statement.
2. At the second WG-16, the US was unhappy with some of the defaults
and preferred that changes be deletions (so that the ISO standard
would be a strict rather than "extended" subset). It was
explained, by the Convenor and others, that the default values
would not be adopted just because they were the defaults. The
US seemed to accept this explanation.
3. Before the third WG-16, the US distributed a position statement
which, in effect, said that the US would oppose any changes to
Common Lisp that were not deletions. This was a hardening of
what seemed to be the US position in the second meeting, because
changes would be opposed simply because they were not deletions,
regardless of technical or practical merit. (Of course,
deletions might still be opposed on those grounds, and such
reasons might be given as additional reasons for opposing
non-deletions.)
So, it appears to me that the US position has changed. Whether it
is a "preposterous" change is less clear. It might be argued that
the position has evolved. Nonetheless,
> The US did not agree to this work plan, and the evidence for this
> is simply that the acceptability of the work plan never came to a
> vote at WG16. Therefore, the US did not change its position regarding
> this work plan, and the current US position is the first time the US
> took any position with regard to the work plan for WG16 proposed by the
> AFNOR delegation.
It can be argued that the US has officially said only three things.
One is the comment on the NWI stating opposition to the name "ISO
Lisp". Another is the position statement distributed before the
3rd WG-16. Then, finally, there's the proposal for an ISO Common
Lisp standard presented at the 3rd meeting. Indeed, it might be
argued that only the first is really official, because only it
involved a vote in X3J13 (if even that is enough). However, if
we're to take a "letter of the law" approach, it must be noted that
a change from no official position to official opposition is still
a change.
There is one additional point I would like to make. Although the
initial list of issues and defaults, and the idea that we should
proceed in this way, came from AFNOR, the final list was the result
of comments by other countries, including the US. Moreover, there
appeared to be a consensus (that included the US) on the following
statement:
The draft standard to be provided by the Working Group within
18 months will take as starting point Common Lisp (with X3J13
cleanups) with treatment of major issues and default values
to be identified (including issues in the AFNOR list and on
agenda).
> When the AFNOR delegation stated that the US position represented a
> ``preposterous'' change in position by the US, I interpreted their
> statement as a response to an incorrectly perceived change in position
> by the US regarding the never-agreed-on AFNOR-proposed work plan. The
> only alternative interpretation I could think of is that the AFNOR
> delegation incorrectly perceived a change in position by the US to the
> New Work Item that defines the goal of WG16. Since the latter
> interpretation is illogical, I adopted the other one.
I think you were right to adopt the other one.
Jeff Dalton, JANET: J.Dalton@uk.ac.ed
AI Applications Institute, ARPA: J.Dalton%uk.ac.ed@nss.cs.ucl.ac.uk
Edinburgh University. UUCP: ...!ukc!ed.ac.uk!J.Dalton
∂22-Dec-88 1356 @Score.Stanford.EDU:eaf@sumex-aim.stanford.edu Re: comprehensives and research orientation
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 22 Dec 88 13:56:34 PST
Received: from sumex-aim.stanford.edu by SCORE.STANFORD.EDU with TCP; Thu 22 Dec 88 13:54:16-PST
Received: by sumex-aim.stanford.edu (4.0/inc-1.0)
id AA28109; Thu, 22 Dec 88 13:53:39 PST
Date: Thu, 22 Dec 1988 13:53:39 PST
From: Edward A. Feigenbaum <eaf@sumex-aim.stanford.edu>
To: John McCarthy <JMC@sail.stanford.edu>
Cc: faculty@score.stanford.edu
Subject: Re: comprehensives and research orientation
In-Reply-To: Your message of 21 Dec 88 0943 PST
Message-Id: <CMM.0.88.598830819.eaf@sumex-aim.stanford.edu>
Although it was a little painful to both prepare and grade questions on
the AI section of the comprehensive, I agree with Gio (and therefore
disagree with John) that a general education in CS requires some
knowledge of AI (even if it turns out to be, for purposes of the
comprehensive, only "a meter wide but a millimeter thick").
Ed F.
∂22-Dec-88 1447 X3J13-mailer Re: Corrections to the ISO Report
Received: from NSS.Cs.Ucl.AC.UK by SAIL.Stanford.EDU with TCP; 22 Dec 88 14:45:02 PST
Received: from aiai.edinburgh.ac.uk by NSS.Cs.Ucl.AC.UK via Janet with NIFTP
id aa06698; 22 Dec 88 20:30 GMT
Date: Thu, 22 Dec 88 20:27:12 GMT
Message-Id: <20454.8812222027@subnode.aiai.ed.ac.uk>
From: Jeff Dalton <jeff%aiai.edinburgh.ac.uk@NSS.Cs.Ucl.AC.UK>
Subject: Re: Corrections to the ISO Report
To: rpg <@sail.stanford.edu:rpg@lucid.com>, x3j13@sail.stanford.edu
In-Reply-To: Richard P. Gabriel's message of Mon, 19 Dec 88 22:35:13 PST
> 2. There was a wording problem with my comments on the AFNOR
> delegation's response to the US position.
I think there are two issues. One is that the NWI does not talk
about multiple standards for multiple varieties ("dialects" might
be prejudicial) of Lisp. At the first WG-16 meeting in Paris,
the US made the point that an ISO standard named something like
"ISO Lisp" might seem to preclude standards for other varieties
of Lisp but there was not, as far as I can recall (I haven't checked
my notes), anything said about multiple standards under the current
Work Item. The US seemed willing then to have WG-16 work on a
single standard, even one based on Common Lisp. Indeed, the US
insisted that the WG-16 schedule (the 18 months) required a starting
point in existing work, and the US voted for "Common Lisp or Scheme"
as the starting point.
This brings us to the second issue, for which you have found the
convenient term "work plan". I think the following is a fair
summary:
1. At the first WG-16, the US cooperated in drafting the work
plan and did not voice strong objections. We can contrast
this with the US approach to the name of the standard, where
the US made it clear that "ISO Lisp" was unacceptable.
However, the US made the point that any deviation from
CL would need an environmental impact statement.
2. At the second WG-16, the US was unhappy with some of the defaults
and preferred that changes be deletions (so that the ISO standard
would be a strict rather than "extended" subset). It was
explained, by the Convenor and others, that the default values
would not be adopted just because they were the defaults. The
US seemed to accept this explanation.
3. Before the third WG-16, the US distributed a position statement
which, in effect, said that the US would oppose any changes to
Common Lisp that were not deletions. This was a hardening of
what seemed to be the US position in the second meeting, because
changes would be opposed simply because they were not deletions,
regardless of technical or practical merit. (Of course,
deletions might still be opposed on those grounds, and such
reasons might be given as additional reasons for opposing
non-deletions.)
So, it appears to me that the US position has changed. Whether it
is a "preposterous" change is less clear. It might be argued that
the position has evolved. Nonetheless,
> The US did not agree to this work plan, and the evidence for this
> is simply that the acceptability of the work plan never came to a
> vote at WG16. Therefore, the US did not change its position regarding
> this work plan, and the current US position is the first time the US
> took any position with regard to the work plan for WG16 proposed by the
> AFNOR delegation.
It can be argued that the US has officially said only three things.
One is the comment on the NWI stating opposition to the name "ISO
Lisp". Another is the position statement distributed before the
3rd WG-16. Then, finally, there's the proposal for an ISO Common
Lisp standard presented at the 3rd meeting. Indeed, it might be
argued that only the first is really official, because only it
involved a vote in X3J13 (if even that is enough). However, if
we're to take a "letter of the law" approach, it must be noted that
a change from no official position to official opposition is still
a change.
There is one additional point I would like to make. Although the
initial list of issues and defaults, and the idea that we should
proceed in this way, came from AFNOR, the final list was the result
of comments by other countries, including the US. Moreover, there
appeared to be a consensus (that included the US) on the following
statement:
The draft standard to be provided by the Working Group within
18 months will take as starting point Common Lisp (with X3J13
cleanups) with treatment of major issues and default values
to be identified (including issues in the AFNOR list and on
agenda).
> When the AFNOR delegation stated that the US position represented a
> ``preposterous'' change in position by the US, I interpreted their
> statement as a response to an incorrectly perceived change in position
> by the US regarding the never-agreed-on AFNOR-proposed work plan. The
> only alternative interpretation I could think of is that the AFNOR
> delegation incorrectly perceived a change in position by the US to the
> New Work Item that defines the goal of WG16. Since the latter
> interpretation is illogical, I adopted the other one.
I think you were right to adopt the other one.
Jeff Dalton, JANET: J.Dalton@uk.ac.ed
AI Applications Institute, ARPA: J.Dalton%uk.ac.ed@nss.cs.ucl.ac.uk
Edinburgh University. UUCP: ...!ukc!ed.ac.uk!J.Dalton
∂22-Dec-88 1545 ruben@apple.com Re: Philosophy Colloquium Dec. 9
Received: from csli.Stanford.EDU by SAIL.Stanford.EDU with TCP; 22 Dec 88 15:45:19 PST
Received: from apple.com by csli.Stanford.EDU (4.0/4.7); Thu, 22 Dec 88 15:28:01 PST
Received: by apple.com (5.59/25-eef)
id AA05736; Thu, 22 Dec 88 15:27:46 PST
Received: by goofy.apple.com (4.12/25-eef)
id AA09677; Thu, 22 Dec 88 15:16:59 pst
Date: Thu, 22 Dec 88 15:16:59 pst
From: Ruben Kleiman <ruben@apple.com>
Message-Id: <8812222316.AA09677@internal.apple.com>
To: HOFFMAN@CSLI.Stanford.EDU, hoffman@csli.Stanford.EDU
Subject: Re: Philosophy Colloquium Dec. 9
Cc: forum-faculty@csli.Stanford.EDU, ssp-forum@csli.Stanford.EDU
Hello. March 10 is fine with me. I am not sure that I will want
to exclusively deal with ontological problems, so the title is
tentative now. I will give you a better title after the holiday
vacations.
Thanks and have an interesting holiday.
Ruben Kleiman
∂22-Dec-88 1709 @Score.Stanford.EDU:RWF@SAIL.Stanford.EDU The Way We Were
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 22 Dec 88 17:05:57 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Thu 22 Dec 88 17:04:14-PST
Message-ID: <4Ut#M@SAIL.Stanford.EDU>
Date: 22 Dec 88 1646 PST
From: Robert W Floyd <RWF@SAIL.Stanford.EDU>
Subject: The Way We Were
To: faculty@SCORE.Stanford.EDU
Ed Feigenbaum says we used to be a research-oriented department,
not a "cram-material-for exams" department. Ed is wrong. The
comprehensive system here replaced a much more onerous and
time-consuming system. When I came here in 1968, there were
five qualifying exams in CS. A student got five shots at
passing three of them. When a student had flunked two, he
couldn't afford to fail again, so he put off any other attempts
as long as possible, specifically to his fifth year. So we had
fifth-year students who had not yet been admitted to candidacy.
With the comp system, most students meet their breadth requirement
in their first year, last I knew. Having met it, they have the
security of knowing that they will not be kicked out if they
make reasonable progress. While the comp may well have become
too big and hard, it is still, as a system, much more reasonable
and less demanding than what preceded it.
Feigenbaum has for years told incoming students to ignore courses
and do research. I have remained skeptical. Does anyone out there
have experience with the results of the research-only approach?
It seems to me that such an approach, in effect, says that there
is no value in studying last years research before doing this year's.
If so, why is this year's research going to be worth doing?
∂23-Dec-88 0811 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Complete axiom sets for arithmetic equations
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 23 Dec 88 08:11:51 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA12112; Fri, 23 Dec 88 08:11:28 PDT
Message-Id: <8812231611.AA12112@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Fri, 23 Dec 88 08:11:51 PST
Received: by BYUADMIN (Mailer R2.01A) id 9717; Fri, 23 Dec 88 09:10:24 MST
Date: Fri, 23 Dec 88 10:02:07 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
lescanne%POINCARE.CRIN.FR@Forsythe.Stanford.EDU
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: lescanne%POINCARE.CRIN.FR@Forsythe.Stanford.EDU
Subject: Complete axiom sets for arithmetic equations
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
Albert Meyer is right, but Martin's example is (obviously ?) provable
by Peano arithmetic and is not provable by the set of identities.
Therefore it is a counterexample for Rittri's question.
Pierre LESCANNE
Centre de Recherche en Informatique de Nancy (CNRS)
telephone: (work) 83 91 21 19 (country code is 33) (home) 83 22 76 92
e-mail: lescanne@poincare.crin.fr
post: BP 239, F54506 VANDOEUVRE Cedex FRANCE
∂23-Dec-88 0823 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Center for Discrete Mathematics and Theoretical Computer Science
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 23 Dec 88 08:23:17 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA12172; Fri, 23 Dec 88 08:22:59 PDT
Message-Id: <8812231622.AA12172@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Fri, 23 Dec 88 08:23:22 PST
Received: by BYUADMIN (Mailer R2.01A) id 0017; Fri, 23 Dec 88 09:20:56 MST
Date: Fri, 23 Dec 88 10:00:04 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Bernard Chazelle <chazelle%PRINCETON.EDU@Forsythe.Stanford.EDU>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Bernard Chazelle <chazelle%PRINCETON.EDU@Forsythe.Stanford.EDU>
Subject: Center for Discrete Mathematics and Theoretical Computer Science
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
****************************************************
CENTER FOR DISCRETE MATHEMATICS
AND THEORETICAL COMPUTER SCIENCE
Special Year 1989-90
Discrete and Computational Geometry
Applications are invited for visiting and
post-doctoral positions in the Center for Discrete Mathematics and
Theoretical Computer Science (DIMACS). This center is supported through
the NSF Science and Technology Centers Research Program.
The participating institutions are Rutgers University,
Princeton University, AT&T Bell Laboratories
and Bell Communications Research. Research facilities are located at the
Rutgers and Princeton campuses.
The purpose of the center is to
address a generally recognized need to understand
fundamental mathematical issues of computation. Applicants
are sought in all areas of discrete mathematics and theoretical
computer science, including (but not limited to) analysis of algorithms,
combinatorics, complexity, computational algebra, discrete and computational
geometry, discrete optimization and graph theory.
The Center will be able to offer
long- and short-term visiting positions. In addition, some regular
positions at the participating institutions may also be available.
A primary activity of the Center is to sponsor year-long research programs
on specific topics of current interest. The topic for 1989-90 is
"Discrete and Computational Geometry". People with expertise in this
area are particularly encouraged to apply. During this year the Center will
sponsor a number of long-term visitors with research interests in discrete and
computational geometry, as well as short-term research workshops in these
areas to which a larger number of participants will be invited. In addition,
the Center is planning a number of other research and educational activities,
which will be announced at a later time.
Postdoctoral and junior applicants
must demonstrate superior research and scholarship potential.
Senior applicants must have an exceptional record of research achievement.
Successful candidates will pursue an active research
program and participate in the activities of the Center.
Direct all inquiries to:
Professor Daniel Gorenstein, Director
DIMACS
Hill Center for the Mathematical Sciences\cr
Rutgers University
New Brunswick, NJ 08903
Arpanet: dimacs@aramis.rutgers.edu
All participating institutions are equal opportunity / affirmative
action employers.
∂23-Dec-88 0825 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Announcement: DIMACS and Special Year.
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 23 Dec 88 08:24:57 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA12187; Fri, 23 Dec 88 08:24:39 PDT
Message-Id: <8812231624.AA12187@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Fri, 23 Dec 88 08:25:02 PST
Received: by BYUADMIN (Mailer R2.01A) id 0079; Fri, 23 Dec 88 09:21:54 MST
Date: Fri, 23 Dec 88 10:03:58 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Mike Grigoriadis <grigoria%ZENO.RUTGERS.EDU@Forsythe.Stanford.EDU>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Mike Grigoriadis <grigoria%ZENO.RUTGERS.EDU@Forsythe.Stanford.EDU>
Subject: Announcement: DIMACS and Special Year.
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
The following is a TEX file containing an announcement of the
newly-formed Discrete Mathematics and Theoretical Computer Science
Center and of its first ``special year'' on Discrete and Computational
Geometry.
Please be kind enough to post it and pass it on.
Thank you.
\nopagenumbers
%\hsize3.5in\hfuzz2pt
\magnification=\magstep1
\tolerance=1600
\centerline{\bf CENTER FOR DISCRETE MATHEMATICS}
\centerline{\bf AND THEORETICAL COMPUTER SCIENCE}
\bigskip
\centerline{\bf Special Year 1989-90}
\centerline{\bf Discrete and Computational Geometry}
\bigskip
Applications are invited for visiting and post-doctoral positions in
the Center for Discrete Mathematics and Theoretical Computer Science
(DIMACS). This center is supported through the NSF Science and
Technology Centers Research Program. The participating institutions
are Rutgers University, Princeton University, AT\&T Bell Laboratories
and Bell Communications Research. Research facilities are located at
the Rutgers and Princeton campuses.
The purpose of the center is to address a generally recognized need to
understand fundamental mathematical issues of computation. Applicants
are sought in all areas of discrete mathematics and theoretical
computer science, including (but not limited to) analysis of
algorithms, combinatorics, complexity, computational algebra, discrete
and computational geometry, discrete optimization and graph theory.
The Center will be able to offer long- and short-term visiting
positions. In addition, some regular positions at the participating
institutions may also be available.
A primary activity of the Center is to sponsor year-long research
programs on specific topics of current interest. The topic for
1989-90 is {\bf Discrete and Computational Geometry}. People with
expertise in this area are particularly encouraged to apply. During
this year the Center will sponsor a number of long-term visitors with
research interests in discrete and computational geometry, as well as
short-term research workshops in these areas to which a larger number
of participants will be invited. In addition, the Center is planning
a number of other research and educational activities, which will be
announced at a later time.
Postdoctoral and junior applicants must demonstrate superior research
and scholarship potential. Senior applicants must have an exceptional
record of research achievement. Successful candidates will pursue an
active research program and participate in the activities of the
Center.
Direct all inquiries to:
\medskip
\centerline{\vbox{\halign{\hfil\cr
Professor Daniel Gorenstein, Director\cr
DIMACS\cr
Hill Center for the Mathematical Sciences\cr
Rutgers University\cr
New Brunswick, NJ 08903\cr
Arpanet:cdimacs@aramis.rutgers.edu\cr}}}\medskip
All participating institutions are equal opportunity\slash affirmative
action employers.
\end
∂23-Dec-88 1747 @Score.Stanford.EDU:eaf@sumex-aim.stanford.edu Re: The Way We Were
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 23 Dec 88 17:46:58 PST
Received: from sumex-aim.stanford.edu by SCORE.STANFORD.EDU with TCP; Fri 23 Dec 88 17:07:22-PST
Received: by sumex-aim.stanford.edu (4.0/inc-1.0)
id AA08014; Fri, 23 Dec 88 17:06:39 PST
Date: Fri, 23 Dec 1988 17:06:38 PST
From: Edward A. Feigenbaum <eaf@sumex-aim.stanford.edu>
To: Robert W Floyd <RWF@sail.stanford.edu>
Cc: faculty@score.stanford.edu, eaf@sumex-aim.stanford.edu
Subject: Re: The Way We Were
In-Reply-To: Your message of 22 Dec 88 1646 PST
Message-Id: <CMM.0.88.598928798.eaf@sumex-aim.stanford.edu>
Bob Floyd's riposte should not go unanswered, although that is my
normal tendancy in long-winded debates like this.
He may be right about what the exam system was in 1968. I don't
remember the details of comps/quals/etc. I just recall that students
in their first and second years were busily engaged in doing
research and exercising their creativity, rather than being
enmeshed deeply in a course structure.
Bob asks the question "How will they learn about last year's
research?" To state the obvious, today's research exists only in the
context of all of the research that has been done in the area up to
"today". Today's research makes salient the need to go back and
read the articles/books/results of many yesteryears. I.e. one's
learning is driven by the problem, not by sitting in a classroom
absorbing lectures
This particular portion of the debate goes back a long time, at least to
the time of John Dewey and perhaps earlier. It is strongly coupled to
another debate about whether the training of a Ph.D. scientist is
primarily an "apprenticeship training" of a very high-level kind, or
or whether it is a more organized (rigidified?) disciplinary
indoctrination.
I havn't followed what CMU or MIT are doing these days with regard to
this question. If one wants to study the research-only experience, I
believe it exists in its pure form in the D.Phil degrees at Oxford
and Cambridge.
Incidentally, to clarify my position (so that Bob does not get to define
it), I do not advocate research-only. I advocate testing breadth with the
comprehensive exam. I advocate that new students plunge into research
work as soon as they arrive, and that they learn what they need to learn
for the comprehensive exams by self-study, eschewing the forced discipline
of courses/assignments/course exams. This enables them to learn the way
they are going to learn for the rest of their research lives. And plunging
directly into research fans the spark of creativity that they bring here,
rather than snuffing it out in course lectures and procedures.
Ed Feigenbaum
∂25-Dec-88 1351 @polya.Stanford.EDU:coraki!pratt@Sun.COM Minimal models
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 25 Dec 88 13:51:01 PST
Received: from SUN.COM by polya.Stanford.EDU (5.59/25-eef) id AA05394; Sun, 25 Dec 88 13:47:15 PDT
Received: from sun.Sun.COM (sun-bb.sun.com) by Sun.COM (4.1/SMI-4.0)
id AA03296; Sun, 25 Dec 88 13:49:33 PST
Received: from coraki.UUCP by sun.Sun.COM (4.0/SMI-4.0)
id AA14881; Sun, 25 Dec 88 13:46:49 PST
Received: by (4.0/SMI-4.0Beta)
id AA06034; Sun, 25 Dec 88 13:45:57 PST
Date: Sun, 25 Dec 88 13:45:57 PST
From: Vaughan Pratt <coraki!pratt@Sun.COM>
Message-Id: <8812252145.AA06034@>
To: lop@cs.stanford.edu
Subject: Minimal models
Cc: coraki!pratt@Sun.COM
+ Conditional logics. Nonmonotonic, nontransitive consequence relations.
(M |= A->B iff N|=B for the "minimal revision" N of M such that N|=A.)
The following does not address Tom's main question about connections
between minimal models, but rather explores aspects of the above
notion.
If we write p->q for material implication (1->0 = 0, 0->1 = 0->0 = 1->1
= 1) and p=>q for strict (necessary material) implication, we may
relate the two via
p=>q = [](p->q)
That is, strict implication is necessary material implication.
*
This idea has a long history dating back to Aristotle and Diodorus,
further pursued by various medieval writers, and formalized as above by
C.I. Lewis and K. Goedel, modulo the choice of glyphs for <> and [] (L
and M were popular then). Also Lewis wrote !<>(p&!q), which Goedel
tidied up as [](p->q), see the Lemmon Notes, Monograph #11 of the
American Philosophical Quarterly, ed. K. Segerberg, 1977.
In dynamic logic material implication p->q can be written [p?]q. If we
write [] as [N] where N is the action of going to a neighboring
possible world, then p=>q becomes [N][p?]q, or [N;p?]q, where N;p? is
the composite action of first going to a neighboring world and then
testing whether p holds, diverging if not.
From this point of view we may relate minimal-revision implication to
strict implication by replacing N by a smaller action p# that goes no
further than is needed to bring about p.
Here are some random thoughts about how "no further than needed" might
be formalized, and some of its consequences. I don't know how this
relates to extant notions of minimal revision.
If we impose a (not necessarily symmetric) distance metric d(u,v) on
possible worlds, we can define p# to be the set of pairs (u,v) of
possible worlds (states) such that for all w|=p, d(u,v) <= d(u,w).
(This definition does not force p# to be either deterministic or
total.) This makes p#, at each u, the greatest ball centered on u not
having p in its interior. Abbreviate p#;p? to p!. p! is the action
that ensures p at minimal cost. At each u, p! is that portion of the
surface of p# satisfying p. It is possible that there is no least-cost
way of ensuring p, in which case p! will be empty.
As an example d(u,v) may be the number of variables that differ between
u and v. If P(x) (i.e. P with one free variable x) holds for exactly
one value z of x, write P(x) as x=z. assignment statement x:=z. Then
(x=3)# acts as x:=? (random assignment) except when x is already 3, in
which case it acts as the identity (no change), while (x=3)! is the
assignment statement x:=3.
For an arithmetic universe, d(u,v) might be made the distance from u to
v under some Lp metric, e.g. Euclidean (p=2). Then (x=3)# becomes at
each u the sphere centered at u and having the plane x=3 as a tangent
plane, while (x=3)! is still x:=3 (why?). Whereas (x=y)# is still a
sphere at each u, (x=y)! is a deterministic action making the minimal
change to x and y (under the Euclidean metric) needed to bring them
together.
One disconcerting feature of minimal-revision implication is that
worlds lying just outside p# have no influence. Whatever shape the
necessity action N has, one does not ordinarily expect it to cut off
sharply at some point.
-v
====================
* Diodorus died of shame c. 307 B.C. when he was unable to solve a logic
problem posed by Stilpon. Should the MTC qual raise its standards?
∂26-Dec-88 1541 @Score.Stanford.EDU:daniel@mojave.Stanford.EDU Ph.D. research: the difference between exam requirements and course requirements.
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 26 Dec 88 15:41:02 PST
Received: from mojave.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Mon 26 Dec 88 15:38:42-PST
Received: by mojave.Stanford.EDU (5.59/inc-1.0)
id AA03289; Mon, 26 Dec 88 15:39:23 PDT
Date: Mon, 26 Dec 88 15:39:23 PDT
From: daniel@mojave.Stanford.EDU (Daniel Weise)
Message-Id: <8812262339.AA03289@mojave.Stanford.EDU>
To: RWF@SAIL.Stanford.EDU
Cc: linton@LURCH.STANFORD.EDU, faculty@SCORE.Stanford.EDU
In-Reply-To: Robert W Floyd's message of 21 Dec 88 1348 PST <14Tx8$@SAIL.Stanford.EDU>
Subject: Ph.D. research: the difference between exam requirements and course requirements.
I think a PhD should be able to teach any intro level core CS course.
You know, I absolutely agree with this statement. But it has nothing
to do with what the comps are about. I can teach any intro level core
CS course (having taught architecture, compilers, programming
langauges, and AI, I'm only missing an automata/computability course
to cover all bases), but I can't pass the comps. There's just TOO
MUCH THERE.
The emperor has no clothes: Stanford students no longer make an impact
in the world. Halpern already mentioned theory. We have yet to get
any dissertation to even place in the ACM dissertation award contest.
MIT always at least places. Our students don't get faculty positions
at MIT (Agrawal was an EE student!), CMU (Gross is research faculty),
or Berkeley. MIT and CMU students regularly get jobs at the top four.
We admit the same caliber student as Berkeley, MIT, and CMU, but we
aren't training them properly as researchers. As David Dill points
out, the problem is one of atmosphere and messages. The message must
be "research is the reason you are here." This must be the primary
message. Narrowing the scope of the comps is only one part of getting
this message across, but it is a necessary part.
Daniel
∂27-Dec-88 1134 @Score.Stanford.EDU:jlh@vsop.Stanford.EDU Re: Ph.D. research: the difference between exam requirements and course requirements.
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 27 Dec 88 11:34:53 PST
Received: from vsop.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Tue 27 Dec 88 11:32:23-PST
Received: from LOCALHOST by vsop.Stanford.EDU (5.59/inc-1.0)
id AA06462; Tue, 27 Dec 88 11:17:45 PDT
Message-Id: <8812271917.AA06462@vsop.Stanford.EDU>
To: faculty@SCORE.Stanford.EDU
Subject: Re: Ph.D. research: the difference between exam requirements and course requirements.
In-Reply-To: Your message of Mon, 26 Dec 88 15:39:23 -0700.
<8812262339.AA03289@mojave.Stanford.EDU>
Date: Tue, 27 Dec 88 11:17:40 PST
From: jlh@vsop.Stanford.EDU
Some observations:
1. The comps have become too difficult. I believe that almost any CS
undergrad that we admit should pass the comps in the first year. I
am not sure that our own undergrads could do this.
2. We award students PhD candidacy after they pass the comps (the
university requires this within two years). Courses and degress says
"Admission to candidacy is an acknowledgement of the student's
potential to complete successfully the rquirements for the Ph.D." The
intention is clearly that students have passed the necessary exams - in
fact courses and degrees calls the exams leading to candidacy "the
departmental qualifying procedures". Are we the only department that
administers another exam after candidacy but before the oral exam?
(Some departments use the university oral the way we use the qualifying
exams.)
3. We don't normally sort systems students by department, but Daniel's
message encouraged me to do it. Here are some (not necessarily all) of
Stanford's best recent systems students that went to top academic
places: Gross(CMU), Agarwal(MIT), Marzullo(Cornell), Gifford(MIT),
Spector(CMU). Only Spector was CS. This is NOT because the EE students
are better. But, the top EE people easily pass the EE quals the first
year and then they forget about exams and concentrate on research. They
have all published papers BEFORE they settled down on a thesis topic. I
don't think the above students graduated in much less than the average
term (5 years), but each of them had several publications when they
graduated.
John
∂27-Dec-88 1445 LOGMTC-mailer Model theoretic properties of universal horn sentences
Received: from russell (Russell.Stanford.EDU) by SAIL.Stanford.EDU with TCP; 27 Dec 88 14:45:38 PST
Received: from [127.0.0.1] by russell (4.0/4.7); Tue, 27 Dec 88 11:13:15 PST
To: logic@russell
Cc: ynm@math.ucla.edu
Subject: Model theoretic properties of universal horn sentences
Date: Tue, 27 Dec 88 11:11:42 PST
From: Jon Barwise <barwise@russell>
I once heard a talk at Oberwolfach by a German logician on the
above topic. He was interested in those properties that made
horn clauses particularly suitable for computational purposes.
But I can remember nothing more about the talk, like who gave it.
Does anyone know anything about this work, or about other discussions
of the same topic?
Any help will be appreciated.
Jon
∂27-Dec-88 1659 @Score.Stanford.EDU:binford@Boa-Constrictor.Stanford.EDU comps
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 27 Dec 88 16:58:08 PST
Received: from Boa-Constrictor.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Tue 27 Dec 88 16:55:43-PST
Received: by Boa-Constrictor.Stanford.EDU.stanford.edu (4.0/SMI-DDN)
id AA03889; Tue, 27 Dec 88 16:48:14 PST
Date: Tue, 27 Dec 88 16:48:14 PST
From: binford@Boa-Constrictor.stanford.edu (Tom Binford)
Message-Id: <8812280048.AA03889@Boa-Constrictor.Stanford.EDU.stanford.edu>
To: faculty@score
Subject: comps
To continue the debate on comps, courses, and research.
I personally think that research is top priority and
the starting place. Perhaps breadth vs depth is not an
"either/or". I also think that courses are valuable.
I propose that we change the order. We now require
demonstration of breadth before research. I propose that we
begin students with research from the beginning and that we
require the demonstration of breadth late in the PhD
program. It is natural for people to take courses while
doing research. The majority of my students take courses
which are not directly associated with requirements,
especially a succession of math courses.
It does not matter when breadth is satisfied, or how
it is satisfied. I like the comp myself. The comp itself
can be a good experience, a time when students peak in
breadth. It is a chance for integration that is valuable.
Courses can also demonstrate breadth. However, as Floyd has
pointed out, this can be suspect.
Perhaps the most students who have problems
encounter problems with research. It is best to find
problems as early as possible for those who have problems.
Some may not have background and may require time to
develop. Some may not have the motivation or orientation
for research.
There are several questions that occur. One is that
comps are a filter before research in the PhD process. I do
not think that the comps are a useful filter, that they are
correlated with research potential. Another question is
that it takes time to take courses, etc. True. I think
that a student's purpose is to do science, not to find a
minimum path through requirements for a union card. Another
is that students require background for research. True,
their advisors should guide them to get this background.
Recently, we have promoted taking courses
exclusively before research. This discussion series is a
re-thinking of priorities. I think that we are becoming
increasingly rigid about observable milestones. When we
began, this was intended to motivate students to make
progress in order to cut their time through the program.
Now it is much more bureaucratic. I suggest that we return
to our original motivation.
Tom Binford
-------
∂28-Dec-88 1229 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu The *Other* Unification Algorithm, I
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 28 Dec 88 12:29:25 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA13044; Wed, 28 Dec 88 12:28:49 PDT
Message-Id: <8812282028.AA13044@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Wed, 28 Dec 88 12:29:14 PST
Received: by BYUADMIN (Mailer R2.01A) id 2772; Wed, 28 Dec 88 13:24:47 MST
Date: Wed, 28 Dec 88 13:39:33 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Mark William Hopkins <markh%CSD4.MILW.WISC.EDU@Forsythe.Stanford.EDU>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Mark William Hopkins <markh%CSD4.MILW.WISC.EDU@Forsythe.Stanford.EDU>
Subject: The *Other* Unification Algorithm, I
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
If you are given two patterns:
f ?x (g ?x a) (h ?y) and f (h ?z) ?y (h ?z)
then you may have been taught that the Unification of these two patterns is
derived by making appropriate substitutions for the pattern variables ?x and ?y
in the first pattern, ?y and ?z in the second in such a way that the two
results match. There is an algorithm to do this procedure which is called
Pattern Unification. Yet there is a completely different type of "unification"
which is never mentioned in that context. I am going to compare the two
algorithms here.
This is a simple illustration of how Pattern Unification works. Take the
two patterns
f ?x (g ?x a) (h ?y) f (h ?z) ?y (h ?z)
and parse them:
f ?x (g ?x a) (h ?y) f (h ?z) ?y (h ?z)
becomes (0), where: becomes (5), where:
(0) = f (3) (1) (2) (5) = f (6) (7) (6)
(1) = g (3) a (6) = h (8)
(2) = h (4) (7) = ?y
(3) = ?x (8) = ?z
(4) = ?y
The labels (1), (2), etc. inside each string represents pointers to the string
with the given label. Pattern variables are represented as empty parses in
such a way that distinct variables have distinct labels. Each of these two
parses is a graph, and the unification algorithm is a particular kind of graph
traversal algorithm. I choose to represent it here is a Breadth First Search
traversal.
The algorithm goes as follows: to unify (0) and (5), unify each of the
components of the corresponding strings. When two patterns fail to unify,
we represent the result by the "null-pattern" (), (my terminology) which
satisfies the axiom:
if S = a1 ... an and ai = () for and i, then S = ().
that is, any string containing the null pattern reduces to the null pattern.
So we match (0) and (5). As a result we are required to match (3)/(6),
(1)/(7) and (2)/(6). When we get to (3), we see that (3) is a "more general"
pattern than (6) ... it can be reduced to (6) by an appropriate substitution
for the variable ?x. So we set (3) to (6). The new table entry becomes:
(3) = (6).
Matching (1) to (7) creates a new table entry:
(7) = (1).
When we match (2) to (6), we find that we have to match (4) to (8). Both
entries are equally general and so either can be bound to the other. We'll
bind (8) to (4) to create the new entry:
(8) = (4).
The final result is the table:
(0) = f (3) (1) (2) (5) = f (6) (7) (6)
(1) = g (3) a (6) = h (8)
(2) = h (4) (7) = (1)
(3) = (6) (8) = (4)
(4) = ?y
Pattern unification does not allow for recursively defined patterns, so we need
to check to ensure that the graph does not have any cycles in it. In the
process we may eliminate those vertices that cannot be reached from (0) to get
and "dereference" the bound variables (3), (7) and (8) to get:
(0) = f (6) (1) (2)
(1) = g (6) a
(2) = h (4)
(6) = h (4)
(4) = ?y
The final result of the unification of the two patterns:
f ?x (g ?x a) (h ?y) f (h ?z) ?y (h ?z)
is:
f (h ?y) (g (h ?y) a) (h ?y)
Yet there is another kind of unification algorithm. This other algorithm
attempts to derive the most specific pattern C that is more general than two
given patterns A or B. A and B can both be derived from C by substituting
appropriate variables in C, for example:
if A = f ?x a and B = f b ?y
then
C = f ?x ?y
Unification does the opposite. The algorithm uses the same parse table as
above but performs the bindings in a slightly different way. To apply the
other algorithm on the two patterns:
f ?x (g ?x a) (h ?y) f (h ?z) ?y (h ?z)
we proceed in the following way. We form the parse tables:
f ?x (g ?x a) (h ?y) f (h ?z) ?y (h ?z)
becomes (0), where: becomes (5), where:
(0) = f (3) (1) (2) (5) = f (6) (7) (6)
(1) = g (3) a (6) = h (8)
(2) = h (4) (7) = ?y
(3) = ?x (8) = ?z
(4) = ?y
and then match (0) to (5). This entails matching (3)/(6), (1)/(7) and (2)/(6)
as before. In the first match, (6) is less general than (3). The binding will
occur in the opposite direction. However, the entry (6) is left untouched.
What will be changed is only the label (6) which occurs in the string (5), not
the string (6), itself. The new table entry is thus:
(5) = f (3) (7) (6)
Matching (1)/(7) entails a similar change for the entry (0):
(0) = f (3) (7) (2)
Finally, matching (2)/(6) entails matching (4)/(8). As before, since both
patterns are equally general, we can bind either to the other. We choose to
bind (8) to (4). Thus, the new table entry for (6) is:
(6) = h (4).
This leaves us with the table:
(0) = f (3) (7) (2) (5) = f (3) (7) (6)
(1) = g (3) a (6) = h (4)
(2) = h (4) (7) = ?y
(3) = ?x (8) = ?z
(4) = ?y
which, when reduced, gives us:
(0) = f (3) (7) (2)
(3) = ?x
(7) = ?y
(2) = h (4)
(4) = ?z
(since (4) and (7) are distinct labels that thereofre represent distinct
variables, one of them has been rewritten)
The final result of this other unification algorithm on
f ?x (g ?x a) (h ?y) f (h ?z) ?y (h ?z)
is
f ?x ?y (h ?z)
------------------------------------------------------------------------
Date: 27 Dec 88 22:30:17 GMT
From: markh@csd4.milw.wisc.edu (Mark William Hopkins)
Organization: University of Wisconsin-Milwaukee
Subject: Re: The *Other* Unification Algorithm, II
Message-Id: <117@csd4.milw.wisc.edu>
This is a followup on the previous article posted on this topic.
Underlying unification algorithms presented in that article is a theory
of syntatic patterns, which I will try to outline here.
Consider a specific grammar G:
S --> NP VP
NP --> D N
VP --> V NP
D --> 'the' | 'a'
N --> 'boy' | 'girl' | 'child'
V --> 'saw' | 'kissed' | 'loves' | 'hit'
A syntatic pattern is an expression formed with this grammar by adding pattern
variables. Pattern variables are denoted here by identifiers preceded by
question marks, e.g. ?x. A pattern variable denotes an arbitrary entity of one
of the classes, S, NP, ..., V -- this class is referred to as the variable's
type. A variable's type is assumed to be given a priori.
In addition, lambda abstractions are allowed. For example:
F = lambda ?x: NP ( ?x kissed the girl)
denotes the function which takes a NP argument and produces the result as
indicated in the brackets. For example:
F[the boy] = [the boy kissed the girl]
The type of this function is denoted as (NP --> S).
Underlying these considerations is a type system for syntatic patterns.
This system is defined a set of type matching rules for each non-terminal in
the grammar; the rules are generated from the grammar itself. For example,
the type matching rules for the class S are:
(I) ?x: S if and only if ?x denotes an arbitrary member of S.
(II) if np: NP and vp: VP then np vp: S
In addition for these type matching rules, there are type matching rules for
lambda abstractions:
(I) if ?x: N1 and f(?x): N2 then (lambda ?x. f(?x)): N1 --> N2
(II) if f: N1 --> N2 and n: N1 then (f n): N2
For each type, the pattern space has a partial ordering defined on it.
For example, if A and B are patterns of type S, then
A Less1 B if and only if A = (lambda ?x.B) n
for some pattern variable ?x and compatible pattern n. This states that
A is a less general pattern than B and can be derived from B by substituting
for one pattern variable. The partial ordering, Less, is defined as the
reflexive/transitive closure of this relation.
Since we have a partial ordering, we can define least upper bounds and
greatest lower bounds. This is where the previous article figures in. The
greatest lower bound of two patterns is the result obtained by the Unification
Algorithm. The least upper bound is obtained by the Other Unification
Algorithm discussed in that article.
For reference, I will denote this least upper bound as the Abstraction of
the two patterns and will call the algorithm Abstraction Unification. Given
two pattern A, B if their abstraction is a pattern C then the following is
true:
A = lambda ?x1. ... (lambda ?xm. C) n1 ... nm
B = lambda ?y1. ... (lambda ?yn. C) p1 ... pm
For example, for the two patterns:
?np kissed the girl, the boy ?vp
the abstraction is:
?np ?vp
and
?np kissed the girl = ( lambda ?vp. (?np ?vp) ) [kissed the girl]
the boy ?vp = ( lambda ?np. (?np ?vp) ) [the boy]
Another example:
?np kissed the girl, ?np hit the boy
gives:
?np ?v the ?n
where:
?np kissed the girl = lambda ?v. lambda ?n.(?np ?v the ?n) [kissed] [girl]
?np hit the boy = lambda ?v. lambda ?n.(?np ?v the ?n) [hit] [boy]
It is here that we see the significance of Abstraction Unification: It is a
*syntatic pattern recognition* algorithm, capable of inducting parametrized
patterns from a set of instances.
∂28-Dec-88 1337 aaai@sumex-aim.stanford.edu NTU
Received: from sumex-aim.stanford.edu by SAIL.Stanford.EDU with TCP; 28 Dec 88 13:37:16 PST
Received: by sumex-aim.stanford.edu (4.0/inc-1.0)
id AA13913; Wed, 28 Dec 88 13:27:26 PST
Date: Wed, 28 Dec 1988 13:27:24 PST
From: AAAI <aaai@sumex-aim.stanford.edu>
To: officers:;@sumex-aim.stanford.edu
Cc: aaai@sumex-aim.stanford.edu
Subject: NTU
Message-Id: <CMM.0.88.599347644.aaai@sumex-aim.stanford.edu>
Dear Councilor:
About a month ago, I sent out an extensive site visit report to the
National Technological University regarding the possibility of the
AAAI sponsoring its tutorials over their satellite network. So
far I have only received two responses to the questions in the report.
Could you please review the attached report and send me your comments
soon? They are expecting some response from us by early January
regarding our intention to pursue this venture or not.
Thanks,
Claudia
Monday, November 21, 1988
Visit to National Technological University, Ft. Collins, Co.
On the above date, I visited with Dr. Lionel Baldwin, President of NTU, and
Richard Soderberg, Director of NTU Professional Development Programs. The
purpose of my visit was to review their facilities, discuss their organization-
al, marketing and sales structures, and review possible financial arrangements
for the satellite transmitted tutorials as professional development courses.
NTU is a program with the Association for Media-based Continuing Education for
Engineers (AMCEE). Incorporated in 1985, the association divided its credit
versus non-credit courses between NTU and a group in Georgia. In 1987,
NTU assumed the responsibilities of both credit and non-credit programs.
NTU is a non-profit organization identified under the IRS code 501 (c) (3)
and 509 (a) (1). NTU has a staff of 20 people. They have studio sites
in about 7 locals across the country.
FINANCIAL STRUCTURE
NTU provides courses to over 230 different sponsoring corporate sites and
25 member universities. Each sponsoring site pays an annual fee to NTU to
use their satellite network. In addition to the annual fee, each sponsoring
site will pay a regisitration fee for each course. Usually the registration
fee is based on a graduated scale beginning with approximately $200 a person
for a full day course (4 1/2 hours of lecture) up to 6 attendees.
After 6 registrants, it is $1250 per course per site. Each course collects
$36-42,000 gross revenue per tutorial.
The typical financial arrangement with NTU and outside organization follows:
* NTU receives 40% gross revenues; they are responsible for all
marketing and sales; invoicing of the sites, transponder time
for the broadcast, accounts receivable collection and distribution
of funds.
* Organization receives 60% gross revenues; they are responsible
for the selection of the tutorial, payment to the speakers,
studio and uplink facility and costs to the mailing of the
tutorial syllabi to the sites.
We could expect between $10-16,000 net revenues per tutorial. Presently
we net about $27,000 per tutorial.
In addition after a review of their 1987-1988 Annual Report, NTU is barely
breaking even with their expenses outweighting their revenues in 1987-88.
They have a sizeable accounts receivables with their investment in the
physical facilities as their primary assets. I have a copy of the
report in my office if you would like to review it.
Marketing/Sales Efforts
NTU uses each site's coordinator as the primary mechanisms to distribute
their promotional literature about each quarter's course offerings. Each
month NTU mails to 12,000 names their course offering catalogue and updates.
They do no display advertising, but sponsor a free week long management
seminar to find new students and site sponsors. They feel that live
presentations is the best demonstration of the network's capabilities
and the best form of advertising.
For their professional development courses, they do no marketing
research to determine what courses their sites sponsors want to attend.
Their approach is to simply send a list of prospective course outlines
to their site sponsor's coordinators and ask them to see if anyone in
their organization is interested in these courses. This is clearly the
weak link in their advertising efforts.
They do very little evaluation of their courses to determine the
adequacy of their speakers and course content.
They limit their sales efforts to the domestic marketplace and have not
begun to explore any foreign network distribution of their professional
development courses.
OPERATIONS
The AAAI would be responsible in preparing a first draft of course
selections. NTU would then distribute that list to their site sponsor's
coordinator and get their feedback. After a determination of final
course offerings was made, then we would create our own speaker
fee contract and set up a schedule with NTU and the speaker.(They have already
suggested four tutorials for 1989). The speaker would then go to one of the
studio sites and simply give his lecture as if he or she was in a
classroom.
IEEE AND ACS
At this time only IEEE produces courses on this network. However they
do their own advertising, studio broadcasting, etc (the works!), and
they apparently lose money. IEEE only uses the satellite network and
some advertising organs of NTU. ACS is still formulating its program
and hopefully it will be implemented in 1989.
TRENDS
There is a growing trend for large corporations to establish their own
satellite networks (ie IBM, HP) and offer their own classes.
NTU is linking into these networks at this time.
The motivation for the establishment of these private networks
is to cut the costs of corporate educational efforts by offering
courses. Presently, it costs a corporation $350 per day to send
someone to an off-site class while an internal class is $150 per day.
At some point the growth of alternative delivery methods
of educational offerings will eat into our tutorial revenues. At
this time, there is no evidence that our tutorial revenues are
dropping.
COMMENTS
Clearly, NTU is a young organization, struggling financially at this time,
with a weak marketing and sales structure.
However, if the trend for more internal-derived technical and professional
courses continues, then NTU may be in a very advantageous position in the
future. If AAAI was to establish its own satellite tutorials, then we would
already be in the position to take advantage of any changes in trends.
If the Council were to decide on working with NTU, then we should proceed
slowly and carefully by ensuring that our tutorial revenues are not
cut by our own satellite sponsored tutorials. We may be able to achieve
this by scheduling courses on the satellite network that do not conflict
with our ongoing conference tutorial program.
I would like your comments on the proposal to establish satellite
tutorials. If you need any additional information about NTU, please
send me a message.
Claudia Mazzetti
∂28-Dec-88 1531 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu amended "call for papers" for AMAST Conference
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 28 Dec 88 15:31:20 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA16783; Wed, 28 Dec 88 15:30:41 PDT
Message-Id: <8812282330.AA16783@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Wed, 28 Dec 88 15:31:11 PST
Received: by BYUADMIN (Mailer R2.01A) id 9457; Wed, 28 Dec 88 15:45:49 MST
Date: Tue, 27 Dec 88 09:56:09 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Chic Rattray <cr%CS.STIR.AC.UK@Forsythe.Stanford.EDU>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Chic Rattray <cr%CS.STIR.AC.UK@Forsythe.Stanford.EDU>
Subject: amended "call for papers" for AMAST Conference
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
The following is a slightly amended "call for papers" for the
AMAST Conference to be held at the University of Iowa in May 1989.
-------------------------------------------------------------------------
Second CALL FOR ABSTRACTS
International Conference on
Algebraic Methodology And Software Technology, AMAST
Iowa City, Iowa, May 22-24, 1989
The goal of the conference is to consolidate the trend of using algebraic
methodology as a foundation for software technology showing that universal
algebra provides a practical mathematical alternative to ad hoc approaches
used in software development. Both academia and industry are the benefici-
ary of such a formal foundation.
In order to achieve this goal, we plan to bring together leading research-
ers in mathematics and computer science on a common platform so that alge-
braic methodologies that can be used as a viable alternative to ad hoc
approaches for software development can be identified and the appropriate-
ness of such alternatives in view of actual implementations can be dis-
cussed. The invited speakers include:
Constable, R., Cornell University, Ithaca, New York, USA
Lawvere, W. F., State University of New York at Buffalo, USA
Meseguer, J., SRI International, USA
Nivat, M., The University of Paris, France
Wagner, E., IBM Thomas J. Watson Research Center, USA
The invited talks will cover both valid experiments regarding the use of
algebraic methodology for the development of software technology and frame-
works for guiding further development work in this area.
Talks reporting research in algebra suitable as a foundation for software
technology as well as software technologies developed by means of algebraic
methodologies are welcome. We invite you to submit a two page abstract
(including a few citations of relevant work) of your talk to the address
AMAST CONFERENCE
Computer Science and Mathematics Departments
The University of Iowa
Iowa City, IA 52242, U.S.A.
Important due dates:
(1) Two page abstract submission by February 1, 1989.
(2) Notification of acceptance by March 15, 1989.
(3) Abbreviated four page camera ready papers to be published in
proceeding by April 10, 1989.
A special issue of the journal ``Theoretical Computer Science'' will
be dedicated to this conference and each participant will be invited to
submit a full paper for publication. In addition, four page abbreviated
papers of the talks presented at the conference together with the invited
talks will be published in the proceedings that will be available to the
attendees upon their arrival in Iowa City. Further information can be
obtained from:
In Europe: In U.S.A: In Canada:
-------------------------------------------------------------------------
Prof. Maurice Nivat Prof. Eugene Madison, Math. Prof. Dan Ionescu
Universite Paris Prof. Teodor Rus, Comp.Sci. University of Ottawa
Place Jussieu University of Iowa Department of Elect. Eng.
75005 Paris, France Iowa City, IA 52242 770 King Edward, Ottawa
Phone: (1) 43259874 Phone: (319)-335-0694 Ont. Canada K1N 6N5
e-mail:rus@herky.cs.uiowa.edu Phone: (613)-564-2211
Prof. Charles Rattray e-mail:
Computing Science Dpt. diopb@uottawa.BITNET
University of Stirling
Stirling , FK9 4LA, Scotland
e-mail: cr%compsci.stirling.ac.uk@nss.cs.ucl.ac.uk
The conference will be held at the Conference Center of the University of
Iowa. The Center for Conferences and Institutes will handle hotel reserva-
tion and registration. A block of rooms in the student dormitory will be
available at about $15 a night. A limited number of rooms at the Iowa
Memorial Union guest house at $40 a night are also reserved. For more
information contact:
Bobby C Davis
Center for Conferences and Institutes
The University of Iowa, Iowa Memorial Union
Iowa City, Iowa 52242
Phone (319)335-3231
Limousine services between Cedar Rapids airport and Iowa City are avail-
able.
∂28-Dec-88 2238 @Score.Stanford.EDU:eaf@sumex-aim.stanford.edu Re: comps
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 28 Dec 88 22:37:57 PST
Received: from sumex-aim.stanford.edu by SCORE.STANFORD.EDU with TCP; Wed 28 Dec 88 22:35:58-PST
Received: by sumex-aim.stanford.edu (4.0/inc-1.0)
id AA18175; Wed, 28 Dec 88 22:36:56 PST
Date: Wed, 28 Dec 1988 22:36:56 PST
From: Edward A. Feigenbaum <eaf@sumex-aim.stanford.edu>
To: binford@boa-constrictor.stanford.edu (Tom Binford)
Cc: faculty@score.stanford.edu
Subject: Re: comps
In-Reply-To: Your message of Tue, 27 Dec 88 16:48:14 PST
Message-Id: <CMM.0.88.599380616.eaf@sumex-aim.stanford.edu>
This is just a short one, with a few comments, but I will probably write a
longer one later in the vacation.
It is genuinely exciting for me to watch the department faculty reexamine
some the basics under which it/they operate. Nothing of this importance
(in my opinion) has surfaced during the past several years, perhaps during
all of the 1980s. This discussion is deeply about we stand for.
Comment two. Binford has a genuinely interesting idea in his suggestion to
have the student pass the qual before the comp. That deserves serious
discussion.
Comment three. Regarding the comments that "the comp is getting harder
and harder", I want to comment only on the portion I have participated in
framing (namely the AI material that is included in applications; not the
AI material in "theory"). Honestly, I could not have asked easier questions,
In fact, several of the questions were simply mapped over from mid-terms
or finals of CS123. These were really "kid's questions". And purposely
intended to be so, because we did not want to burden students from the other
areas with having to have any knowledge in depth of the AI literature. For
after all the comp is a test of breadth.
Perhaps this is not being done by other areas. But I plead "not guilty"
to the charge of making comps harder and harder.
I sure wish we could get more of the faculty to participate in this
electronic discussion!
Best holiday wishes to all,
Ed Feigenbaum
∂29-Dec-88 0523 LOGMTC-mailer Re: Model theoretic properties of universal horn sentences
Received: from russell (Russell.Stanford.EDU) by SAIL.Stanford.EDU with TCP; 29 Dec 88 05:23:26 PST
Received: from CSL.SRI.COM by russell (4.0/4.7); Thu, 29 Dec 88 05:25:35 PST
Received: from NSS.CS.UCL.AC.UK by CSL.SRI.COM with SMTP
(5.59e++/IDA-1.2.3-10) id AA02002; Thu, 29 Dec 88 05:21:58 PST
Received: from prg.oxford.ac.uk by NSS.Cs.Ucl.AC.UK via Janet with NIFTP
id aa02580; 29 Dec 88 13:11 GMT
Received: from uk.ac.oxford.prg.client80 (client80) by uk.ac.ox.prg (4.12/prgv.29)
id AA23076; Thu, 29 Dec 88 13:15:41 gmt
Received: by uk.ac.oxford.prg.client80 (3.2/prg.1)
id AA25307; Thu, 29 Dec 88 13:18:20 GMT
Date: Thu, 29 Dec 88 13:18:20 GMT
From: goguen@prg.oxford.ac.uk
Message-Id: <8812291318.AA25307@uk.ac.oxford.prg.client80>
To: logic <logic@russell.stanford.edu>
Subject: Re: Model theoretic properties of universal horn sentences
jon,
perhaps it was bernd mahr, of the technical university of berlin, who gave
the talk you heard. at least, he has published several papers on the subject.
the gist is that horn clause logic is the largest subinstitution of first
order logic that always has initial models (but the exact statement is more
complex).
joseph
∂31-Dec-88 1755 @Score.Stanford.EDU:nilsson@Tenaya.stanford.edu Happy New Year!
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 31 Dec 88 17:55:38 PST
Received: from Tenaya.stanford.edu by SCORE.STANFORD.EDU with TCP; Sat 31 Dec 88 17:49:25-PST
Received: by Tenaya.stanford.edu (5.59/25-eef) id AA04228; Sat, 31 Dec 88 17:48:43 PDT
Date: Sat, 31 Dec 88 17:48:43 PDT
From: Nils Nilsson <nilsson@Tenaya.stanford.edu>
Message-Id: <8901010148.AA04228@Tenaya.stanford.edu>
To: csd-list@score
Cc: gibbons@sierra, kruger@sierra
Subject: Happy New Year!
Dear faculty, staff, students and friends of computer science at Stanford:
I'll start my traditional end-of-year-summary by reviewing some of the
good news and accomplishments of 1988 (in no particular order):
1) We are extremely fortunate to have persuaded Jeff Eppinger and
Monica Lam to join the CS Department and Theresa Meng to join CSL (as
an EE faculty member). They are the latest additions to a most
outstanding group of young faculty. This group is Stanford's primary
assurance of continued excellence in computer science well into the
future.
2) Our lecturers, Roy Jones, Steve Fisher, and Mike Cleron, are really
doing an outstanding job with the CS introductory courses. Roy has
worked very hard to keep our educational program running smoothly
through the transition caused by Stuart Reges's departure. I am very
happy with the way the undergraduate cs-related majors are evolving.
I don't have the latest figures in front of me, but I believe there are
around 70 or so students each who have declared majors in Computer
Science, in Symbolic Systems, and in Math/Comp.Sci. I believe there
are a dozen or so who have declared in Computer Systems Engineering.
That makes well over 200 total computer-science related majors. We
were also quite lucky to have talked Brian Reid into teaching the
CS109 sequence this year.
3) Research funding is holding up better than some of us thought it
might at this time last year. AI didn't suffer all of the budget cuts
that we thought Jack Schwartz at DARPA might impose, funding for
robotics research looks reasonably bright, industry is stepping up its
funding of basic research, and many elements of our research in
systems are healthy. Our research program is also being enriched by a
number of exciting collaborations with other departments notably
Aero/Astro, Civil Engineering, Electrical Engineering, and Medicine.
There are even signs of improving collaborations with Math.
4) The "mini-lab" concept (for collaborating with industry through
industrial visitors at Stanford) looks like it will be realized in
January 1989 with an experimental "science center" to be established
by Hewlett-Packard. Many of our faculty have worked very hard to help
make this happen, notably Mike Genesereth and Gio Wiederhold. We owe
special thanks to Elliott Levinthal and Jim Gibbons for their hard
work in shaping this idea so that it could receive approval from both
Hewlett-Packard and the Provost's office.
5) The CS Department finished academic year 1987/88 with a dollar
surplus. (The year before we had a deficit.) To have a surplus we
must keep expenses under control (we can thank George Wheaton and
Betty Scott for that), but we must also have larger-than-expected
income (we can thank Carolyn Tajnai and the Computer Forum, WICS, and
the Honors Co-op/SITN program for that).
6) We selected a great architect, Ted Brown, to design the future home
of the CSD (and ISL and much of CSL). Ted has come up with some
outstanding design ideas that are now being refined for Board of
Trustees approval. Although the approval process at Stanford is slower
than we might like it to be, and we are probably a bit behind the
schedule we set a year or so ago, I am optimistic that we'll get final
Board approval this Winter quarter. The process has also involved
intense negotiation with the Provost's office about building size and
space assignments. So far, I'm happy with the results of all of this,
although there still are pressures for putting substantial
university-wide facilities in the building. Jim Gibbons has provided
superb backing for us in everything having to do with the building
project.
7) We have started a new interdisciplinary graduate program,
Scientific Computing and Computational Mathematics, under the
direction of Gene Golub. This program, with participation from
several other Stanford departments, will help us recruit new graduate
students in this important area and regain momentum in that part of
computer science that gave birth to our Department.
Here are some problems and challenges that face us in 1989:
1) Stanford's pre-eminence in the theory and foundations of computer
science must be re-built. During this past year, Christos
Papadimitriou wrote us an official resignation letter; Ernst Mayr left
to take a position in Germany; and Janos Komlos declined our offer of
a faculty appointment. Donald Knuth is leading a committee that is
searching for new faculty in this area. The Department has already
approved a senior faculty appointment for the Director of a new Center
which will concentrate on algorithms, complexity theory,
combinatorics, and related topics. Don tells me that the applicant
pool for an additional billet we are trying to fill is truly
outstanding. Stay tuned for developments in this subject during
Winter Quarter.
2) Besides the "theory" search, we are engaged in three others: one in
robotics, one in scientific computing, and one in "programming
languages." (In scientific computing, we were disappointed that
Roland Glowinski decided not to accept our offer of a faculty
appointment.)
3) We have not yet secured a definite replacement for Stuart Reges as
Assistant Chairman of Educational Affairs. We hope to entice a
certain person, quite prominent in computer science education circles,
to come to Stanford as an Associate Professor (Teaching). (Of course,
this can only be done after Departmental, School, and Provostial
approval. The process of securing such approval awaits further
"background work.") In the meantime, as I mentioned earlier, we are
extremely fortunate to have Roy Jones as Acting Asst. Chairman.
4) At the moment we have no plans to solve problems caused by
departures of faculty in AI (Paul Rosenbloom and Bruce Buchanan).
Paul and Bruce worked very effectively with graduate students and were
involved in research projects of great importance. Since Paul was an
"unbilleted" professor, we would need a brand new billet to replace
him. And Bruce is technically on leave (we all hope he comes back);
if he decides to stay at Pittsburgh, I presume we will be able to
search for a new Professor (Research). In the meantime, their areas
of expertise are areas that we cannot offer our students.
5) We have a number of concerns affecting students. The PhD students
feel (rightly, I think) that they are not getting enough contact with
some of our faculty. They also feel that although they serve on a
number of departmental committees, decisions are sometimes made
without sufficient consultation. Along with the junior faculty, our
students are extremely important to the Department. I want their
morale to be high (at least as high as morale can be among those from
whom we expect a great deal of hard work). I want them to be able to
say of their Stanford experience that it was outstanding and to be
able to recommend Stanford enthusiastically to prospective students.
During the past few weeks there has been a lot of e-mail discussion
about our PhD program---about the respective roles of research,
breadth education, and the comps. Ed Feigenbaum mentioned that he
thought this topic was one of the most important facing the Department
at this time. I agree. We'll all get into this in great detail during
the coming quarter, and I'd like to see if a consensus on the matter
can be reached.
Our Masters students sometimes feel that they are left out of the life
of the Department. We take their money (or their company's money),
teach them courses, and that's it. We need to find a way to make them
feel more a part of Stanford while they are here.
We aren't very good yet at interacting with our undergraduate majors.
Since the program is new, it is to be expected that we are still
learning, but I'd be interested in suggestions about how we can
improve.
Enough of the accomplishents/challenges business. People will recall
also that the Department had its first external "visiting committee"
in a while. They helped increase our awareness of some of the very
challenges that I have just mentioned. I am all for visiting committees
and hope that they will return late in this calendar year to look us
over again. (They told me that they wanted to see some of our
problems solved by then, so I have a big year ahead of me!)
In October I assembled a standing committee of faculty members to
serve as "spokespeople" for the four major areas of the Department
(John Hennessy, Systems; Jean-Claude Latombe, AI/Robotics; Joe Oliger,
Scientific Computing; and John Mitchell, Theory). We meet every
couple of weeks (along with the Senior Staff and the student
representatives). I expect to use this group even more during the
coming year to help run the Department.
If we all had infinite time, patience, and energy to deliver them,
here are some of the things I would wish for next year:
1) Increased financial contributions from our alumni and friends
to get our building campaign going.
2) More intellectual interaction among the faculty (instead of
each one being an island).
3) More wide-spread realization on the part of the faculty that life
at a university is more than one's own individual research; it also
involves substantial effort on teaching, on advising students, helping
with committees, thinking about the future of the Department, and
mentoring the junior faculty.
4) A greater tendency on the part of all of us (students too!) to
assume that the people with whom we deal have good will and are "with
us" rather than "against us." (I don't think computer bboard
communications would be very interesting if everyone granted me this
wish.) I imagine a scale at one end of which is extreme paranoia---a
conviction that others are plotting against us. At the other end of
this scale is the conviction that no one could possibly ever want to
do us harm; in extreme form that's probably also an unrealistic and
unhealthy belief. But I would like, nevertheless, to urge us a bit
more toward that naive end of the scale because beliefs all along the
scale tend to be somewhat self-fulfilling.
Realizing that our energies, time, and patience are finite, I close
by wishing you all the best for 1989 and asking simply that you
do what you can in granting my wishes.
Cordially,
Nils
∂03-Jan-89 0832 @Score.Stanford.EDU:chandler@polya.Stanford.EDU First Faculty Lunch....Winter Quarter
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 3 Jan 89 08:32:09 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Tue 3 Jan 89 08:28:54-PST
Received: by polya.Stanford.EDU (5.59/25-eef) id AA19376; Tue, 3 Jan 89 08:23:10 PDT
Date: Tue, 3 Jan 1989 8:23:08 PST
From: "Joyce R. Chandler" <chandler@polya.stanford.edu>
To: faculty@score, bureaucrats@score
Subject: First Faculty Lunch....Winter Quarter
Message-Id: <CMM.0.87.599847788.chandler@polya.stanford.edu>
An early reminder......the first faculty lunch for the Winter Quarter will be
held in the Hartley Conference Room (Mitchell Earth Science Building) next
Tuesday, 1/10. Rebecca Lasher from the Math/CSD Library will be dicsussing
and demonstrating online access to library materials.
∂03-Jan-89 1027 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Recursion Theorems, a question on litterature.
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 3 Jan 89 10:27:04 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA23504; Tue, 3 Jan 89 10:26:25 PDT
Message-Id: <8901031826.AA23504@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Tue, 3 Jan 89 10:26:42 PST
Received: by BYUADMIN (Mailer R2.01A) id 7060; Tue, 03 Jan 89 11:24:29 MST
Date: Tue, 3 Jan 89 10:57:09 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
"Jesper L. Traff" <traff%DIKU.DK@Forsythe.Stanford.EDU>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: "Jesper L. Traff" <traff%DIKU.DK@Forsythe.Stanford.EDU>
Subject: Recursion Theorems, a question on litterature.
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
In a book by James S. Royer: "A connotational Theory of program
structure" (Springer, LNCS 273) there is a rather incomplete reference
to a paper by John Case: "Self reflection in machines I: applications
of recursion theorems", 1988, apparently a techincal paper from State
University of New York at Buffalo. I'm very interested in this topic
(as a student project at DIKU we have done some experiments with
implementations of both Kleene's and Rogers' 2nd recursion theorems,
"culminating" in a language wherein fixed-points can be expressed very
directly. However, "practical" applications of these theorems are
few), so therefore I ask whether there is anybody on the net who knows
that paper (and can send me either a copy or a more complete
reference) - or litterature containing applications other than the
classical ones (e.g. self-reproducing programs, elimination of recursion
etc.).
Thanks in advance
Jesper Larsson Traff
DIKU, Dept. of Computer Sceince, University of Copenhagen
Denmark
e-mail: traff@diku.dk
∂03-Jan-89 1031 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Second Call for Papers
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 3 Jan 89 10:31:50 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA23796; Tue, 3 Jan 89 10:31:16 PDT
Message-Id: <8901031831.AA23796@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Tue, 3 Jan 89 10:31:34 PST
Received: by BYUADMIN (Mailer R2.01A) id 7128; Tue, 03 Jan 89 11:26:20 MST
Date: Tue, 3 Jan 89 11:00:50 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Kerny McLaughlin <kerny%CS.COLUMBIA.EDU@Forsythe.Stanford.EDU>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Kerny McLaughlin <kerny%CS.COLUMBIA.EDU@Forsythe.Stanford.EDU>
Subject: Second Call for Papers
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
SECOND CALL FOR PAPERS
Third Symposium on Complexity of Approximately Solved Problems
Computer Science Department
Columbia University
April 3-5, 1989
PROGRAM COMMITTEE:
Kenneth Arrow
Department of Economics
Stanford University
Stanford, California
Jerome Feldman
International Computer Science Institute
147 Center Street
Berkeley, California
Richard Karp
Computer Science Department
University of California at Berkeley
Berkeley, California
Christos Papadimitriou
Computer Science Department
University of California at San Diego
San Diego, California
Steven Smale
Mathematics Department
University of California at Berkeley
Berkeley, California
Joseph Traub
Computer Science Department
Columbia University
New York, New York
Henryk Wozniakowski
Computer Science Department
Columbia University
New York, New York
Donald Ylvisaker
Statistics Department
University of California at Los Angeles
Los Angeles, California
PARTIAL LIST OF SPEAKERS
PLENARY SPEAKERS:
Leon N. Cooper
Brown University
Steven Smale
University of California, Berkeley
INVITED SPEAKERS:
Adam Bojanczyk
Cornell University
Terrance Boult
Columbia University
David Donoho
University of California, Berkeley
Zvi Galil
Columbia University
Feng Gao
University of British Columbia
Ehud Kalai
Northwestern University
Mark Kon
Boston University
Marek A. Kowalski
University of Warsaw
J. Kuczynski
University of Warsaw
David Lee
AT&T Bell Laboratories
Leonid Levin
Boston University
Mario Milanese
Politecnico di Torino
Erich Novak
University of Erlangen
Michael Shub
IBM, T.J. Watson Research Center
K. Sikorski
University of Utah
Michael Steele
Princeton University
Aleksei Sukharev
Moscow State University
John N. Tsitsiklis
Massachusetts Institute of Technology
Umesh Vazirani
University of California, Berkeley
Grace Wahba
University of Wisconsin
Greg Wasilkowski
University of Kentucky
Arthur Werschulz
Columbia University
Henryk Wozniakowski
Columbia University
SOME OF THE TOPICS TO BE ADDRESSED ARE:
Average Case Analysis of Algorithms Neural Nets
Computational Complexity Optimal Recovery
Computer Vision Parallel Computation
Connectionist Models Prediction and Estimation
Continuous Complexity Random Algorithms
Decision Theory Random Complexity
Design of Experiment Robotics
Distributed Complexity Scientific Computation
Information-Based Complexity Seismology
Inverse Problems Signal Processing
Mathematical Economics
CONTRIBUTED PAPERS: All appropriate papers for which abstracts are
contributed will be scheduled. Contributed papers will be twenty
minutes in length.
To contribute a paper send title, author, affiliation, and abstract on
a single 8 1/2 by 11 sheet of paper or by electronic mail.
The above can be sent by U.S. mail to:
J.F. Traub
Computer Science Department
Columbia University
450 Computer Science Building
New York, New York 10027
Electronic Mail: kerny@cs.columbia.edu
TITLES AND ABSTRACTS MUST BE RECEIVED BY NO LATER THAN FEBRUARY 1, 1989
PUBLICATION: Invited papers will be published in the Journal of Complexity.
REGISTRATION: The symposium will be held in the Kellogg Conference
Center, on the fifteenth floor of the International Affairs Building,
Columbia University, 118th Street and Amsterdam Avenue. Registration
will start at 9:00 a.m. THERE IS NO REGISTRATION CHARGE.
FOR FURTHER INFORMATION: The program schedule will be sent
electronically about March 1, 1989. If you have any questions,
contact Kerny McLaughlin, Computer Science Department, Columbia
University, (212) 854-2736.
To help us plan the symposium please complete the information
below and return by U.S. Mail to Traub or by electronic mail to
kerny@cs.columbia.edu.
-------------------------------------------
SYMPOSIUM ON COMPLEXITY OF APPROXIMATELY SOLVED PROBLEMS
April 3-5, 1989
Name:
Affiliation:
Address:
[ ] I will attend the Complexity Symposium.
[ ] I may attend the Complexity Symposium.
[ ] I will contribute a paper.
∂03-Jan-89 1038 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Call for Papers
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 3 Jan 89 10:37:55 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA24018; Tue, 3 Jan 89 10:37:08 PDT
Message-Id: <8901031837.AA24018@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Tue, 3 Jan 89 10:37:23 PST
Received: by BYUADMIN (Mailer R2.01A) id 7433; Tue, 03 Jan 89 11:34:10 MST
Date: Tue, 3 Jan 89 12:09:17 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
THEORYNT%YKTVMX.BITNET@forsythe.stanford.edu
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
From: THEORYNT%YKTVMX.BITNET@forsythe.stanford.edu
Subject: Call for Papers
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
Call for Papers
Discrete Applied Mathematics
Special issue on connections between Logic and combinatorial topics
with emphasis on probabilistic aspects
and bounding the length of proofs
Topics of interest include, but are not limited to:
1. Resource Bounded Proof Theory
a. Upper and/or lower bounds on the number of steps
required by proofs in some logic system.
b. Probabilistic upper and/or lower bounds on the number of steps
required to prove random instances.
c. Poperties of families of instances with a limit on the
number of times an assumption may be used, or on the
number of different bound variables allowed.
d. Probabilistic analysis of algorithms for the satisfiability
problem.
2. Comparison of Systems/Problems
a. Proofs in logic system A are much shorter than proofs in
logic system B (almost always).
b. Proofs of tautology must be at least some amount longer
than proofs of satisfaction (almost always).
c. Why are certain combinatorial theorems unprovable in certain
formal systems?
d. Relationship between unprovability and combinatorial
properties of instances.
3. Other Topics
a. Logical aspects of circuit-based complexity models.
b. Group theoretic invariance of Boolean functions, with
connections to parallel complexity.
c. Computability over the real number system, applied to
develop complexity measures for numerical algorithms.
d. 0-1 laws for first order and higher order logics on
finite graphs and other combinatorial structures.
To assure consideration, please submit three copies of your manuscript
to one of the editors below before August 1, 1989:
J. Michael Dunn John V. Franco William H. Wheeler
Dept. of Philosophy Computer Science Dept. Dept. of Mathematics
Indiana University Indiana University Indiana University
Bloomington, IN 47405 Bloomington, IN 47405 Bloomington, IN 47405
∂03-Jan-89 1228 X3J13-mailer Hawaii registration status
Received: from lucid.com by SAIL.Stanford.EDU with TCP; 3 Jan 89 12:27:56 PST
Received: from challenger ([192.9.200.17]) by heavens-gate.lucid.com id AA03395g; Tue, 3 Jan 89 12:24:09 PST
Received: by challenger id AA07960g; Tue, 3 Jan 89 12:20:10 PST
Date: Tue, 3 Jan 89 12:20:10 PST
From: Jan Zubkoff <jlz@lucid.com>
Message-Id: <8901032020.AA07960@challenger>
To: x3j13@sail.stanford.edu
Subject: Hawaii registration status
Please let me know if you have any changes.
---jan---
X3J13 Attendee Information
01/03/89
Name Institute Paid L1 L2 L3 Luau
Jim Antonisse MITRE Corp. 113.50 y y y 1
Bill Arbaugh U.S. Army -0- y y y -
Kim Barrett Integrated Inference 113.50 y y y 1
David Bartley Texas Instruments $75.00 y y y -
Paul Beiser HP -0- y y y -
Skona Brittan Microcomputer Systems -0- y y y -
Jerome Chailloix ILOG -0- y y y -
Kathy Chapman DEC -0- y y y 2
Jeff Dalton University of Edinburgh -0- y y y 1
Jerry Duggen HP -0- y y y 2
Patrick Dussud Lucid, Inc. -0- y y y 1
Dick Gabriel Lucid, Inc. -0- y y y 3
George Hadden Honeywell -0- y y y 2
Jim Kempf SUN Microsytsems -0- y y y 1
Gregor Kiczales Xerox Corp. -0- y y y 1
Aaron Larson Honeywell -0- y y y 2
Kevin Layer Franz, Inc. $75.00 y y y 1
Thom Linden IBM $75.00 y y y 3
David Loeffler MCC 113.50 y y y 1
Sandra Loosemore University of Utah -0- y y y -
Barry Margolin Thinking Machines, Inc. 113.50 y y y y
Larry Masinter Xerox $75.00 y y y 1
Robert Mathis CONTEL -0- y y y 4
David Moon Symbolics, Inc. -0- 1 1 1 -
Greg Nuyens ILOG -0- y y y -
Chris Perdue SUN MicroSystems -0- y y y 1
Dan Pierson Encore Computer -0- y y y 1
Jeff Rosenking Grumman Corp. -0- y y y -
Paul Tucker IBM -0- y y y 2
David Unietis Lucid, Inc. -0- y y y 1
Mary Van Deusen IBM -0- y y y -
Ellen Waldrum TI $75.00 y y y 2
JonL White Lucid, Inc. -0- y y y 1
Gail Zacharias Coral Software Corp. -0- y y y 2
Jan Zubkoff Lucid, Inc. -0- y y y 2
∂03-Jan-89 1324 X3J13-mailer issues from cl-compiler
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 3 Jan 89 13:24:43 PST
Received: from defun.utah.edu by cs.utah.edu (5.59/utah-2.1-cs)
id AA27137; Tue, 3 Jan 89 14:23:35 MST
Received: by defun.utah.edu (5.59/utah-2.0-leaf)
id AA05977; Tue, 3 Jan 89 14:23:33 MST
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8901032123.AA05977@defun.utah.edu>
Date: Tue, 3 Jan 89 14:23:32 MST
Subject: issues from cl-compiler
To: x3j13@sail.stanford.edu
I will be sending out a number of issues from the compiler committee
over the next several days. We plan to discuss these at the upcoming
meeting and vote on any that appear to be noncontroversial. Some of
the issues are marked **DRAFT**; these are issues that we do not feel
have had enough consideration to be voted upon yet, but where we would
like to get feedback from a larger group.
Please send comments on these issues to cl-compiler@sail.stanford.edu
(-not- to the X3J13 mailing list). Alternatively, we will consider
amendments at the upcoming meeting. (Having your amendment written
down in advance will help considerably in reducing confusion.)
-Sandra
-------
∂03-Jan-89 1358 @Score.Stanford.EDU:nilsson@Tenaya.stanford.edu DARPA Announcement
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 3 Jan 89 13:58:50 PST
Received: from Tenaya.stanford.edu by SCORE.STANFORD.EDU with TCP; Tue 3 Jan 89 13:55:51-PST
Received: by Tenaya.stanford.edu (5.59/25-eef) id AA06061; Tue, 3 Jan 89 13:52:08 PDT
Date: Tue, 3 Jan 89 13:52:08 PDT
From: Nils Nilsson <nilsson@Tenaya.stanford.edu>
Message-Id: <8901032152.AA06061@Tenaya.stanford.edu>
To: faculty@score
Subject: DARPA Announcement
For your information:
-------
Return-Path: <SSMITH@KL.SRI.COM>
Received: from KL.SRI.COM by Warbucks.AI.SRI.COM with INTERNET ;
Tue, 3 Jan 89 07:10:02 PST
Date: Tue, 3 Jan 89 07:03:02 PST
From: Sue Smith <SSMITH@KL.SRI.COM>
Subject: BAA - ISTO
To: DARPA-DB@KL.SRI.COM
Message-ID: <12459606567.10.SSMITH@KL.SRI.COM>
DARPA-DB: .BAA.BIDS.ISTO.
COMMERCE BUSINESS DAILY
DECEMBER 28, 1988
ISSUE: PSA-9746
BROAD AGENCY ANNOUNCEMENT (BAA#89-05): RESEARCH IN INFORMATION AND SCIENCE
AND TECHNOLOGY SOL BAA#89-05 DUE 043089 POC R. H. Register, (Contracts),
(202)694-1771; MAJ J. Mark Pullen, USA, (Technical), (202)694-5051.
Advanced Computing Systems. The Defense Advanced Research Projects Agency
(DARPA) is soliciting proposals for research in the area of information
science and technology in support of the DARPA Basic Research Program and
the DARPA Stragetic Computing program. Proposed research should investigate
innovative approaches and techniques that lead to or enable revolutionary
advances in the state of the art. Specifically excluded is research which
primarily results in evolutionary improvement to the existing state of
practice. When appropriate, new concepts are to be demonstrated by means of
systems prototypes. Topics to be considered include, but are not limited to
parallel computing architectures; microsystem design and prototyping;
software technology research; networking/command, control and
communications; machine intelligence; and manufacturing technology. General
Guidelines. Unless the nature of the research precludes such, the work is
expected to produce experimental prototypes that can be distributed to the
research community for evaluation and use. This will normally require the
delivery of products such as prototype software and/or hardware, designs,
and other associated systems that embody results of the research. Proposals
must provide specific details concerning technology transition, both within
the research community and into industrial application. In order to
encourage and facilitate technology transfer, software and systems
interfaces should be designed to anticipate future standards. All prototype
deliverables should be documented appropriately, and examples and tutorial
material should be provided when necessary. Sources for research will be
selected by a formal technical/scientific/business decision process.
Individual proposal evaluations will be based on acceptability or
unacceptability without regard to other proposals submitted under the
announcement. Evaluation of proposals will be performed using the following
criteria which are listed in order of priority: quality, relevan{e, and
personnel; related experience and capability; cost. Principal funding for
proposals selected under this announcement will begin in Fiscal Year 1990
with some modest initial efforts in Fiscal Year 1989. It is anticipated
that at least twenty million dollars in funding will be available to
support proposals in this area for Fiscal Year 1990. However, proposals
will be evaluated within technical program areas and must compete for
limited funds available in those areas. Proposals submitted may be
evaluated as they are received, or they may be collected and reviewed
periodically. Prospective proposers are encouraged to submit a proposal
abstract not later than January 30, 1989. DARPA/ISTO intends to respond to
such abstracts within 30 days of receipt, providing an assessment of the
likely viability of a full proposal. This procedure is intended to minimize
unnecessary effort in proposal preparation and review, and is not a
requirement {or submission or selection of proposals. Proposals can range
from small-scale efforts that are primarily theoretical in nature, to
medium-scale experimental and prototyping efforts of hardware and/or
software, to larger-scale integrated systems efforts which include
industrial cooperation and cost sharing. This announcement will remain in
effect until April 30, 1989. The complete Broad Agency Announcement,
including required formats for full and abstract proposals and other
pertinent details, can be obtained by written request to: DARPA/ISTO (ATTN:
BAA #89-05), 1400 Wilson Blvd., Arlington, VA 22209-2308. Telephonic
requests for this announcement will not be accepted. Inquiries of a
contractual nature may be directed to Ron H. Register at (202) 694-1771.
SPONSOR: Defense Advanced Research Projects Agency (DARPA), Contracts
Management (CMO), 1400 Wilson Blvd., Arlington, VA 22209-2308
-------
-------
∂03-Jan-89 1406 @Score.Stanford.EDU:bhayes@polya.Stanford.EDU Re: DARPA Announcement
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 3 Jan 89 14:06:43 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Tue 3 Jan 89 14:04:06-PST
Received: from LOCALHOST by polya.Stanford.EDU (5.59/25-eef) id AA01070; Tue, 3 Jan 89 14:04:49 PDT
Message-Id: <8901032204.AA01070@polya.Stanford.EDU>
To: Nils Nilsson <nilsson@Tenaya.stanford.edu>
Cc: faculty@score
Subject: Re: DARPA Announcement
In-Reply-To: Your message of Tue, 03 Jan 89 13:52:08 -0700.
<8901032152.AA06061@Tenaya.stanford.edu>
Date: Tue, 03 Jan 89 14:04:47 -0800
From: bhayes@polya.Stanford.EDU
Perhaps I can get a grant to study the death of the paragraph.
∂03-Jan-89 1424 X3J13-mailer issue ALLOW-LOCAL-INLINE
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 3 Jan 89 14:24:12 PST
Received: from defun.utah.edu by cs.utah.edu (5.59/utah-2.1-cs)
id AA00523; Tue, 3 Jan 89 15:23:04 MST
Received: by defun.utah.edu (5.59/utah-2.0-leaf)
id AA06032; Tue, 3 Jan 89 15:23:02 MST
Date: Tue, 3 Jan 89 15:23:02 MST
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8901032223.AA06032@defun.utah.edu>
To: x3j13@sail.stanford.edu
Subject: issue ALLOW-LOCAL-INLINE
Reply-To: cl-compiler@sail.stanford.edu
Forum: Compiler
Issue: ALLOW-LOCAL-INLINE
References: CLtL p. 156, 159
Related issues: PROCLAIM-INLINE-WHERE
Category: CLARIFICATION
Edit History: 21 Sept. 88 V1 by David Gray
27 Oct. 88 V2 by David Gray - new proposal
9 Nov. 88 V3 by David Gray - expanded problem
description and discussion sections.
30 Dec. 88 V4 by Sandra Loosemore -- suggestions from Pitman
Problem Description:
The proposal PROCLAIM-INLINE-WHERE:BEFORE (which was accepted by X3J13
on 10/12/88) clarifies the use of INLINE proclamations, but there
remains a similar problem with the use of a local (DECLARE (INLINE
...)): how can the compiler expand the function inline if it didn't
know that the necessary information should have been saved when the
function was compiled?
Note that an INLINE proclamation does two things:
(1) It tells the compiler to do extra things when it sees the
function -definition-, to make it possible to code the function
inline.
(2) It tells the compiler to code -calls- to the function inline.
In order for local INLINE declarations to be useful, we need part 1
without part 2.
Proposal ALLOW-LOCAL-INLINE:INLINE-NOTINLINE
Clarify that to define a function FOO which is not INLINE by default
but for which (DECLARE (INLINE FOO)) will make FOO be locally inlined,
the proper definition sequence is:
(PROCLAIM '(INLINE foo))
(DEFUN foo ...)
(PROCLAIM '(NOTINLINE foo))
The INLINE proclamation preceding the DEFUN ensures that compiler will
save the information necessary for inline expansion, and the NOTINLINE
proclamation following the DEFUN prevents it from being expanded
inline everywhere.
Note that while implementations are never required to perform inline
expansion of function calls, many implementations that do support
inline expansion will not be able to respond to local INLINE requests
if this technique is not followed.
Rationale:
Local INLINE declarations are of little use without some way of
alerting the compiler to the possibility of inline expansion before
the function is compiled. This seems the simplest solution since it
just clarifies existing practice instead of adding a new feature to
the language.
A compiler could use some heuristic to save the definitions of functions
that are short enough to look like good candidates for inline expansion,
but then the user is never sure what to expect. It is possible that a
compiler could simply save all definitions (assuming availability
of adequate storage space) but we shouldn't require that.
Test Cases/Examples:
Given the following input to COMPILE-FILE, does F1 get expanded inline
in F2, and does F3 get expanded inline in F4?
(defun f1 (a) (+ a 100))
(defun f2 (b) (declare (inline f1)) (f1 b))
(proclaim '(inline f3))
(defun f3 (a) (+ a 100))
(proclaim '(notinline f3))
(defun f4 (b) (f3 b)) ;F3 is not inline.
(defun f5 (c) (declare (inline f3)) (f3 c)) ;F3 is locally inline.
(defun f6 (c) (f3 c)) ;The local effect is not
; persistent.
Current Practice:
In the example above, using Symbolics, Lucid, or Explorer, F1 is not
expanded in F2, but F3 is expanded in F5.
Cost to implementors:
None, since this is a clarification in accordance with current
practice.
Cost to users:
None.
Benefits:
Users will be able to use (DECLARE (INLINE ...)) with greater assurance
that it will really do something.
Costs of Non-Adoption:
Users will not know how to reliably request inline expansion on a
local basis. This technique is not obvious, and even the need
for it likely to be apparent only to people who understand something
about how the compiler does inline expansion.
Discussion:
Version 1 of this issue included proposal
ALLOW-LOCAL-INLINE:PROCLAIM-ALLOW-INLINE to make an addition to the
language:
(PROCLAIM '(ALLOW-INLINE foo))
This was met with a lack of enthusiasm since it was pointed out that
the same effect could be obtained by using a combination of INLINE and
NOTINLINE.
This is may not be completely true, however, since people's thinking
about NOTINLINE has evolved in the direction of a declaration that
tells the compiler "assume nothing about this function". Thus, a
NOTINLINE proclamation might suppress some optimizations that would
have occurred if there had never been an INLINE and NOTINLINE.
Ideally, it would be nice to have multiple levels of control instead
of just INLINE or NOTINLINE -- something like:
* always inline
* maybe inline (let the compiler decide)
* just save the definition for possible local inline
* default
* never inline
Pitman has said that he generally approves of the direction of this
proposal, but he has also expressed concerns about how the persistance
of INLINE proclamations may cause confusion when functions are redefined
in an incremental development environment.
∂03-Jan-89 1426 X3J13-mailer issue COMPILE-ENVIRONMENT-CONSISTENCY
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 3 Jan 89 14:25:59 PST
Received: from defun.utah.edu by cs.utah.edu (5.59/utah-2.1-cs)
id AA00548; Tue, 3 Jan 89 15:24:53 MST
Received: by defun.utah.edu (5.59/utah-2.0-leaf)
id AA06035; Tue, 3 Jan 89 15:24:49 MST
Date: Tue, 3 Jan 89 15:24:49 MST
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8901032224.AA06035@defun.utah.edu>
To: x3j13@sail.stanford.edu
Subject: issue COMPILE-ENVIRONMENT-CONSISTENCY
Reply-To: cl-compiler@sail.stanford.edu
Forum: Compiler
Issue: COMPILE-ENVIRONMENT-CONSISTENCY
References: CLtL p. 68-69, 143, 321
RAM's "Compiler Cleanup Proposal #3"
Category: CLARIFICATION
Edit History: V1, 2 Sep 1988, Sandra Loosemore (initial draft)
V2, 9 Sep 1988, Sandra Loosemore (incorporate suggestions)
V3, 26 Oct 1988, Sandra Loosemore (add suggestion from Benson)
Problem Description:
CLtL does not clearly specify what aspects of the compiletime
environment the compiler (or other preprocessor) may "wire in" to code
being compiled.
Proposal COMPILE-ENVIRONMENT-CONSISTENCY:CLARIFY:
Common Lisp deliberately leaves unspecified the time at which certain
transformations, such as macro expansion, are performed within a
program. While some implementations perform such transformations
concurrently with evaluation, it is also legitimate to perform
transformations during a preprocessing phase. For example, an
implementation might choose to apply transformations at "function
promotion time" (i.e., transformations are applied once during
evaluation of a surrounding FUNCTION special form), or to completely
transform each top-level form and all of its subforms before
performing any evaluation. User programs cannot portably depend upon
either the time of such transformations, or the number of times the
transformations are applied.
In all cases, however, compiling a program (with COMPILE or
COMPILE-FILE) provides a mechanism for forcing these transformations
to be applied and a guarantee that, once compiled, no further
transformations will be applied to that program.
In the discussion that follows, the term "compiler" is to be understood
to include other preprocessors as well. Likewise, the "compiletime
environment" refers to the environment in which program transformations
occur, while "runtime" refers to the time the program is executed.
(1) The following information *must* be present in the compiletime
environment for the preprocessor to apply the correct transformations.
This information need not also be present in the runtime environment.
(a) Macro definitions must be available in the compiletime environment.
The compiler may assume that forms that are lists beginning with
a symbol that does not name a macro or special form is a function
call. (This implies that SETF methods must also be available at
compiletime.)
(b) Special variables must be declared as such before they are bound.
The compiler must treat any undeclared variable binding as a
lexical binding.
(2) The compiler *may* "wire in" the following kinds of information
into the code it produces, if the information is present in the
compiletime environment. However, since implementations are not
required to do this, user code must ensure that the information is
also defined consistently in the runtime environment. Except as
noted, the behavior of user programs is unspecified in situations
where the information is defined differently at runtime than at
compiletime, since the user cannot depend upon which will take
precedence in a particular implementation. In all cases, the absence
of the information at compiletime is not an error, but its presence
may enable the compiler to do a better job.
(a) The compiler may assume that functions that are defined and
declared INLINE in the compiletime environment will retain the
same definitions at runtime.
(b) The compiler may assume that, within a named function, a
recursive call to a function of the same name refers to the
same function, unless that function has been declared NOTINLINE.
(c) COMPILE-FILE may assume that, in the absence of NOTINLINE
declarations, a call within the file being compiled to a named
function which is defined in that file refers to that function.
(This permits "block compilation" of files.) The behavior of
the program is unspecified if functions are redefined individually
at runtime.
(d) The compiler may assume that the signature (or "contract") of
all built-in Common Lisp functions will not change. In addition,
the compiler may treat all built-in Common Lisp functions as if
they had been proclaimed INLINE.
(e) The compile may assume that the signature (or "contract") of
functions with FTYPE information available will not change. (See
issue FUNCTION-TYPE-ARGUMENT-TYPE-SEMANTICS.)
(f) The compiler may "wire in" the values of symbolic constants
that have been defined with DEFCONSTANT in the compiletime
environment.
(g) Types that are defined with DEFTYPE or DEFSTRUCT can be assumed to
retain the same definition in the runtime environment as in the
compiletime environment. (Note that it is not an error for an
unknown type to appear in a declaration at compiletime, although
it is reasonable for the compiler to emit a warning in such a
case.)
(h) The compiler may assume that a class name defined by DEFCLASS
that is present in the compiletime environment will also be a
class name at runtime, and that class will be an instance of the
same metaclass. There may be additional conformance requirements
imposed by the metaclass, but there are none for STANDARD-CLASS.
(i) The compiler may assume that if type declarations are present
in the compiletime environment, the corresponding variables and
functions present in the runtime environment will actually be of
those types; otherwise, the behavior of the program is undefined.
(3) The compiler *must not* make any additional assumptions about
consistency between the compiletime and runtime environments. In
particular:
(a) The compiler may not assume that functions that are defined
in the compiletime environment will retain the either the
same definition or the same signature at runtime, except
in situations (2a) through (2e) above. It is, however,
reasonable for the compiler to emit warning messages about
calls to functions that are defined at compiletime, but where
the wrong number or type of arguments are supplied.
(b) The compiler may not signal an error if it sees a call to a
function that is not defined at compiletime, since that function
may be provided at runtime. Again, it is permissible to emit
a warning in these situations.
Rationale:
This proposal generally reflects current practice.
Current Practice:
I know of no compiler that does not implement the provisions of item (1).
For item (2), most compilers (including Lucid) optimize self-recursive
calls by default. Most compilers also opencode data structure
accessors (such as CAR) at some level of optimization, and some code
much more complicated built-in functions inline as well. VaxLisp, for
example, normally compiles MEMBER inline. The Lucid compiler makes
use of type declarations to perform generic-to-specific
transformations on many arithmetic and sequence functions, which is
also a form of inlining. KCL performs block compilation by default,
and Lucid does so under certain conditions.
Cost to implementors:
Unknown, but probably minor.
Cost to users:
Since most implementations appear to be largely in conformance with the
proposal, users should notice little difference.
Benefits:
The presence of a definite specification of what may happen when will
help users structure their programs so they will compile correctly in
all Common Lisp implementations.
Discussion:
Most of the discussion on this issue has been centered on the
terminology describing error situations for item (2). In most cases
where there is an inconsistency between compile-time and run-time, the
results will be unpredictable but harmless. The major exception is
violation of type declarations, which is a "crash-and-burn" error in
many implementations.
There has also been some concern raised that item (3) would prohibit
such things as a cross-compiler that produces standalone programs in
an environment that disallows redefinition of functions. The intent
of this proposal is not to prohibit a compiler from having a magic
switch that imposes additional restrictions on the programs it
compiles, but such a compiler would not be a compiler for Common Lisp.
∂03-Jan-89 1428 X3J13-mailer issue DEFCONSTANT-SPECIAL
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 3 Jan 89 14:28:00 PST
Received: from defun.utah.edu by cs.utah.edu (5.59/utah-2.1-cs)
id AA00602; Tue, 3 Jan 89 15:26:55 MST
Received: by defun.utah.edu (5.59/utah-2.0-leaf)
id AA06038; Tue, 3 Jan 89 15:26:53 MST
Date: Tue, 3 Jan 89 15:26:53 MST
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8901032226.AA06038@defun.utah.edu>
To: x3j13@sail.stanford.edu
Subject: issue DEFCONSTANT-SPECIAL
Reply-To: cl-compiler@sail.stanford.edu
Forum: Compiler
Issue: DEFCONSTANT-SPECIAL
References: CLtL p. 68-69, 55-56
Issue DEFCONSTANT-NOT-WIRED
Issue PROCLAIM-LEXICAL
Issue SYNTACTIC-ENVIRONMENT-ACCESS
Issue SPECIAL-VARIABLE-TEST
Category: CLARIFICATION
Edit History: V1, 15 Nov 1988, Sandra Loosemore
V2, 22 Nov 1988, Sandra Loosemore
V3, 30 Dec 1988, Sandra Loosemore
Problem Description:
It is unclear whether DEFCONSTANT is supposed to proclaim the variable
SPECIAL. Page 56 says that symbols defined by DEFCONSTANT "may not be
further assigned to or bound". Page 69 says that "further assignment
to or binding of that special variable is an error" but permits
compilers to "choose to issue warnings about bindings of the lexical
variable of the same name". Does this mean that it is legal (but
perhaps only questionable style) to lexically rebind constants? If
so, this would seem to imply that they must not be proclaimed SPECIAL
(since CLtL provides no way to override a SPECIAL proclamation).
Some people think that DEFCONSTANT is supposed to proclaim the
variable SPECIAL because CLtL says that DEFVAR does, and that
DEFPARAMETER is like DEFVAR, and DEFCONSTANT is like DEFPARAMETER.
Also, the use of the phrase "that special variable" rather than "the
special variable of the same name" might indicate that the variable
really is supposed to be special.
Proposal DEFCONSTANT-SPECIAL:NO:
Clarify that DEFCONSTANT does not proclaim the variable special, but
that it is an error to rebind constant symbols as either lexical or
special variables. (In other words, a reference to a symbol declared
with DEFCONSTANT always refers to its global value.)
Rationale:
If DEFCONSTANT declared the variable special, the lexical rebindings
mentioned on p. 69 could never arise. Clarifying that lexical
rebinding (as well as special rebinding) of constants "is an error"
seems to be the behavior that most users expect. One serious problem
that might arise from allowing constants to be rebound lexically is
that it would not be reliable to include symbolic constants in macro
expansions, because the user might have rebound them to something
else.
Current Practice:
Most implementations apparently proclaim the variable special anyway.
Cost to implementors:
Minor.
Cost to users:
Probably none. Since many implementations do proclaim the variable to
be special (while at the same time forbidding special binding), there
is probably no user code that depends upon lexical rebinding of
DEFCONSTANTs.
Benefits:
An area of confusion in the language is removed.
Discussion:
This issue is primarily a documentation clarification. It arose
during a discussion of what the DEFCONSTANT macro might expand into.
As far as users are concerned, it makes no difference whether
constants are special or lexical, as long as all rebinding is
prohibited. The only situation where the distinction might become
important is if a function is added to the language to test whether a
variable has been proclaimed special.
The "problem description" section of the writeup on issue
PROCLAIM-LEXICAL (version 8) also appears to assume that constants
declared with DEFCONSTANT are not special.
∂03-Jan-89 1429 X3J13-mailer issue LOAD-TIME-EVAL
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 3 Jan 89 14:29:40 PST
Received: from defun.utah.edu by cs.utah.edu (5.59/utah-2.1-cs)
id AA00654; Tue, 3 Jan 89 15:28:33 MST
Received: by defun.utah.edu (5.59/utah-2.0-leaf)
id AA06041; Tue, 3 Jan 89 15:28:30 MST
Date: Tue, 3 Jan 89 15:28:30 MST
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8901032228.AA06041@defun.utah.edu>
To: x3j13@sail.stanford.edu
Subject: issue LOAD-TIME-EVAL
Reply-To: cl-compiler@sail.stanford.edu
Forum: Compiler
Issue: LOAD-TIME-EVAL
References: #, (p. 356), (EVAL-WHEN (LOAD) ...) (p. 69-70)
issue SHARP-COMMA-CONFUSION
Category: ADDITION
Edit history: 06-Jun-87, Version 1 by James Kempf
17-Jul-87, Version 2 by James Kempf
12-Nov-87, Version 3 by Pitman (alternate direction)
01-Feb-88, Version 4 by Moon
(from version 2 w/ edits suggested by Masinter)
06-Jun-88, Version 5 by Pitman
(fairly major overhaul, merging versions 3 and 4)
21-Sep-88, Version 6 by Moon (stripped down)
17-Oct-88, Version 7 by Loosemore (change direction again)
30-Dec-88, Version 8 by Loosemore (tweaks)
Problem description:
Common Lisp provides reader syntax (#,) which allows the programmer
to designate that a particular expression within a program is to be
evaluated early (at load time) but to later be treated as a constant.
Unfortunately, no access to this capability is available to programs
which construct other programs without going through the reader.
Some computations can be deferred until load time by use of EVAL-WHEN,
but since EVAL-WHEN must occur only at toplevel, and since the nesting
behavior of EVAL-WHEN is quite unintuitive, EVAL-WHEN is not a general
solution to the problem of load-time computation of program constants.
Proposal (LOAD-TIME-EVAL:R**2-NEW-SPECIAL-FORM):
Add a new special form, LOAD-TIME-VALUE, which has the following
contract:
LOAD-TIME-VALUE form &optional read-only-p [Special Form]
LOAD-TIME-VALUE provides a mechanism for delaying evaluation of <form>
until the expression is in the "runtime" environment.
If a LOAD-TIME-VALUE expression is seen by COMPILE-FILE, the compiler
performs normal semantic processing such as macro expansion but
arranges for the evaluation of <form> to occur at load time in a null
lexical environment, with the result of this evaluation then being
treated as an immediate quantity at run time. It is guaranteed that
the evaluation of <form> will take place only once when the file is
loaded, but the order of evaluation with respect to the "evaluation"
of top-level forms in the file is unspecified.
If a LOAD-TIME-VALUE expression appears within a function compiled
with COMPILE, the <form> is evaluated at compile time in a null lexical
environment. The result of this compile-time evaluation is treated as
an immediate quantity in the compiled code.
In interpreted code, (LOAD-TIME-VALUE <form>) is equivalent to (VALUES
(EVAL (QUOTE <form>))). Implementations which implicitly compile
(or partially compile) expressions passed to EVAL may evaluate the
<form> only once, at the time this compilation is performed. This is
intentionally similar to the freedom which implementations are given
for the time of expanding macros in interpreted code.
Note that, in interpreted code, there is no guarantee as to when
evaluation of <form> will take place, or the number of times the
evaluation will be performed. Since successive evaluations of the
same LOAD-TIME-VALUE expression may or may not result in an evaluation
which returns a "fresh" object, destructive side-effects to the
resulting object may or may not persist from one evaluation to the
next. It is safest to explicitly initialize the object returned by
LOAD-TIME-VALUE, if it is later modified destructively.
Implementations must guarantee that each reference to a
LOAD-TIME-VALUE expression results in at least one evaluation of its
nested <form>. For example,
(CONS #1=(LOAD-TIME-VALUE (COMPUTE-IT)) #1#)
must perform two calls to COMPUTE-IT; although there is only one
unique LOAD-TIME-VALUE expression, there are two distinct references
to it.
In the case of a LOAD-TIME-VALUE form appearing in a quoted expression
passed to EVAL, each call to EVAL must result in a new evaluation of
<form>. For example,
(DEFVAR X 0)
(DEFUN FOO () (EVAL '(LOAD-TIME-VALUE (INCF X))))
is guaranteed to increment X each time FOO is called, while
(DEFUN FOO () (LOAD-TIME-VALUE (INCF X)))
may cause X to be evaluated only once.
The READ-ONLY-P argument designates whether the result can be considered
read-only constant. If NIL (the default), the result must be considered
ordinary, modifiable data. If T, the result is a read-only quantity
which may, as appropriate, be copied into read-only space and/or shared
with other programs. (Because this is a special form, this argument is
-not- evaluated and only the literal symbols T and NIL are permitted.)
Rationale:
LOAD-TIME-VALUE is a special form rather than a function or macro
because it requires special handling by the compiler.
Requiring the compiler to perform semantic processing such as macro
expansion on the nested <form>, rather than delaying all such processing
until load time, has the advantages that fewer macro libraries may need
to be available at load time, and that loading may be faster and result
in less consing due to macroexpansion. If users really want to delay
macroexpansion to load time, this can be done with an explicit call to
EVAL, e.g.
(LOAD-TIME-VALUE (EVAL '(MY-MACRO)))
Allowing the same LOAD-TIME-VALUE to cause its nested <form> to be
evaluated more than once makes simplifies its implementation in
interpreters which do not perform a preprocessing code walk. It also
makes the rules for the time of its processing analogous to those
for macro expansion.
This proposal explicitly does -not- tie LOAD-TIME-VALUE to the #,
read macro. Doing so would be an incompatible change to the definition
of #, (which is reliably useful only -inside- quoted structure,
while LOAD-TIME-VALUE must appear -outside- quoted structure in a
for-evaluation position).
The requirement that LOAD-TIME-VALUE expressions be evaluated once per
reference (rather than once per unique expression) prevents problems
that could result by performing destructive side-effects on a value
that is unexpectedly referenced in more than one place.
Current Practice:
This is an addition to the language and has not yet been implemented.
Cost to Implementors:
In compiled code, (LOAD-TIME-VALUE <form>) is similar to
'#,<form>. Most implementations can probably make use of the same
mechanism they use to handle #, to handle LOAD-TIME-VALUE. Note that
#, does not currently provide a mechanism for dealing with
non-read-only-ness.
Implementing LOAD-TIME-VALUE in the interpreter should be fairly
straightforward, since one simply needs to evaluate the <form> in the
null lexical environment. Implementations that use a preprocessing
code walk in the interpreter to perform macro expansion could process
LOAD-TIME-VALUE forms at that time.
Some code-walkers would have to be taught about this new
special form. Such changes would likely be trivial.
Cost to Users:
Some code-walkers would have to be taught about this new
special form. Such changes would likely be trivial.
Benefits:
Users are given a mechanism that to force evaluation to be delayed
until load time that does not rely on a feature of the reader.
Discussion:
Earlier versions (up to version 7) of this proposal stated that
all semantic processing of the LOAD-TIME-VALUE form should be postponed
until load time.
The semantics of LOAD-TIME-VALUE would be simplified considerably if
the READ-ONLY-P argument were removed and destructive operations on
the result of evaluating <form> prohibited. However, some people feel
that the ability to destructively modify the value is an essential
feature to include.
"Collapsing" of multiple references to the same LOAD-TIME-VALUE
expression could be allowed for read-only situations, but it seems
like it would be more confusing to make it legal in some situations
and not in others.
A number of other alternatives have been considered on this issue,
including:
- A proposal for a new special form that would force evaluation of
the <form> to happen only once. This was rejected because of
implementation difficulties.
- A proposal to add a function making the "magic cookie" used by #,
available to user code. The current proposal does not prevent such
a function from being added, but this approach appeared to have
less support than making the hook available as a new special form.
- A proposal to remove #, entirely (issue SHARP-COMMA-CONFUSION).
- A suggestion to change the behavior of (EVAL-WHEN (LOAD) ...).
Kent Pitman says:
Although I'm willing to take multiple evaluation in the interpreter
as a compromise position, I would like it mentioned in the discussion
that this was only an expedient to getting this issue accepted at all,
and that I'm not really happy about it. I have said that I think a
number of our lingering problems (with EVAL-WHEN, COMPILER-LET, and
this -- for example) are due to the presence of interpreters which do
not do a semantic-prepass at a known time. If I had my way, we would
require a semantic pre-pass and we would then be able to forbid
multiple evaluations even in the interpreter.
∂03-Jan-89 1432 X3J13-mailer issue SHARP-COMMA-CONFUSION
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 3 Jan 89 14:31:54 PST
Received: from defun.utah.edu by cs.utah.edu (5.59/utah-2.1-cs)
id AA00762; Tue, 3 Jan 89 15:30:48 MST
Received: by defun.utah.edu (5.59/utah-2.0-leaf)
id AA06046; Tue, 3 Jan 89 15:30:43 MST
Date: Tue, 3 Jan 89 15:30:43 MST
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8901032230.AA06046@defun.utah.edu>
To: x3j13@sail.stanford.edu
Subject: issue SHARP-COMMA-CONFUSION
Reply-To: cl-compiler@sail.stanford.edu
Forum: Compiler
Issue: SHARP-COMMA-CONFUSION
References: CLtL p. 356
Issue LOAD-TIME-EVAL
Category: CHANGE
Edit History: V1, 17 Oct 1988, Sandra Loosemore
V2, 30 Dec 1988, Sandra Loosemore (comments from Pitman)
Problem Description:
The way the read macro #, is defined in CLtL does not make it clear
that it can only appear inside of (implicitly) quoted structure to
guarantee consistent handling between the interpreter and the
compiler. Examples of inconsistent uses would be #, forms appearing
outside of a QUOTE that expand into list or symbol forms that could be
interpreted as code, or strings that could be interpreted as
documentation strings. Users are even more likely to be confused
because the wording in CLtL compares the behavior of #, to the special
form EVAL-WHEN, which must appear in a for-evaluation position.
#, also presents a serious problem to program-analyzing programs
because evaluation is tied to the reader, rather than the interpreter
or compiler. In theory, this could be handled by altering the read table
to have #, construct a "magic cookie" instead of performing read-time
evaluation and having the code walker examine quoted structures, but I've
never seen this actually done in practice.
Proposal SHARP-COMMA-CONFUSION:REMOVE:
Remove the #, read macro from the language.
Rationale:
Removing #, is simpler than trying to redefine it. Removing it from
the standard, rather than redefining it to mean something else (see
issue LOAD-TIME-EVAL), would allow implementations to continue to
provide it as an extension. (Although CLtL does not appear to
explicitly address the question of whether implementations may extend
the reader syntax, some implementations already provide sharp-sign
read macros other than those described in CLtL, such as #P syntax for
pathnames.)
Current Practice:
#, is not used very frequently, but the functionality it provides is
important in some advanced applications; one such application that has
been cited is CLOS. Maintainers of such applications have generally
expressed a willingness to give up #, only if a suitable alternative
is offered (see issue LOAD-TIME-EVAL).
PSL/PCLS has never bothered to implement #, correctly (it's treated
just like #.), and nobody has ever complained about it being broken.
Cost to implementors:
None.
Cost to users:
Because #, is used so infrequently, most users would probably not even
notice its absence.
Issue LOAD-TIME-EVAL proposes to add a special form that would provide
a somewhat cleaner mechanism for load-time evaluation.
It is also possible to use a global variable to get the similar effect as
#,, although this is sometimes awkward and carries a space and
performance penalty in many implementations.
Benefits:
The language specification is simplified by removing a peculiar
feature of the language that is accessible only through the reader.
Removing #, may also allow simpler strategies for implementing
compiled file loaders to be used.
Discussion:
If this proposal is rejected, the definition of #, in the standard will
still need to be clarified to indicate that #, can only appear in
quoted structure. It should probably also include some mention of the
problems that #, can cause code walkers.
Kent Pitman says:
I approve of the ideas being discussed, but ONLY contingent on
LOAD-TIME-VALUE being introduced.
I am optimistic that LOAD-TIME-EVAL will pass, and so I don't think this
will keep #, from passing, but:
- I want people who vote for this to realize the importance of voting
for LOAD-TIME-EVAL.
- On the off chance LOAD-TIME-EVAL doesn't pass, I want people to have
been warned that the consequences were severe for some major
applications.
- I want the records to reflect the actual rationale people should and
hopefully will be using to make these decisions.
∂03-Jan-89 1604 @Score.Stanford.EDU:nilsson@Tenaya.stanford.edu cs300
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 3 Jan 89 16:04:17 PST
Received: from Tenaya.stanford.edu by SCORE.STANFORD.EDU with TCP; Tue 3 Jan 89 15:58:38-PST
Received: by Tenaya.stanford.edu (5.59/25-eef) id AA06171; Tue, 3 Jan 89 15:57:44 PDT
Date: Tue, 3 Jan 89 15:57:44 PDT
From: Nils Nilsson <nilsson@Tenaya.stanford.edu>
Message-Id: <8901032357.AA06171@Tenaya.stanford.edu>
To: faculty@score
Subject: cs300
Several faculty members and several first-year PhD students thought it
was a good idea to continue cs300 through Winter Quarter. However, no
one responded to my request for a volunteer to organize this
once-a-week (Thursday, 4:15-5:30) seminar series (in which CS and CSL
faculty describe their research to first-year PhD students). This is
curious in view of all of the e-mail discussion about the importance
of getting PhD students started in research. I could probably solve
the problem by simpling asking one of you to do it, but you all know
more than I if you have epsilon more time and energy to take on this
important and not-very-time consuming chore. (Barbara Hayes-Roth, with
Mike Genesereth's help, organized the series this past Fall Quarter.)
If no one responds to this note, I'm going to assume that collectively
we have decided not to offer this seminar during Winter Quarter.
-Nils
∂03-Jan-89 1618 @Score.Stanford.EDU:nilsson@Tenaya.stanford.edu Visit to SUN Microsystems
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 3 Jan 89 16:18:35 PST
Received: from Tenaya.stanford.edu by SCORE.STANFORD.EDU with TCP; Tue 3 Jan 89 16:06:20-PST
Received: by Tenaya.stanford.edu (5.59/25-eef) id AA06186; Tue, 3 Jan 89 16:05:29 PDT
Date: Tue, 3 Jan 89 16:05:29 PDT
From: Nils Nilsson <nilsson@Tenaya.stanford.edu>
Message-Id: <8901040005.AA06186@Tenaya.stanford.edu>
To: faculty@score
Subject: Visit to SUN Microsystems
Sun Microsystems would like to enhance the possibilities for
collaboration with Stanford CS and CSL faculty. Toward that end, they
are willing to have a "Stanford CS Day" (or probably really half a
day) at SUN. SUN suggests that those faculty who would like to do so
could describe research that they are doing and that they think might
interest SUN. Faculty who are interested in participating should send
Joyce Chandler a note to that effect. (Note: this note is somewhat
different than the last one I sent about cs300. The present case has
no moral overtones; it isn't something I think we "should" do. If
enough faculty express interest, we'll do it.)
-Nils
∂03-Jan-89 1631 @Score.Stanford.EDU:chandler@polya.Stanford.EDU 1/10 Faculty Meeting
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 3 Jan 89 16:31:23 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Tue 3 Jan 89 16:28:55-PST
Received: by polya.Stanford.EDU (5.59/25-eef) id AA05428; Tue, 3 Jan 89 15:46:53 PDT
Date: Tue, 3 Jan 1989 15:46:44 PST
From: "Joyce R. Chandler" <chandler@polya.stanford.edu>
To: faculty@score
Subject: 1/10 Faculty Meeting
Message-Id: <CMM.0.87.599874404.chandler@polya.stanford.edu>
Just a reminder....the next general faculty meeting will be held in MJH-146
at 2:30 on January 10 (Tuesday). If you have any agenda items, please send
them to me as soon as possible.
Thanks and happy new year!
∂03-Jan-89 1719 LOGMTC-mailer Talk Thurs
Received: from ra.stanford.edu by SAIL.Stanford.EDU with TCP; 3 Jan 89 17:19:38 PST
Received: by ra.stanford.edu (5.59/25-eef) id AA02437; Tue, 3 Jan 89 17:18:17 PDT
Date: Tue, 3 Jan 89 17:18:17 PDT
From: John Mitchell <jcm@ra.stanford.edu>
Message-Id: <8901040118.AA02437@ra.stanford.edu>
To: ag@pepper, csd@score, daniel@mojave, linton@amadeus, logmtc@sail,
luca@src.dec.com, unger@amadeus, williams@ibm.com
Subject: Talk Thurs
Thurday 1/5 at 3 PM in MJH 301:
How To Make Ad-Hoc Polymorphsm Less Ad-Hoc
Phil Wadler
University of Glasgow
Abstract
Ad-hoc polymorphism allows operations like addition
or equality to be overloaded at several types
(e.g., + may stand for addition of integers or floats).
Languages like Standard ML and Miranda treat ad-hoc
polymorphism in an ad-hoc way. Type classes provide a
uniform framework for defining ad-hoc polymorphism and
provide a new approach to abstract data types and
object-oriented programming. They extend the Hindley/Milner
type system and generalize the "eqtype" variables of
Standard ML. Type classes are incorporated in the new
functional programming language Haskell.
∂04-Jan-89 0931 @Score.Stanford.EDU:tom@polya.Stanford.EDU heating problem
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 4 Jan 89 09:31:32 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Wed 4 Jan 89 09:28:53-PST
Received: by polya.Stanford.EDU (5.59/25-eef) id AA23024; Wed, 4 Jan 89 09:07:11 PDT
Date: Wed, 4 Jan 89 09:07:11 PDT
From: Tom Dienstbier <tom@polya.Stanford.EDU>
Message-Id: <8901041707.AA23024@polya.Stanford.EDU>
To: csd@score, faculty@score
Subject: heating problem
I just talked to the folks in the know at the plumbing shop and the story
today is that the problem lies in the steam return. We do have steam, that
is used for heating and hot water generation, to the building but since the
return is clogged, there is no place for the steam to go.
We are not the only people without heat, apparently the whole quad is also
running cold.
tom
∂04-Jan-89 1043 LOGMTC-mailer Seminar in Logic
Received: from csli.Stanford.EDU by SAIL.Stanford.EDU with TCP; 4 Jan 89 10:43:49 PST
Received: by csli.Stanford.EDU (4.0/4.7); Wed, 4 Jan 89 10:42:20 PST
Date: Wed 4 Jan 89 10:42:19-PST
From: Sol Feferman <SF@CSLI.Stanford.EDU>
Subject: Seminar in Logic
To: logic@csli.Stanford.EDU
Message-Id: <599942539.0.SF@CSLI.Stanford.EDU>
Mail-System-Version: <SUN-MM(242)+TOPSLIB(128)@CSLI.Stanford.EDU>
Seminar in Logic and Foundations
SPECIAL LECTURE:
Speaker: Prof. Gabriel Stolzenberg, Mathematics, Northeastern Univ.
Title: "A translation, impredicativity, rereading certain classical
arguments as constructive."
Time: Monday, January 9, 1989, 4:15-5:30 PM
Place: Room 381-T, Math Corner, Stanford
REGULAR SEMINAR MEETINGS:
Speaker: Paolo Mancosu
Title: "Generalizing classical and effective analogues for model theory"
Part III
Time: Tuesday, January 10, 1989, 4:15-5:30 PM
Place: (Same)
FUTURE SPEAKERS:
Michael Beeson, Yuri Gurevich, Itzhak Katznelson, Philip Scowcroft
(in some permuted order).
Participants are invited to give further talks (W,S).
NB:
There will be no meeting on Tuesday January 17, as a number of participants
will still be at the ASL meeting at UCLA. The regular seminar schedule
will resume on Tuesday, January 24. Note also change of regular meeting
days from Mondays to Tuesdays.
S. Feferman
-------
∂04-Jan-89 1049 @Score.Stanford.EDU:gio@sumex-aim.stanford.edu Re: DARPA Announcement
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 4 Jan 89 10:49:35 PST
Received: from sumex-aim.stanford.edu by SCORE.STANFORD.EDU with TCP; Wed 4 Jan 89 10:46:54-PST
Received: by sumex-aim.stanford.edu (4.0/inc-1.0)
id AA12044; Wed, 4 Jan 89 10:48:01 PST
Date: Wed, 4 Jan 1989 10:48:01 PST
From: Gio Wiederhold <gio@sumex-aim.stanford.edu>
To: Nils Nilsson <nilsson@tenaya.stanford.edu>
Cc: faculty@score.stanford.edu, bscott@score.stanford.edu,
ark@sail.stanford.edu, mendez@polya.stanford.edu
Subject: Re: DARPA Announcement
In-Reply-To: Your message of Tue, 3 Jan 89 13:52:08 PDT
Message-Id: <CMM.0.88.599942881.gio@sumex-aim.stanford.edu>
This announcement is intended to replace the Umbrella Contracts now in use
and is quite relevant for us.
Gio
∂04-Jan-89 1109 @Score.Stanford.EDU:tom@polya.Stanford.EDU DARPA Announcement
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 4 Jan 89 11:09:06 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Wed 4 Jan 89 11:06:12-PST
Received: by polya.Stanford.EDU (5.59/25-eef) id AA26998; Wed, 4 Jan 89 11:06:48 PDT
Date: Wed, 4 Jan 89 11:06:48 PDT
From: Tom Dienstbier <tom@polya.Stanford.EDU>
Message-Id: <8901041906.AA26998@polya.Stanford.EDU>
To: gio@sumex-aim.stanford.edu
Cc: nilsson@tenaya.stanford.edu, faculty@score.stanford.edu,
bscott@score.stanford.edu, ark@sail.stanford.edu,
mendez@polya.stanford.edu
In-Reply-To: Gio Wiederhold's message of Wed, 4 Jan 1989 10:48:01 PST <CMM.0.88.599942881.gio@sumex-aim.stanford.edu>
Subject: DARPA Announcement
Ernst,,, those are prices per month.
tom
∂04-Jan-89 1115 @Score.Stanford.EDU:tom@polya.Stanford.EDU DARPA Announcement
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 4 Jan 89 11:14:34 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Wed 4 Jan 89 11:11:39-PST
Received: by polya.Stanford.EDU (5.59/25-eef) id AA27295; Wed, 4 Jan 89 11:12:19 PDT
Date: Wed, 4 Jan 89 11:12:19 PDT
From: Tom Dienstbier <tom@polya.Stanford.EDU>
Message-Id: <8901041912.AA27295@polya.Stanford.EDU>
To: tom@polya.Stanford.EDU
Cc: gio@sumex-aim.stanford.edu, nilsson@tenaya.stanford.edu,
faculty@score.stanford.edu, bscott@score.stanford.edu,
ark@sail.stanford.edu, mendez@polya.stanford.edu
In-Reply-To: Tom Dienstbier's message of Wed, 4 Jan 89 11:06:48 PDT <8901041906.AA26998@polya.Stanford.EDU>
Subject: DARPA Announcement
Please disregard previous message.
tom
∂04-Jan-89 1412 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Theory Net
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 4 Jan 89 14:12:00 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA05626; Wed, 4 Jan 89 14:10:29 PDT
Message-Id: <8901042210.AA05626@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Wed, 4 Jan 89 14:10:45 PST
Received: by BYUADMIN (Mailer R2.01A) id 8656; Wed, 04 Jan 89 15:08:46 MST
Date: Wed, 4 Jan 89 15:36:24 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
"Victor Miller -- moderator, Theory Net" <THEORYNT%YKTVMX.BITNET@forsythe.stanford.edu>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
From: "Victor Miller -- moderator, Theory Net" <THEORYNT%YKTVMX.BITNET@forsythe.stanford.edu>
Subject: Theory Net
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
I'll be out of town until January 12. I'll handle all of your contributions
when I get back. Meanwhile, as before, if you need to post something really
urgent, just start the subject with Urgent: and it will be automatically
distiributed to the list (provided that you send it to theorynt@vm1.nodak.edu
theorynt@dearn or theorynt@ndsuvm1 (the latter two on bitnet).
Victor
∂04-Jan-89 1428 @Score.Stanford.EDU:cheriton@Pescadero.Stanford.EDU Re: DARPA Announcement
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 4 Jan 89 14:27:53 PST
Received: from Pescadero.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Wed 4 Jan 89 14:25:15-PST
Received: by Pescadero.Stanford.EDU (5.59/25-eef) id AA17508; Wed, 4 Jan 89 14:28:07 PDT
Date: Wed, 4 Jan 89 14:28:07 PDT
From: David Cheriton <cheriton@Pescadero.Stanford.EDU>
Message-Id: <8901042228.AA17508@Pescadero.Stanford.EDU>
To: bscott@score, faculty@score
Subject: Re: DARPA Announcement
I dont understand Gio's comment. I think the BAA is purely to solicit
proposals. If they decide to fund a proposal, it might be funded
under the umbrellas contract as one task.
Or dont I understand?
∂04-Jan-89 1739 @Score.Stanford.EDU:gio@sumex-aim.stanford.edu Re: DARPA Announcement
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 4 Jan 89 17:39:45 PST
Received: from sumex-aim.stanford.edu by SCORE.STANFORD.EDU with TCP; Wed 4 Jan 89 17:37:26-PST
Received: by sumex-aim.stanford.edu (4.0/inc-1.0)
id AA24138; Wed, 4 Jan 89 17:38:33 PST
Date: Wed, 4 Jan 1989 17:38:31 PST
From: Gio Wiederhold <gio@sumex-aim.stanford.edu>
To: David Cheriton <cheriton@pescadero.stanford.edu>
Cc: bscott@score.stanford.edu, faculty@score.stanford.edu
Subject: Re: DARPA Announcement
In-Reply-To: Your message of Wed, 4 Jan 89 14:28:07 PDT
Message-Id: <CMM.0.88.599967511.gio@sumex-aim.stanford.edu>
I did not talk to Pullen directly when at DARPA, but my understanding was
that they are putting an alternative contract mechanism in place.
Responding to the BAA would qualify submitters and in that sense be similar
to an umbrella, but perhaps at a different level.
I will try to verify what is going on. Since the umbrella progress has
been extremely slow, I plan to follow up with a response if the BAA is
appropriate. Let me know if you want to kept informed. I do not think
that all of the faculty are interested in ARPA machinations.
Gio
∂04-Jan-89 2028 @Score.Stanford.EDU:DEK@SAIL.Stanford.EDU First Faculty Lunch --- Winter Quarter
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 4 Jan 89 20:28:26 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Wed 4 Jan 89 20:26:20-PST
Message-ID: <rwanX@SAIL.Stanford.EDU>
Date: 04 Jan 89 2027 PST
From: Don Knuth <DEK@SAIL.Stanford.EDU>
Subject: First Faculty Lunch --- Winter Quarter
To: faculty@Score.Stanford.EDU
I'd like to encourage everybody to come to this special lunch,
when Rebecca will be giving a demo I think must of you will find
quite interesting (it will probably change my own research habits
significantly). At last the databases available to us are getting
to be truly useful and not too expensive!
Reminder: This lunch will be in the Mitchell Earth Sciences Building
(opposite Durand and Terman), not in our usual location.
∂05-Jan-89 1055 debra@russell REMINDER
Received: from russell (Russell.Stanford.EDU) by SAIL.Stanford.EDU with TCP; 5 Jan 89 10:55:11 PST
Received: from localhost by russell (4.0/4.7); Thu, 5 Jan 89 10:56:40 PST
To: evesem@russell
Subject: REMINDER
Date: Thu, 05 Jan 89 10:56:39 PST
From: Debra Alty <debra@russell>
Please mark your calendars --
The next Evening Seminar Meeting will be Wednesday, January 11th @
7:30.
More details later.
Debra
∂05-Jan-89 1342 X3J13-mailer ISO discussion and X3J13 Agenda DRAFT
Received: from lucid.com by SAIL.Stanford.EDU with TCP; 5 Jan 89 13:42:22 PST
Received: from challenger ([192.9.200.17]) by heavens-gate.lucid.com id AA05813g; Thu, 5 Jan 89 13:38:32 PST
Received: by challenger id AA12199g; Thu, 5 Jan 89 13:34:30 PST
Date: Thu, 5 Jan 89 13:34:30 PST
From: Jan Zubkoff <jlz@lucid.com>
Message-Id: <8901052134.AA12199@challenger>
To: x3j13@sail.stanford.edu
Subject: ISO discussion and X3J13 Agenda DRAFT
Monday, January 16
8:00am - ISO discussion, Chart room
We've found copying facilities to be very expensive at hotels. We intend not
to use their facilities. Please mail copies of reports to Liz Anne's
attention at the hotel if you intend to distribute reports at the meeting.
Participants are encouraged to bring copies of reports mailed to them to the
meeting.
X3J13 Committee Meeting Agenda DRAFT
January 16 - 18, 1988
1 Call to Order, January 16, 9:00am Chart Room
2 Opening Remarks and Introductions
- Opening Remarks, Bob Mathis (10 minutes)
- Introduction of attendees
- Future meetings, Jan Zubkoff (5 minutes)
3 Approval of Agenda
4 Approval of Minutes
5 Other Business
6 Character Subcommittee Report, Thom Linden (2 hours)
7 Coffee Break 10:30
8 Character continuation
9 Chapter 3 CLOS, Gregor Kiczales (1 hour)
10 LUNCH 12:00 Voyage Room Restaurant
11 Compiler Subcommittee, Sandra Loosemore (2 hours)
12 Iteration Subcommittee Report, Jonl White (30 minutes) 89-004
13 Recess 3:00
14 Call to Order, 8:00pm
15 Other Subcommittee Reports
16 Recess 10:00
17 Call to Order, January 17, 9:00am Chart Room
18 Other Subcommittee Reports
19 Coffee Break 10:30am
20 Cleanup Subcommittee, Larry Masinter
21 Lunch 12:00 Voyage Room Restaurant
22 Cleanup continuation
23 Break 3:00
24 Cleanup continuation
25 Recess 4:30pm
26 Luau 6:45pm
27 Call to Order, January, 18 9:00am Paddle Room
28 Cleanup continuation
29 Coffee Break 10:30
30 Cleanup continuation
31 Lunch, 12:00 Voyage Room Restaurant
32 Cleanup continuation
33 Recess, 3:00pm
34 Call to Order, January, 18 7:00pm
35 Cleanup continuation
36 Adjournment
* Monday 8:00 - ISO discussion
Not part of X3J13 Committee Meeting
∂05-Jan-89 1616 lansky@ai.sri.com SRI AIRR Seminar: TUESDAY, JANUARY 10, 2pm -- John Josephson
Received: from Warbucks.AI.SRI.COM by SAIL.Stanford.EDU with TCP; 5 Jan 89 16:16:04 PST
Received: from venice.ai.sri.com by Warbucks.AI.SRI.COM with INTERNET ;
Thu, 5 Jan 89 15:58:33 PST
Received: by venice.ai.sri.com (3.2/4.16)
id AA01659 for planlunch@ai.sri.com; Thu, 5 Jan 89 15:58:39 PST
Date: Thu, 5 Jan 89 15:58:39 PST
From: lansky@Warbucks.AI.SRI.COM (Amy Lansky)
Message-Id: <8901052358.AA01659@venice.ai.sri.com>
To: planlunch@Warbucks.AI.SRI.COM
Subject: SRI AIRR Seminar: TUESDAY, JANUARY 10, 2pm -- John Josephson
VISITORS: Please arrive 5 minutes early so that you can be escorted up
from the E-building receptionist's desk. Thanks!
-----------------------------------------------------------------------
ABDUCTION, DEDUCTION, INDUCTION AND PREDICTION
John R. Josephson (Josephson@osu-20.ircc.ohio-state.edu)
Ohio State University Laboratory for AI Research (LAIR)
Department of Computer and Information Science
2:00 PM, TUESDAY, January 10
SRI International, Building E, Room EJ228
Abduction has been described as a distinctive form of inference,
separate from both deduction and induction. Other terms that have
been used for essentially the same inference pattern include:
inference to the best explanation, hypothetic inference, eliminative
induction, differential diagnosis, and the explanatory inference. It
is the ``hypothetico-'' in the ``hypothetico-deductive'' model of the
scientific method, and often the ``hypothesize'' in the ``hypothesize
and test'' weak method in AI. The objectives of this talk will be to
describe and characterize abductive inference, and to clarify some
relationships to deduction and induction. In particular I will argue
that some abductions are deductions, but some are not, and that
inductive generalizations can be insightfully analyzed as special
cases of abductions. I will argue that predictions are a distinctive
form of inference; they are not abductions and are sometimes
deductive, sometimes not. The result will be a new taxonomy of basic
inference types.
∂06-Jan-89 0843 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Urgent: Update to PODC Call for Papers
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 6 Jan 89 08:43:18 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA27594; Fri, 6 Jan 89 08:41:47 PDT
Message-Id: <8901061641.AA27594@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Fri, 6 Jan 89 08:42:01 PST
Received: by BYUADMIN (Mailer R2.01A) id 0052; Fri, 06 Jan 89 09:39:51 MST
Date: Fri, 6 Jan 89 10:01:11 EST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
mischu@ALLEGRA.ATT.COM
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
From: mischu@ALLEGRA.ATT.COM
Subject: Urgent: Update to PODC Call for Papers
Comments: To: arpa!theorynt@vm1.nodak.edu
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
Corrections to PODC Call for Papers.
Because of scheduling problems and printing errors, the original
PODC Call for Papers has several inaccuracies. The copy
below contains corrections to various earlier versions.
In particular:
Abstracts are due January 30. (No later postmarks-REALLY!)
Acceptance Notification is April 5.
My room number is 3D-458.
Please send 13 copies of the abstract (not 4).
Michael Merritt
______________________________________________________________________
CALL FOR PAPERS
Eighth ACM SIGACT-SIGOPS Symposium on
Principles of Distributed Computing
*************
* (PODC'89) *
*************
August 14-16, 1989
Edmonton, Alberta, Canada
Original research contributions are sought that address fundamental
issues in the theory and practice of distributed and concurrent
systems. Topics of interest include, but are not limited to:
- Principles of distributed computation derived from
practical experience with working systems
- Algorithms and complexity
- Specification, semantics, and verification
- Programming languages and programming language constructs
- Fault tolerance
- Cryptography and security
Important dates:
Jan. 30, 1989 Abstracts due
Apr. 5, 1989 Acceptance notification
May 15, 1989 Camera-ready version due
Please send 13 copies of a detailed abstract (not the complete paper),
with the address, e-mail address, and telephone number, to the Program
Chair:
Michael Merritt
AT&T Bell Laboratories
Room 3D-458
600 Mountain Avenue
Murray Hill, NJ 07974
U.S.A.
e-mail: allegra!mischu
The abstract must provide sufficient details to allow the program
committee to assess the merits of the paper and should include
appropriate references to and comparisons with literature. It is
recommended that each submission begin with a succinct statement of
the problem, a summary of the main results, and a brief explanation of
the significance and relevance to the conference, all suitable for a
non-specialist. Technical development of the work, directed to the
specialist, should follow. A limit of 10 typed double-spaced pages is
placed on submissions. If the authors believe that more details are
essential to substantiate the main claims of the paper, they are
encouraged to include a clearly marked appendix that will be read at
the discretion of the Program Committee.
Abstracts conforming to the guidelines will be considered by the
committee if they are postmarked by the deadline of January 30th,
1989, and are received within a reasonable time thereafter.
The Program Committee:
Yehuda Afek, AT&T and Tel Aviv University
Baruch Awerbuch, MIT
Edmund Clarke, Carnegie Mellon
Cynthia Dwork, IBM
Michael Fischer, Yale University
Mohamed Gouda, Univ. of Texas at Austin
Maurice Herlihy, Carnegie Mellon
Michael Merritt, AT&T
David Peleg, Weizmann Institute, Israel
Charles Rackoff, University of Toronto
Peter Weinberger, AT&T
Pierre Wolper, University of Liege, Belgium
Conference Chair:
Piotr Rudnicki, The University of Alberta, Edmonton, Canada,
(piotr@alberta.UUCP)
Publicity Chair:
M. Tamer Ozsu, The University of Alberta, Edmonton, Canada,
(ozsu@alberta.UUCP)
______________________________________________________________________
∂06-Jan-89 0917 aaai@sumex-aim.stanford.edu Council Conference Call
Received: from sumex-aim.stanford.edu by SAIL.Stanford.EDU with TCP; 6 Jan 89 09:17:13 PST
Received: by sumex-aim.stanford.edu (4.0/inc-1.0)
id AA18180; Fri, 6 Jan 89 09:14:46 PST
Date: Fri, 6 Jan 1989 9:14:45 PST
From: AAAI <aaai@sumex-aim.stanford.edu>
To: officers:;@sumex-aim.stanford.edu
Cc: aaai@sumex-aim.stanford.edu
Subject: Council Conference Call
Message-Id: <CMM.0.88.600110085.aaai@sumex-aim.stanford.edu>
For members of the Council and AAAI Officers, we will be holding a
conference call next week on Thursday, January 12, at 4:30 pm (EST)
or 1:30 pm (PST). We plann to discuss the status of the membership,
NTU, etc.
If you plan to participate, please send me your phone number.
Claudia
∂06-Jan-89 0921 @Score.Stanford.EDU:tom@polya.Stanford.EDU Dover retirement
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 6 Jan 89 09:21:29 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Fri 6 Jan 89 09:18:07-PST
Received: by polya.Stanford.EDU (5.59/25-eef) id AA28348; Fri, 6 Jan 89 09:18:11 PDT
Date: Fri, 6 Jan 89 09:18:11 PDT
From: Tom Dienstbier <tom@polya.Stanford.EDU>
Message-Id: <8901061718.AA28348@polya.Stanford.EDU>
To: faculty@score, csd@score
Subject: Dover retirement
Folks, we have come to an end of another era. The DOVER printer has been
de-comissioned. Officially on the 31st of December Dover has been shut off.
This will almost end the existence of the experimental 3MB ether net in
Margaret Jacks Hall. The system SAIL is the only host that is running on
the 3MB segment. The Dovers and associated equipment IFS, ALTOS, were part
of a grant from XEROX Corporation to the Computer Science Department in
1979/1980. The Dovers have been real "work horses" to the department printing
millions of pages of text and graphics. At one time, CSDCF was operating three
of these laser printers. The Altos were essentially the first limited
production workstation that utilized a mouse and mouse driven menus.
The IFS was equally important in that it was the first system to be used
as a dedicated file server.
This equipment will be surplused through Surplus Sales on campus
if anyone is interested in some of the hardware. I can supply additional
details about the equipment if needed.
Tom
∂06-Jan-89 1023 @Score.Stanford.EDU:chandler@polya.Stanford.EDU 1-10-89 Faculty Meeting
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 6 Jan 89 10:23:14 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Fri 6 Jan 89 10:20:39-PST
Received: by polya.Stanford.EDU (5.59/25-eef) id AA00579; Fri, 6 Jan 89 10:21:30 PDT
Date: Fri, 6 Jan 1989 10:21:13 PST
From: "Joyce R. Chandler" <chandler@polya.stanford.edu>
To: faculty@score, bureaucrats@score
Subject: 1-10-89 Faculty Meeting
Message-Id: <CMM.0.87.600114073.chandler@polya.stanford.edu>
Here is the agenda for next Tuesday's Faculty Meeting to be held at 2:30 in
MJH-146.
Approval of degree candidates
--Sharon Hemenway
Brief discussion of recommended procedure for deciding about any changes to the PhD program
Staff Reports
1. Computer Forum
--Carolyn Tajnai
2. Computer Facilities
--Jim Ball
3. Financial
--George Wheaton
--Betty Scott
4. Education
--Roy Jones
5. Other
Faculty Actions
1. Recommendations to appoint Consulting Professors
--Doug Lenat
--Bill Clancey
2. Report on progress of searches
Theory
--Don Knuth
Programming Languages
--Daniel Weise
Robotics
--Jean-Claude Latombe
Asst. Chairman for Educational Affairs
--Roy Jones
Report on progress of new building
--George Wheaton
Other
∂06-Jan-89 1203 @Score.Stanford.EDU:winograd@loire.stanford.edu SEMINAR ON COMPUTERS, ETHICS, and SOCIAL RESPONSIBILITY
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 6 Jan 89 12:03:20 PST
Received: from loire.stanford.edu by SCORE.STANFORD.EDU with TCP; Fri 6 Jan 89 12:00:41-PST
Received: by loire.stanford.edu (5.59/25-eef) id AA02035; Fri, 6 Jan 89 12:00:46 PDT
Date: Fri, 6 Jan 89 12:00:46 PDT
Message-Id: <8901062000.AA02035@loire.stanford.edu>
From: Winograd@csli.stanford.edu
To: ethdist@loire.stanford.edu
Subject: SEMINAR ON COMPUTERS, ETHICS, and SOCIAL RESPONSIBILITY
SEMINAR ON COMPUTERS, ETHICS, and SOCIAL RESPONSIBILITY
Winter Quarter 1988-89
Helen Nissenbaum and Terry Winograd
Mondays 1:15-3:15 -- FIRST MEETING JANUARY 9
Margaret Jacks Hall Room 460-252
During the coming quarter we will be holding a weekly seminar on the
teaching of ethics and social responsibility topics to computer science
students. The major focus will be on the preparation of an
undergraduate course which will be offered beginning this Spring by
Computer Science, Symbolic Systems and VTSS. The development of that
course is being sponsored by a special grant from the Dean of
Undergraduate Studies and by the CS Department and Symbolic Systems
Program. The seminar this quarter will serve both a workshop for
putting together the undergraduate course and as a forum for discussion
of the underlying issues.
In a recent VTSS forum, John McCarthy argued that when technologists
attempt to consider the social and ethical implications of their work,
the material they cover tends to be a matter of fashion, the discussion
ignorant, and the direction politically motivated. This pessimism is
shared by many of our colleagues and students. It may be difficult to
get beyond it, but it is not impossible. The challenge in both the
seminar and the subsequent course is to provide students with skills
and background that will prepare them to consider important and
enduring questions, with informed intelligence, and with a direction
that is political not in the narrow sense of limited ideologies, but in
the broad sense of being concerned with the good of society.
Part of the work will include reading and reporting on available
materials, designing reading sequences, projects and lessons, and
preparing bibliographies. Sessions will presentation by an outside
speaker, with discussion by the participants.
Students interested in participating for credit will be able to sign up
for CS399 (Independent Project). There are also some TA funds
available for students who will take on independent responsibility for
some of the work of organizing for the Spring course.
For more information contact Terry Winograd (winograd@csli.stanford.edu
-- 3-2780) or Helen Nissenbaum (helen@csli.stanford.edu -- 3-4091).
----- End Forwarded Message -----
∂06-Jan-89 1216 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Urgent: Semantics of Programming Languages
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 6 Jan 89 12:16:43 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA05801; Fri, 6 Jan 89 12:14:43 PDT
Message-Id: <8901062014.AA05801@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Fri, 6 Jan 89 12:14:57 PST
Received: by BYUADMIN (Mailer R2.01A) id 7025; Fri, 06 Jan 89 13:12:57 MST
Date: Fri, 6 Jan 89 13:08:06 CST
Reply-To: revesz%yktvmh.BITNET@forsythe.stanford.edu
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
From: ND HECN E-mail Postmaster <INFO%NDSUVM1.BITNET@forsythe.stanford.edu>
Subject: Urgent: Semantics of Programming Languages
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
This was sent as a file to THEORYNT (?) and was bounced to me because
it came as a file and not a mail item. I am posting it for Dr. Revesz.
His mailing address is REVESZ@YKTVMH.Bitnet .
Marty Hoag - North Dakota HECN e-mail Postmaster
Subject: Urgent: Semantics of Programming Languages
The Programming Languages and Foundations Department
of the IBM T.J. Watson Research Center
Announces a series of distinguished lectures on the
SEMANTICS OF PROGRAMMING LANGUAGES
---------------------------------------------------------------------------
January 26 An ultimate "Kahn Principle" for dataflow semantics
Albert Meyer, MIT
---------------------------------------------------------------------------
February 23 How far do we need to automate proofs?
Dana Scott, Carnegie Mellon University
---------------------------------------------------------------------------
March 23 Title to be announced later
Samson Abramsky, Imperial College
---------------------------------------------------------------------------
April 27 Title to be announced later
John Mitchell, Stanford University
---------------------------------------------------------------------------
May 25 Type structure and categories
John Reynolds, Carnegie Mellon University
---------------------------------------------------------------------------
Time: 3 PM
Location: IBM T.J. Watson Research Center, Hawthorne, NY.
Visitors are welcome. Please make arrangements in advance by contacting
Dr. Gyorgy Revesz at (914) 789-7871.
IBM T.J. Watson Research Center
P.O. Box 704
Yorktown Heights, NY 10598
∂06-Jan-89 1239 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu URGENT: Noerteastern University Theory Day
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 6 Jan 89 12:38:52 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA06928; Fri, 6 Jan 89 12:37:15 PDT
Message-Id: <8901062037.AA06928@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Fri, 6 Jan 89 12:37:30 PST
Received: by BYUADMIN (Mailer R2.01A) id 7427; Fri, 06 Jan 89 13:35:40 MST
Date: Fri, 6 Jan 89 15:11:55 EST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
andrew klapper <klapper%CORWIN.CCS.NORTHEASTERN.EDU@Forsythe.Stanford.EDU>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
From: andrew klapper <klapper%CORWIN.CCS.NORTHEASTERN.EDU@Forsythe.Stanford.EDU>
Subject: URGENT: Noerteastern University Theory Day
Comments: To: THEORYNT@vm1.nodak.edu
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
-------------------------------------------------------------------------------
The College of Computer Science at Northeastern University
announces its 1989
THEORY DAY
Friday, January 27, 1989
........................... Schedule of Events ................................
10:00 AM Eric Allender "Limitations of the Upward Separation Technique"
11:00 AM Joan Feigenbaum "Generating Hard Certified Elements of
NP-Complete Sets"
12:00 PM Lunch Break
2:00 PM Gilles Brasard "Minimum Disclosure Proofs of Knowledge"
3:30 PM Ken Macalloon "Constraint Logic Programming"
All talks will take place in room 356 Ell Center on the Northeastern University
campus. Parking on campus will be available but requires prior approval. For
information about visitor parking and maps of campus or for any other
information, please contact Gayle Mackay:
College of Computer Science
Northeastern University
360 Huntington Ave.
Boston, MA 02115
(617) 437-2464
or contact Andy Klapper at klapper@corwin.ccs.northeastern.edu
∂06-Jan-89 1304 ULLMAN@Score.Stanford.EDU help save some fish
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 6 Jan 89 13:04:44 PST
Date: Fri 6 Jan 89 13:00:53-PST
From: Jeffrey D. Ullman <ULLMAN@Score.Stanford.EDU>
Subject: help save some fish
To: faculty@Score.Stanford.EDU, staff@Score.Stanford.EDU,
phd@Score.Stanford.EDU
Message-ID: <12460458144.26.ULLMAN@Score.Stanford.EDU>
I have 4 tropical fish that need a home while I am on sabbatical.
Ideally, I'd like to close down the tank permanently.
Can you take these fish (2 kissing gouramis, 2 neon tetras)
and give them a home in your tank?
---jdu
-------
∂06-Jan-89 1442 ARCEO@Warbucks.AI.SRI.COM SEMINAR - JANUARY 11th (Wednesday)
Received: from Warbucks.AI.SRI.COM by SAIL.Stanford.EDU with TCP; 6 Jan 89 14:42:46 PST
Date: Fri 6 Jan 89 14:22:47-PST
From: ARCEO@Warbucks.AI.SRI.COM (Dori Arceo)
Subject: SEMINAR - JANUARY 11th (Wednesday)
To: AIC-Staff@Warbucks.AI.SRI.COM, planlunch@Warbucks.AI.SRI.COM,
CSL-Staff@CSL.SRI.COM, BBoard@KL.SRI.COM
cc: Waldinger@Warbucks.AI.SRI.COM
Message-ID: <600128567.0.ARCEO@WARBUCKS.AI.SRI.COM>
Mail-System-Version: <VAX-MM(229)+TOPSLIB(126)@WARBUCKS.AI.SRI.COM>
TITLE: Refinement of Data
SPEAKER: Prof. Ralph Back
Department of Computer Science
Abo Akademi
Turku, Finland
TIME: 4:15 Wednesday, January 11
PLACE: AI Center Conference Room
EJ 228
Building E, SRI International
ABSTRACT:
The refinement calculus gives a formal basis for the stepwise-refinement
method of program construction. It is an extension of the weakest-precondition
calculus of Dijkstra, and is based on a relation of refinement between program
statements. This relation is a partial order when the semantics of statements
is identified with their predicate transformers. The talk describes how to
handle data refinement within this calculus, i.e., how to change the data
representation within a program in a systematic manner by a sequence of
correctness-preserving program transformations. The method proposed can also
handle nondeterministic abstraction functions (cases where a concrete program
state may represent many different abstract states). This is achieved by
introducing statements with an angelic (don't know) nondeterminism, in
addition to the usual demonic (don't care) nondeterminism assumed by Dijkstra.
The resulting specification/programming language is given a game-theoretic
weakest-precondition semantics. The method permits different representations
of a data abstraction to coexist in a program statement, using explicit
representation and abstraction statements to move from one representation to
another.
-------
∂06-Jan-89 1504 X3J13-mailer Ballots, please
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 6 Jan 89 15:04:38 PST
Received: from Semillon.ms by ArpaGateway.ms ; 06 JAN 89 00:23:39 PST
Date: 6 Jan 89 00:23 PST
From: masinter.pa@Xerox.COM
Subject: Ballots, please
To: X3J13@sail.stanford.edu
reply-to: cl-cleanup@sail.stanford.edu
Message-ID: <890106-002339-193@Xerox>
We've gotten very few ballots back. Please let us know soon if you plan to
vote even if you can't get your ballot in right away; we'll need some time
to respond to some of the comments and prepare new versions for the
meeting!
Thanks,
Larry
∂06-Jan-89 2136 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Urgent: SPAA Deadline Approaching. Call for papers follows:
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 6 Jan 89 21:36:26 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA21822; Fri, 6 Jan 89 19:50:44 PDT
Message-Id: <8901070350.AA21822@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Fri, 6 Jan 89 19:51:00 PST
Received: by BYUADMIN (Mailer R2.01A) id 0412; Fri, 06 Jan 89 20:48:35 MST
Date: Fri, 6 Jan 89 22:41:04 EST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
ftl%MATH.MIT.EDU@Forsythe.Stanford.EDU
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
From: ftl%MATH.MIT.EDU@Forsythe.Stanford.EDU
Subject: Urgent: SPAA Deadline Approaching. Call for papers follows:
Comments: To: theorynt@vm1.nodak.edu
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
CALL FOR PAPERS
1989 ACM Symposium on
Parallel Algorithms and Architectures
The 1st Annual ACM Symposium on Parallel Algorithms and
Architectures will be held in Santa Fe, New Mexico on June 18--21,
1989. The Symposium is sponsored by the ACM SIGACT and SIGARCH in
cooperation with the IEEE and EATCS.
Papers presenting original research on fundamental advances in
parallel algorithms and architectures are sought. Suggested topics
for papers include:
parallel algorithms
parallel architectures
parallel complexity theory
communication networks
machine models
programming paradigms and general problem solving techniques
VLSI computation
resource tradeoffs
VLSI design
wafer-scale integration
fault tolerance
testing
Persons wishing to submit a paper should send 15 copies of an extended
abstract by January 20, 1989 to
Larry Snyder
Dept. of Computer Science FR-35
University of Washington
Seattle WA 98195
To be considered, papers must either be airmail postmarked by January
20, 1989 or be received by January 24, 1989. Authors will be notified
of acceptance or rejection by March 6, 1989. A final copy of each
accepted paper, prepared according to ACM guidelines for inclusion in
the Symposium proceedings, will be due by April 10, 1989.
Submission format: Abstracts should begin with a succinct statement of
the problems that are addressed in the paper, the main results
achieved, an explanation of the significance of the work, and a
comparison of the work to past research in the field. This material
should be readily understandable to nonspecialists. Technical
development, directed toward the specialist, should follow as
appropriate. The entire extended abstract should not exceed 4000
words or 10 double-spaced pages.
Symposium format: Authors of accepted papers will be expected to
present their work at the Symposium. The selection of papers and the
format of the meeting will be determined by the Program Committee.
Greatest consideration will be given to papers that present novel
research and demonstrable advances of either a theoretical or
practical nature in parallel algorithms and architectures.
Outstanding Paper Award: This award will be given for that paper which
the Program Committee judges to be particularly outstanding. At its
discretion, the Committee may decline to make the award or may split
the award among two or more papers.
Conference Chair:
Tom Leighton
Math Department and
Lab for Computer Science
MIT
Cambridge, MASS 02139
Program Committee Chair:
Larry Snyder
Dept. of Computer Science FR-35
University of Washington
Seattle, WA 98195
Local Arrangements Chair:
Ernest Brickell
Theoretical Computer Science Division, 1423
Sandia National Labs
Albuquerque, NM 87185
Program Committee:
Alok Aggarwal
Faith Fich
H.T. Kung
Charles Leiserson
Thomas Lengauer
Gary Miller
Sartaj Sahni
Chuck Seitz
Burton Smith
Larry Snyder
Quentin Stout
Jeff Ullman
∂06-Jan-89 2239 @Score.Stanford.EDU:cheriton@Pescadero.Stanford.EDU Re: Dover retirement
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 6 Jan 89 22:39:06 PST
Received: from Pescadero.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Fri 6 Jan 89 22:36:03-PST
Received: by Pescadero.Stanford.EDU (5.59/25-eef) id AA09327; Fri, 6 Jan 89 22:39:01 PDT
Date: Fri, 6 Jan 89 22:39:01 PDT
From: David Cheriton <cheriton@Pescadero.Stanford.EDU>
Message-Id: <8901070639.AA09327@Pescadero.Stanford.EDU>
To: csd@score, faculty@score, tom@polya.Stanford.EDU
Subject: Re: Dover retirement
In-Reply-To: <8901061718.AA28348@polya.Stanford.EDU> from Tom Dienstbier
<tom@polya.Stanford.EDU> on Fri, 6 Jan 89 09:18:11 PDT
I am very pleased that Tom took the effort to briefly document some of the
history, i.e. give an epitath for the Dover/Altos. The Xerox grant predates
me by several years so I dont know the full story.
It would be wonderful if "someone" from that era could write a note to Xerox
as a brief final report on that grant. I think it had a big impact!
As I sit placing orders for 10 MIP workstations with 16 megabytes or more
of memory, I realize how much the world has changed from those days.
∂06-Jan-89 2253 X3J13-mailer Issue: DECLARE-TYPE-FREE (Version 9)
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 6 Jan 89 22:52:59 PST
Received: from Semillon.ms by ArpaGateway.ms ; 06 JAN 89 22:51:48 PST
Date: 6 Jan 89 22:51 PST
From: masinter.pa@Xerox.COM
To: X3J13@Sail.Stanford.Edu
Subject: Issue: DECLARE-TYPE-FREE (Version 9)
reply-to: cl-cleanup@sail.stanford.edu
line-fold: NO
Message-ID: <890106-225148-2007@Xerox>
This issue will be voted separately at the X3J13 meeting.
I (unfortunately) caused some controversy by changing the
sense of the proposal at the last minute. I'm sorry, as I do
not feel stringly about this issue, although there are some
additional considerations. I've included some, but not all,
Additional Comments at the end.
This version has two proposals, both the ALLOW proposal
which I introduced with version 8 and a LEXICAL proposal.
The difference is about whether a type declaration affects only variable
references within its scope, or also affects variable references that
are outside the scope of the declaration but dynamically inside the
execution of a form that is itself inside the scope of the declaration.
This really has nothing to do with the original goal of the proposal,
since exactly the same issue arises for a type declaration attached
to a binding of a special variable.
If you've yet to complete your ballot, please indicate which
version of the proposal you're votes apply to.
!
Forum: Cleanup
Issue: DECLARE-TYPE-FREE
References: CLtL p.158
DECLARATION-SCOPE
Related issues: FUNCTION-TYPE-ARGUMENT-TYPE-SEMANTICS
DECLARATION-SCOPE
Category: CLARIFICATION/ADDITION
Edit history: Version 1, 18-Sep-88, Moon
Version 2, 22-Sep-88, Moon
(small edits to reflect mail discussion)
Version 3, 22-Sep-88, Masinter
Version 4, 27-Sep-88, JonL
Version 5, 30-Sep-88, Masinter (cost to implementors)
Version 6, 06-Oct-88, Pitman (minor edits in Discussion)
Version 7, 5-Dec-88, Masinter (scope->extent)
Version 8, 7-Dec-88, Masinter (back to scope)
Version 9, 2-Jan-89, Moon (2 proposals, to clarify discussion)
Problem description:
Section 9.2 of CLtL, p158, says that a declaration specifier like
(TYPE type var1 var2 ...) "... affects only variable bindings".
Since declarations can occur in contexts other than establishing
"variable bindings", most people interpret this statement to mean
that type declarations not in such context are either (1) completely
to be ignored, or (2) invalid CL syntax. Thus both of the following
forms would be suspect in that the type declarations could not have
any effect:
(if (and (typep x 'fixnum) (typep y 'fixnum))
(locally (declare (fixnum x y)) ;LOCALLY does not bind
...algorithm using x and y...) ; any variables.
...similar algorithm using x and y...)
(let ((y 'foo))
(setq y 10)
(let ((x 5)) ;'y' is not being bound in
(declare (fixnum y)) ; this particular context.
(incf y)
...random algorithm...))
Proposal (DECLARE-TYPE-FREE:ALLOW):
Specify that a type declaration does not only "affect variable bindings";
rather, type declarations are legal in all declarations. The interpretation
of a type declaration is that, during the execution of any expression
within the scope of the declaration, it is an error for the value of
the declared variable not to be of the declared type. For declarations
that are associated with variable bindings, the type declaration also
applies to the initial binding of the variable. In the special case
of a declaration for which there are no executable expressions
within the scope of the declaration (e.g., (locally (declare (integer x)))),
the result is as if there were executable expressions.
In this proposal, a type declaration affects not only variable
references within its scope, but also affects variable references that
are outside the scope of the declaration but dynamically inside the
execution of a form that is itself inside the scope of the
declaration. Such references can exist when the variable is SPECIAL
or when the declaration is not attached to the variable's binding, so
that the scope of the declaration does not include the entire scope
of the variable.
Proposal (DECLARE-TYPE-FREE:LEXICAL):
Specify that a type declaration does not only "affect variable bindings";
rather, type declarations are legal in all declarations. The interpretation
of a type declaration is that, during the execution of any reference to the
declared variable within the scope of the declaration, it is an error for
the value of the declared variable not to be of the declared type; and
during the execution of any SETQ of the declared variable within the scope
of the declaration, it is an error for the newly assigned value of the
declared variable not to be of the declared type; and at the moment the
scope of the declaration is entered, it is an error for the value of the
declared variable not to be of the declared type.
In this proposal, a type declaration affects only variable references within
its scope, and the meaning of "free" and "variable-binding-associated" type
declarations can be described identically.
This proposal is equivalent to saying that the meaning of a type declaration
is equivalent to changing each reference to <var> within the scope of the
declaration to (THE <type> <var>), changing each expression assigned to the
variable within the scope of the declaration to (THE <type> <new-value>),
and executing (THE <type> <var>) at the moment the scope of the declaration
is entered.
Examples:
;; this is an error under DECLARE-TYPE-FREE:ALLOW:
;; the assertion that x is a fixnum is violated between the two
;; calls to (zap)
;; this is a valid program under DECLARE-TYPE-FREE:LEXICAL
(let ((x 12) (y 'foo))
(flet ((zap () (rotatef x y)))
(locally (declare (fixnum x))
(zap)
(zap)
x)))
;; this is an error under both proposals
(let ((x 12) (y 'foo))
(flet ((zap () (rotatef x y)))
(locally (declare (fixnum x))
(zap)
(print x)
(zap)
x)))
;; this is an error under DECLARE-TYPE-FREE:ALLOW, because
;; the assertion that x is a fixnum
;; is violated during the call to zap, even though few
;; implementations will be able to check:
;; this is a valid program under DECLARE-TYPE-FREE:LEXICAL
(let ((x 12) (y 'foo))
(flet ((zap ()
(rotatef x y)
(rotatef x y)))
(locally (declare (fixnum x))
(zap)
x)))
;; this is an error under both proposals, even though the
;; violation of the type constraint happens after the form
;; with the declaration is exited.
(let ((f (let ((x 3))
(declare (fixnum x))
#'(lambda (z) (incf x z)))))
(funcall f 4.3))
Rationale:
This proposal enables optimizing compilers to make use of the otherwise
ignored type information. Many people have often asked for it, and
there is no strong reason to forbid it.
DECLARE-TYPE-FREE:ALLOW is more restrictive on programs and hence allows
more freedom for optimizing compilers. DECLARE-TYPE-FREE:LEXICAL is easier
to understand but allows a specialized representation only where the scope
of the variable is the same as the scope of the declaration or the compiler
can prove that there are no relevant other references to the variable.
Current practice:
Lucid Common Lisp allows "free" type declarations; under some
circumstances the compiler issues a warning message that such usage
is an extension to Common Lisp.
Cost to Implementors:
Implementations that might currently warn about such declarations
would have to remove the warning; otherwise, it is valid to ignore
type declarations.
Cost to Users:
None, this is a compatible addition.
Cost of non-adoption:
Common Lisp will be less self-consistent.
Benefits:
Programmers will be able to use type declaration to express their
intent, rather than having to manually insert THE wrappers around
every reference.
Esthetics:
It is a simpler interpretation for type declaration specifiers, with
fewer special cases; hence reduces the number of exceptions in the
language.
Discussion:
Another cleanup issue, DECLARATION-SCOPE, addresses the scope of
declarations. This proposal carefully uses the phrase "within the
scope of the declaration" to avoid confounding the two issues.
This issue has been discussed at the Fort Collins X3J13 meeting in
November 1987, and at length on the various electronic mailing lists.
At least one current implementation is able to generate more efficient
code when declarations are associated with a particular binding, since
it then has the option to choose type-specific specialized storage for
the runtime value of the variable. So, for example,
(let ((x v)) (declare (type float x)) (+ x x))
is sometimes more efficient than
(let ((x v)) (locally (declare (type float x)) (+ x x)))
However, the local type declarations allowed by this proposal do
provide some useful information, even if it is not the *most* useful.
It is possible for a sufficiently "smart" compiler to infer the
equivalent of a "binding declaration" when it can ascertain that the
type of the binding value -- 'v' above -- is commensurate with the
type locally declared over the scope of usage of the variable.
It may be useful for a compiler to issue a warning whenever it finds
nested type declarations referring to the same variable and the
intersection of the declared types is null.
Documentation might want to discuss the style implications of
nested declarations intersecting. The interesting cases are:
- An inner declaration could be a subtype of an outer one.
This is the most useful case and probably the only one to
be encouraged in code written by humans. e.g.,
(locally (declare (type number x))
(locally (declare (type integer x))
...use X as integer...))
- An outer declaration could be a subtype of an inner one.
This is useless but harmless. It might happen as the result
of certain macro situations. e.g.,
(locally (declare (type integer x))
(locally (declare (type number x))
...use X as integer...))
- Two types may only partially overlap. This would presumably
happen only as the result of a macro expansion.
(locally (declare (type fixnum x))
(locally (declare (type (or bit package) x))
...use X as BIT...))
!
Additional Comments:
"The ALLOW proposal has the problems that:
- It isn't enforceable.
- In exactly those cases where it is enforceable, it's useful to enforce.
In those case where it is not enforceable (the odd middle-ground cases
in the Examples), it doesn't help you any to enforce the restriction, and
it might get in your way.
"
"Btw, both versions 8 and 9 have the non-preemptive problem that the
only examples they provide illustrate what happens in the screw
cases. This might lead some people to think that this whole issue
is kind of random. I think there should be a few examples of the
"normal use" (such as the un-filled-out examples in the problem
description). "
"Suppose I have
(defun frob (delta)
(flet ((more (x) (+ x delta)))
;; if you like, put (declare (inline more)) here
(typecase delta
(float (locally (declare (type float delta))
... (more rho ) ... )
((signed-byte 8)
(locally (declare (type (signed-byte 8) delta))
... (more zz) ... )
...)
Even without the INLINE, it is a common & legal transformation
to do inline substitution on small FLETted functions. Even though
the reference DELTA in the definition of MORE isn't within the
lexical scope of the local declaration, it *is* the same delta. While
its not impossible to maintain a separate contour in order to segregate
the type declarations, it seems like unnecessary work, and in fact, the
declaration is quite useful if MORE is inlined. This is only the case
with the ALLOW proposal and not the LEXICAL proposal."
∂07-Jan-89 0933 X3J13-mailer Issue COMPILE-FILE-HANDLING-OF-TOP-LEVEL-FORMS, version 8
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 7 Jan 89 09:33:34 PST
Received: from defun.utah.edu by cs.utah.edu (5.59/utah-2.1-cs)
id AA19606; Sat, 7 Jan 89 10:32:25 MST
Received: by defun.utah.edu (5.59/utah-2.0-leaf)
id AA08861; Sat, 7 Jan 89 10:32:22 MST
Date: Sat, 7 Jan 89 10:32:22 MST
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8901071732.AA08861@defun.utah.edu>
To: x3j13@sail.stanford.edu
Subject: Issue COMPILE-FILE-HANDLING-OF-TOP-LEVEL-FORMS, version 8
Reply-To: cl-compiler@sail.stanford.edu
Forum: Compiler
Issue: COMPILE-FILE-HANDLING-OF-TOP-LEVEL-FORMS
References: CLtL pages 66-70, 143
Category: CLARIFICATION
Edit history: V1, 07 Oct 1987 Sandra Loosemore
V2, 15 Oct 1987 Sandra Loosemore
V3, 15 Jan 1988 Sandra Loosemore
V4, 06 May 1988 Sandra Loosemore
V5, 20 May 1988 Sandra Loosemore
V6, 09 Jun 1988 Sandra Loosemore
V7, 16 Dec 1988 Sandra Loosemore
(Comments from Pitman, change DEFCONSTANT, etc.)
V8, 31 Dec 1988 Sandra Loosemore
(CLOS additions, etc.)
Problem Description:
Standard programming practices assume that, when calls to defining
macros such as DEFMACRO and DEFVAR are processed by COMPILE-FILE,
certain side-effects occur that affect how subsequent forms in the
file are compiled. However, these side-effects are not mentioned in
CLtL, except for a passing mention that macro definitions must be
``seen'' by the compiler before it can compile calls to those macros
correctly. In order to write portable programs, users must know
exactly which defining macros have compile-time side-effects and what
those side-effects are.
Inter-file compilation dependencies are distinct from, and not
addressed by, this issue.
Proposal: COMPILE-FILE-HANDLING-OF-TOP-LEVEL-FORMS:CLARIFY
(1) Clarify that defining macros such as DEFMACRO or DEFVAR, appearing
within a file being processed by COMPILE-FILE, normally have
compile-time side effects which affect how subsequent forms in the
same file are compiled. A convenient model for explaining how these
side effects happen is that the defining macro expands into one or
more EVAL-WHEN forms, and that the calls which cause the compile-time
side effects to happen appear in the body of an (EVAL-WHEN (COMPILE)
...) form.
(2) The affected defining macros and their specific side effects are
as follows. In each case, it is identified what users must do to
ensure that their programs are conforming, and what compilers must do
in order to correctly process a conforming program.
DEFTYPE: Users must ensure that the body of a DEFTYPE form is
evaluable at compile time if the type is referenced in subsequent type
declarations. The compiler must ensure that the DEFTYPE'd type
specifier is recognized in subsequent type declarations. If the
expansion of a type specifier is not defined fully at compile time
(perhaps because it expands into an unknown type specifier or a
SATISFIES of a named function that isn't defined in the compile-time
environment), an implementation may ignore any references to this type
in declarations and/or signal a warning.
DEFMACRO, DEFINE-MODIFY-MACRO: The compiler must store macro
definitions at compile time, so that occurrences of the macro later on
in the file can be expanded correctly. Users must ensure that the
body of the macro is evaluable at compile time if it is referenced
within the file being compiled.
DEFUN: DEFUN is not required to perform any compile-time side effects.
In particular, DEFUN does not make the function definition available
at compile time. An implementation may choose to store information
about the function for the purposes of compile-time error-checking
(such as checking the number of arguments on calls), or to enable the
function to be expanded inline.
DEFVAR, DEFPARAMETER: The compiler must recognize that the variables
named by these forms have been proclaimed special. However, it must
not evaluate the initial value form or SETQ the variable at compile
time.
DEFCONSTANT: The compiler must recognize that the symbol names a
constant. An implementation may choose to evaluate the value-form at
compile time, load time, or both. Therefore users must ensure that
the value-form is evaluable at compile time (regardless of whether or
not references to the constant appear in the file) and that it always
evaluates to the same value.
DEFSETF, DEFINE-SETF-METHOD: The compiler must make SETF methods
available so that it may be used to expand calls to SETF later on in
the file. Users must ensure that the body of DEFINE-SETF-METHOD and
the complex form of DEFSETF are evaluable at compile time if the
corresponding place is referred to in a subsequent SETF in the same
file. The compiler must make these SETF methods available to
compile-time calls to GET-SETF-METHOD when its environment argument is
a value received as the &ENVIRONMENT parameter of a macro.
DEFSTRUCT: The compiler must make the structure type name recognized
as a valid type name in subsequent declarations (as for DEFTYPE) and
make the structure slot accessors known to SETF. In addition, the
compiler must save enough information about the structure type so that
further DEFSTRUCT definitions can :INCLUDE a structure type defined
earlier in the file being compiled. The functions which DEFSTRUCT
generates are not defined in the compile time environment, although
the compiler may save enough information about the functions to code
subsequent calls inline. The #S reader syntax may or may not be
available at compile time.
DEFINE-CONDITION: The rules are essentially the same as those for
DEFSTRUCT; the compiler must make the condition type recognizable as a
valid type name, and it must be possible to reference the condition
type as the parent-type of another condition type in a subsequent
DEFINE-CONDITION in the file being compiled.
DEFCLASS: The compiler must make the class name be recognized as a
valid type name in subsequent declarations (as for DEFTYPE) and be
recognized as a valid class name for DEFMETHOD parameter
specializers and for use as the :METACLASS option of a subsequent
DEFCLASS. The compiler must make the class definition available to
be returned by FIND-CLASS when its environment argument is a value
received as the &ENVIRONMENT parameter of a macro.
DEFGENERIC and DEFMETHOD: These are not required to perform any
compile-time side effects. In particular, the methods are not
installed for invocation during compilation. An implementation may
choose to store information about the generic function for the
purposes of compile-time error-checking (such as checking the number
of arguments on calls, or noting that a definition for the function
name has been seen).
DEFINE-METHOD-COMBINATION: The compiler is not required to perform
any compile-time side-effects.
DEFPACKAGE: All of the actions normally performed by this macro at load
time must also be performed at compile time.
(3) The compile-time side effects may cause information about the
definition to be stored differently than if the defining macro had
been processed in the "normal" way (either interpretively or by loading
the compiled file).
In particular, the information stored by the defining macros at
compile time may or may not be available to the interpreter (either
during or after compilation), or during subsequent calls to COMPILE or
COMPILE-FILE. For example, the following code is nonportable because
it assumes that the compiler stores the macro definition of FOO where
it is available to the interpreter:
(defmacro foo (x) `(car ,x))
(eval-when (eval compile load)
(print (foo '(a b c))))
A portable way to do the same thing would be to include the macro
definition inside the EVAL-WHEN:
(eval-when (eval compile load)
(defmacro foo (x) `(car ,x))
(print (foo '(a b c))))
Rationale:
The proposal generally reflects standard programming practices. The
primary purpose of the proposal is to make an explicit statement that
CL supports the behavior that most programmers expect and many
implementations already provide.
The primary point of controversy on this issue has been the treatment
of the initial value form by DEFCONSTANT, where there is considerable
variance between implementations. The effect of the current wording is
to legitimize all of the variants.
Current Practice:
Many (probably most) Common Lisp implementations, including VaxLisp
and Lucid Lisp, are already largely in conformance.
In VaxLisp, macro definitions that occur as a side effect of compiling
a DEFMACRO form are available to the compiler (even on subsequent
calls to COMPILE or COMPILE-FILE), but are not available to the
interpreter (even within the file being compiled).
By default, Kyoto Common Lisp evaluates *all* top level forms as they
are compiled, which is clearly in violation of the behavior specified
on p 69-70 of CLtL. There is a flag to disable the compile-time
evaluation, but then macros such as DEFMACRO, DEFVAR, etc. do not make
their definitions available at compile-time either.
Cost to implementors:
The intent of the proposal is specifically not to require the compiler
to have special knowledge about each of these macros. In
implementations whose compilers do not treat these macros as special
forms, it should be fairly straightforward to use EVAL-WHENs in their
expansions to obtain the desired compile-time side effects.
Cost to users:
Since CLtL does not specify whether and what compile-time side-effects
happen, any user code which relies on them is, strictly speaking,
nonportable. In practice, however, most programmers already expect
most of the behavior described in this proposal and will not find it
to be an incompatible change.
Benefits:
Adoption of the proposal will provide more definite guidelines on how
to write programs that will compile correctly under all CL
implementations.
Discussion:
Reaction to a preliminary version of this proposal on the common-lisp
mailing list was overwhelmingly positive. More than one person
responded with comments to the effect of "but doesn't CLtL already
*say* that somewhere?!?" Others have since expressed a more lukewarm
approval.
It has been suggested that this proposal should also include PROCLAIM.
However, since PROCLAIM is not a macro, its compile-time side effects
cannot be handled using the EVAL-WHEN mechanism. A separate proposal
seems more appropriate.
Item (3) allows for significant deviations between implementations.
While there is some sentiment to the effect that the compiler should
store definitions in a manner identical to that of the interpreter,
other people believe strongly that compiler side-effects should be
completely invisible to the interpreter. The author is of the opinion
that since this is a controversial issue, further attempts to restrict
this behavior should be considered as separate proposals.
It should be noted that user-written code-analysis programs must
generally treat these defining macros as special forms and perform
similar "compile-time" actions in order to correctly process
conforming programs.
∂07-Jan-89 0935 X3J13-mailer Issue CONSTANT-MODIFICATION, version 2
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 7 Jan 89 09:35:06 PST
Received: from defun.utah.edu by cs.utah.edu (5.59/utah-2.1-cs)
id AA19620; Sat, 7 Jan 89 10:33:59 MST
Received: by defun.utah.edu (5.59/utah-2.0-leaf)
id AA08864; Sat, 7 Jan 89 10:33:56 MST
Date: Sat, 7 Jan 89 10:33:56 MST
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8901071733.AA08864@defun.utah.edu>
To: x3j13@sail.stanford.edu
Subject: Issue CONSTANT-MODIFICATION, version 2
Reply-To: cl-compiler@sail.stanford.edu
Forum: Compiler
Issue: CONSTANT-MODIFICATION
References: CLtL p. 78, 87
Issue CONSTANT-COLLAPSING
Category: CLARIFICATION
Edit History: V1, 07 Nov 1988, Sandra Loosemore
V2, 12 Dec 1988, Sandra Loosemore
Problem Description:
CLtL states that an implementation is permitted to "collapse"
constants appearing in code to be compiled if they are EQUAL. This
implicit sharing of compiled data structures may result in
unpredictable behavior if destructive operations are performed.
However, CLtL does not explicitly allow or disallow destructive
operations on constants.
Proposal CONSTANT-MODIFICATION:DISALLOW:
Clarify that it is an error to destructively modify objects which are
self-evaluating forms or which appear inside of a QUOTE special form.
Rationale:
Disallowing modification of constants consistently in all situations,
rather than just in compiled code, is proposed because in some
compiled-only situations it may be difficult to distinguish between
"compiled" and "interpreted" code.
Current Practice:
Many implementations "collapse" compiled constants.
Many implementations treat compiled constants as read-only. In
PSL/PCLS, for example, quoted data structures in compiled code are
copied into a part of memory that is not scanned by the garbage
collector. The TI Explorer's loader also copies constants into a
write-protected memory area.
Cost to implementors:
None.
Cost to users:
User programs which perform destructive operations on constants are
already nonportable.
Benefits:
Many novice programmers do not realize that modifying quoted data
structures is an error in many implementations. Including an explicit
statement in the standard that doing so is a bad idea will reduce
confusion.
Discussion:
The issue of whether implementations are permitted to copy constants
seen by EVAL or COMPILE is discussed separately as issue QUOTE-MAY-COPY.
∂07-Jan-89 0944 X3J13-mailer **DRAFT** Issue COMPILER-DIAGNOSTICS, version 8
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 7 Jan 89 09:44:40 PST
Received: from defun.utah.edu by cs.utah.edu (5.59/utah-2.1-cs)
id AA19722; Sat, 7 Jan 89 10:43:32 MST
Received: by defun.utah.edu (5.59/utah-2.0-leaf)
id AA08867; Sat, 7 Jan 89 10:43:26 MST
Date: Sat, 7 Jan 89 10:43:26 MST
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8901071743.AA08867@defun.utah.edu>
To: x3j13@sail.stanford.edu
Subject: **DRAFT** Issue COMPILER-DIAGNOSTICS, version 8
Reply-To: cl-compiler@sail.stanford.edu
Forum: Compiler
Issue: COMPILER-DIAGNOSTICS
References: CLtL p. 438-439, 62, 69, 160, 161
Condition System, Revision #18
S:>KMP>cl-conditions.text.34
Issue GC-MESSAGES
Issue RETURN-VALUES-UNSPECIFIED
Issue COMPILER-VERBOSITY
Category: CLARIFICATION, ENHANCEMENT
Edit History: V1, 15 Oct 1988, Sandra Loosemore
V2, 19 Oct 1988, Sandra Loosemore (minor fixes)
V3, 25 Oct 1988, Sandra Loosemore (input from Pitman & Gray)
V4, 01 Nov 1988, Sandra Loosemore (fix typos)
V5, 15 Dec 1988, Dan L. Pierson (new condition types)
V6, 15 Dec 1988, Sandra Loosemore (additions, fix wording)
V7, 16 Dec 1988, Dan L. Pierson (minor cleanup)
V8, 07 Jan 1989, Sandra Loosemore (expand discussion)
Status: **DRAFT**
Problem Description:
It is unclear whether various diagnostics issued by the compiler are
supposed to be true errors and warnings, or merely messages.
In some implementations, COMPILE-FILE handles even serious error
situations (such as syntax errors) by printing a message and then
trying to recover and continue compiling the rest of the file, rather
than by signalling an error. While this user interface style is just
as acceptable as invoking the debugger, it means that a normal return
from COMPILE-FILE does not necessarily imply that the file was
successfully compiled.
Many compilers issue warnings about programming style issues (such as
binding a variable that is never used but not declared IGNORE).
Sometimes these messages obscure warnings about more serious problems,
and there should be some way to differentiate between the two. For
example, it should be possible to suppress the style warnings.
Also, neither CLtL nor issue RETURN-VALUES-UNSPECIFIED states what the
return value from COMPILE-FILE should be.
Proposal COMPILER-DIAGNOSTICS:USE-HANDLER:
(1) Add the following to the language:
NOTICE [Type]
The notice type is a subtype of CONDITION, disjoint from
WARNING, SEVERE-CONDITION, and SIMPLE-CONDITION. All types of
notices should inherit from this type.
SIMPLE-NOTICE [Type]
Conditions signalled by NOTICE when given a format string as a
first argument are of this type. This is a subtype of NOTICE,
and in implementations supporting multiple inheritance, this
type will also be a subtype of SIMPLE-CONDITION. The init
keywords :FORMAT-STRING and :FORMAT-ARGUMENTS are supported to
initialize the slots, which can be accessed using
SIMPLE-CONDITION-FORMAT-STRING and SIMPLE-CONDITION-FORMAT-ARGUMENTS.
ALERT [Type]
This is a subtype of NOTICE.
NOTICE datum &rest arguments [Function]
This function signals a condition of type NOTICE. The arguments
are interpreted similarly to those for the function WARN; if the
"datum" is a string, then a condition of type SIMPLE-NOTICE will
be signalled.
While the NOTICE is being signalled, this function establishes
the MUFFLE-NOTICE restart for use by a handler to cause the NOTICE
function to return immediately without further action. If no
handlers for the notice condition are found, or if all such
handlers decline, then the condition will be reported to
*ERROR-OUTPUT*.
The value returned by NOTICE is NIL.
MUFFLE-NOTICE [Function]
This function transfers control to the restart named MUFFLE-NOTICE.
If no such restart exists, MUFFLE-NOTICE signals an error of type
CONTROL-ERROR.
(2) Clarify that ERROR, WARNING, and ALERT conditions may be signalled
within COMPILE or COMPILE-FILE, including arbitrary errors which may
occur due to compile-time processing of (EVAL-WHEN (COMPILE) ...)
forms or macro expansion.
Considering only those conditions signalled -by- the compiler (as
opposed to -within- the compiler),
(a) Conditions of type ERROR may be signalled by the compiler in
situations where the compilation cannot proceed without
intervention.
Examples:
file open errors
syntax errors
(b) Conditions of type WARNING may be signalled by the compiler in
situations where the standard explicitly states that a warning must,
should, or may be signalled; and where the compiler can determine
that a situation that "is an error" would result at runtime.
Examples:
violation of type declarations
SETQ'ing or rebinding a constant defined with DEFCONSTANT
calls to built-in Lisp functions with wrong number of arguments
or malformed keyword argument lists
referencing a variable declared IGNORE
unrecognized declaration specifiers
(c) All other diagnostics issued by the compiler should be conditions
of type ALERT. In particular, this category includes all
diagnostics about matters of programming style. Although
conditions of type ALERT -may- be signalled in these
situations, no implementation is -required- to do so.
However, if an implementation does choose to signal a
condition, that condition will be of type ALERT and will be
signalled by a call to the function NOTICE.
Examples:
redefinition of function with different argument list
unreferenced local variables not declared IGNORE
declaration specifiers described in CLtL but ignored by
the compiler
(3) Require COMPILE-FILE to establish a condition handler. Add a
:HANDLER keyword argument to COMPILE-FILE, which is a user condition
handler function which is to be used during compilation. If the user
handler is not supplied or declines to handle a condition, then the
compiler's default handler will be invoked. Require the compiler
to handle the ABORT restart by aborting the smallest feasible part
of the compilation.
(4) Specify that COMPILE-FILE returns three values. The first value is the
truename of the output file, or NIL if the file could not be created.
The second value is non-NIL if errors were signalled during compilation
that were not handled by the user condition handler (indicating that
the output file is almost certainly unusable). The third value is
non-NIL if warnings were signalled during compilation that were not
handled by the user condition handler (indicating that the output
file may or may not be usable).
(5) Clarify that COMPILE does not establish a condition handler. Instead,
it uses whatever condition handler has been established in the environment
from which it is called.
Rationale:
Point by point,
(1) The new condition types NOTICE and ALERT are structured to allow
this part of the condition hierarchy to be further extended. In
particular, the issue COMPILER-VERBOSITY proposes an additional
subtype of NOTICE named INFO. The description of the NOTICE
function parallels the behavior of WARN.
(2) Conditions such as syntax errors which are errors in the interpreter
remain errors in the compiler. The division of other conditions
into WARNINGs and ALERTs allows potentially serious problems to be
distinguished from mere kibbitzing on the part of the compiler.
(3) It is reasonable for the default handling of compiler errors not to
cause the debugger to be invoked. However, any condition handler
established by COMPILE-FILE would override handlers established by the
user in the surrounding environment.
Requiring the compiler to handle the ABORT restart reflects what
several implementations already do (although probably not using this
mechanism). The intent of the wording is to allow an implementation
to abort the entire file compilation if it is not feasible to abort a
smaller part.
(4) This allows users to determine whether or not COMPILE-FILE is able to
actually compile the file successfully. Returning several values is
is more useful than a single success/failure value because there are
several degrees of failure.
(5) This is to reflect the use of COMPILE-FILE as being more "batch"-oriented
and COMPILE as being more interactive. There is less motivation to have
COMPILE try to recover from errors without user interaction.
Test Case/Example:
An example to illustrate how COMPILE-FILE should set up its condition
handlers is:
(defvar *output-file-truename* nil)
(defvar *errors-detected* nil)
(defvar *warnings-detected* nil)
;;; Call INTERNAL-COMPILE-FILE to do the real work. Note, that function
;;; may set up additional ABORT restarts.
(defun compile-file (input-file &key output-file handler)
(let ((*output-file-truename* nil)
(*errors-detected* nil)
(*warnings-detected* nil))
(with-simple-restart (abort "Abort compilation.")
(handler-bind ((condition #'compile-file-default-handler))
(if handler
(handler-bind ((condition handler))
(internal-compile-file input-file output-file))
(internal-compile-file input-file output-file))))
(values *output-file-truename*
*errors-detected*
*warnings-detected*)))
;;; The default condition handler keeps track of errors and warnings,
;;; and may also perform other implementation-specific actions.
(defun compile-file-default-handler (condition)
(typecase condition
(error
(setq *errors-detected* t)
...)
(warning
(setq *warnings-detected* t)
...)
(alert
...)
))
Current Practice:
No implementation behaves exactly as specified in this proposal.
In VaxLisp, COMPILE-FILE handles most compile-time errors without
invoking the debugger. (It gives up on that top-level form and moves on
to the next one.) Instead of signalling errors or warnings, it simply
prints them out as messages.
In Lucid Common Lisp, COMPILE-FILE invokes the debugger when it encounters
serious problems. COMPILE-FILE returns the pathname for the output file.
Symbolics Genera usually tries to keep compiling when it encounters errors;
so does Symbolics Cloe.
On the TI Explorer, the compiler tries to catch most errors and turn
them into warnings (except for errors on opening a file), but the user
can change special variable COMPILER:WARN-ON-ERRORS to NIL if he wants
to enter the debugger on an error signalled during reading, macro
expansion, or compile-time evaluation. The true name of the output
file is returned as the first value. A second value indicates whether
any errors or warnings were reported.
Cost to implementors:
The cost to implementors is not trivial but not particularly high. This
proposal tries to allow implementations considerable freedom in what
kinds of conditions the compiler must detect and how they are handled,
while still allowing users some reasonably portable ways to deal with
compile-time errors.
Cost to users:
This is a compatible extension. This proposal may cause users to see
some small differences in the user interface to the compiler, but
implementations already vary quite widely in their approaches. Some
users will probably have to make some minor changes to their code.
Adding the new functions and types may cause conflicts with user code
already using those names.
Benefits:
Users are given a way to detect and handle compilation errors, which
would simplify the implementation of portable code-maintenance
utilities. The behavior of the compiler in error situations is made
more uniform across implementations.
Discussion:
The issue of whether the compiler may print normal progress messages
is discussed in detail in a separate issue, COMPILER-VERBOSITY.
The biggest complaint directed against this proposal is that it is much
too complicated.
Kent Pitman suggested an alternate approach:
Specify that COMPILE and COMPILE-FILE return a second value, SUCCESS-P.
Define that compilers are permitted to handle conditions of type ERROR,
turning them into warnings and continuing to compile as appropriate,
but that if an error was turned into a warning so that COMPILE or
COMPILE-FILE could complete its operation, NIL must be returned as the
second value. The normal successful return value would be T.
Loosemore responded:
I'm concerned that besides possibly not being enough to satisfy the
needs of people who are trying to write portable system-building
utilities, this won't do anything to solve the stated problem, namely
how to suppress useless style warning messages.
Some other possible ways of simplifying the proposal include:
- Remove the :HANDLER argument and the requirement that COMPILE-FILE
establish a condition handler and the :HANDLER argument. Continue
to require it to establish an ABORT restart so that user error
handlers established outside the call to COMPILE-FILE can cause
compilation to proceed.
- Put all of the things relating to the NOTICE condition into a
separate proposal, since it's intended to be a more general tool.
- Forget about the NOTICE condition and use STYLE-WARNING (a subtype
of WARNING) instead of ALERT.
Some might wonder why NOTICE is needed instead of just making ALERT a
subtype of WARNING. This is for compatability with other proposed
conditions, notably INFO. While it might be reasonable to say that a
style "warning" is a legitimate WARNING error message, it is really
hard to justify WARNING status for a message like
;;; Starting to compile file foo.
We also contemplated using the name MESSAGE instead of NOTICE, but it
was felt that NOTICE would be less likely to cause conflicts with
existing user code. Another suggestion has been to call the type
NOTIFICATION and the signalling function NOTIFY; some people think
that the name NOTICE might also be too generic.
Pitman says that he would like to require COMPILE-FILE's default
condition handler never to invoke the debugger. I have left that out
of this proposal because it seems like an unnecessary restriction; if
users want to ensure that kind of behavior it is possible to do so by
supplying a user handler. (Of course, the converse is also true.)
Some of the things specified in section 2c as being ALERTS were
described in CLtL as being WARNINGs. There seems to be general
agreement that these things (particularly complaints about unused
variables) are not as serious as other problems described as warnings.
We might consider introducing a COMPILER-CONDITION that can be used in
mixins with the other condition types, so that error handlers can
distinguish between errors signalled by the compiler itself and errors
signalled during macroexpansion or EVAL-WHEN processing. This would
have to wait until the condition system is fully CLOSified.
Possibly NOTICE should write to *STANDARD-OUTPUT*, or even *TRACE-OUTPUT*,
rather than *ERROR-OUTPUT*.
David Gray writes:
This proposal looks good, but there are a couple of little things worrying
me. One is the potentially confusing shift in terminology by which
compiler messages that are conventionally referred to as "warnings", are
now called "alerts", programmer errors are reported as "warnings", and
only what is conventionally called "fatal errors" are reported as "errors".
I don't know what can be done about this, though, since we do want some
down-grading in severity so that the compiler issues a message and continues
for a situation that will signal an error if the compiled code is run.
Probably we just need to be careful how this is documented in order to
minimize confusion.
Another thing is that this doesn't provide a way to suppress style
"warnings" [ALERT conditions] on a local basis. For example, Lisp
Machines have a macro INHIBIT-STYLE-WARNINGS that can be wrapped around a
single form to keep the compiler quiet. I wonder if we might want a
COMPILER-HANDLER-BIND macro for specifying handlers at compile time? This
would be analogous to COMPILER-LET, but it could avoid the problems that
have doomed COMPILER-LET by specifying that the evaluator is free to
ignore it.
∂07-Jan-89 0946 X3J13-mailer **DRAFT** Issue COMPILER-VERBOSITY, version 5
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 7 Jan 89 09:46:19 PST
Received: from defun.utah.edu by cs.utah.edu (5.59/utah-2.1-cs)
id AA19738; Sat, 7 Jan 89 10:45:11 MST
Received: by defun.utah.edu (5.59/utah-2.0-leaf)
id AA08872; Sat, 7 Jan 89 10:45:08 MST
Date: Sat, 7 Jan 89 10:45:08 MST
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8901071745.AA08872@defun.utah.edu>
To: x3j13@sail.stanford.edu
Subject: **DRAFT** Issue COMPILER-VERBOSITY, version 5
Reply-To: cl-compiler@sail.stanford.edu
Forum: Compiler
Issue: COMPILER-VERBOSITY
References: CLtL p. 438-329; 426
issue COMPILER-DIAGNOSTICS
Category: CHANGE/CLARIFICATION/ENHANCEMENT
Edit History: V1, 25 Oct 1988, Sandra Loosemore
V2, 12 Dec 1988, Dan L. Pierson (add USE-CONDITIONS)
V3, 15 Dec 1988, Dan L. Pierson (expand on conditions)
V4, 21 Dec 1988, Dan L. Pierson (reword and clarify)
V5, 06 Jan 1989, Sandra Loosemore (update discussion)
Status: **DRAFT**
Problem Description:
Implementations vary widely in the amount of information that is printed
out by COMPILE-FILE. In some situations, it would be useful to control
how much information is printed.
Proposal COMPILER-VERBOSITY:LIKE-LOAD:
Introduce a special variable, *COMPILE-VERBOSE*, with an implementation-
dependent initial value.
Add :VERBOSE and :PRINT keyword arguments to the function COMPILE-FILE,
analogous to those for the function LOAD.
The :VERBOSE argument (which defaults to the value of *COMPILE-VERBOSE*),
if true, permits COMPILE-FILE to print a message in the form of a comment
to *STANDARD-OUTPUT* indicating what file is being compiled and other
useful information.
The :PRINT argument (which defaults to NIL), if true, causes
information about top-level forms in the file being compiled to be
printed to *STANDARD-OUTPUT*. Exactly what is printed will vary from
implementation to implementation, but nevertheless some information
will be printed.
Rationale:
This proposal makes COMPILE-FILE behave like LOAD. There is already
some precedent for doing this (for example, issue COMPILE-FILE-PACKAGE,
which makes COMPILE-FILE as well as LOAD rebind *PACKAGE*).
Current Practice:
Lucid provides a :MESSAGES keyword argument to COMPILE-FILE, which can
either be a stream to send progress messages to, or NIL to suppress messages.
The default value is T, which sends messages to "the standard terminal
device".
On the TI Explorer, COMPILE-FILE displays the name of the function being
compiled when the option :VERBOSE T is given or special variable
COMPILER:COMPILER-VERBOSE is true. (In other words, they use :VERBOSE
to mean what this proposal says to use :PRINT for.)
Cost to implementors:
This is an incompatible change for some implementations. While the
changes required should be conceptually simple, their implementation
may involve a significant amount of grunt work. At least two
implementations already provide some similar mechanism for suppressing
messages.
Cost to users:
Some (non-portable) user code may break in implementations where this is
an incompatible change.
Specifying that the :PRINT argument defaults to NIL is consistent with
LOAD, but in most implementations the default now is to print out a
lot of information about each function or top-level form. Some users
may find it irritating to have to type in :print t to get the same
amount of information they're used to seeing.
Benefits:
Users are given a portable way to control how much information is printed
by COMPILE-FILE.
Proposal COMPILER-VERBOSITY:USE-CONDITIONS:
Add the new subtype of CONDITION, NOTICE, defined in
COMPILER-DIAGNOSTICS (V5). Add a new subtype of NOTICE, INFO.
Require compilers to "print" all messages covered by this proposal by
using the function NOTICE to signal a condition of type INFO instead
of directly writing the message. For the purposes of this proposal
"compilers" refers to both COMPILE and COMPILE-FILE.
Note that, since a compiler is never required to print any messages
covered by this proposal, no portable program may assume that any
conditions of type INFO will actually be signalled.
Rationale:
This allows informational compiler messages and compiler diagnostics
to be handled in a uniform manner with a simple, well defined way for
the user to gain any desired degree of control over these messages.
Current Practice:
No one currently controls compiler messages via the condition system.
Cost to implementors:
This is an incompatible change for all implementations. It should be
a conceptually simple change to make once an implementation supports
the condition system, however the actual implementation of the change
may involve a significant amount of grunt work.
All existing implementations can continue support their current
message control interfaces as long as the implementation of their
current interface is changed to comply with this proposal. This could
be done by:
1. Causing the old interface to either establish a condition
handler that accepts messages that shouldn't be printed and
does nothing with them. Note that it would not be legal to
make the handler print the messages that should be printed,
because a user handler must still be given a chance to look at
them.
2. Changing the old interface to conditionally write the message
as it used to, except that NOTICE is used to actually write the
message.
Cost to users:
Some user code may break in implementations which remove any
(non-portable) existing mechanisms to control compiler output.
Benefits:
Users are given a portable way to control how much information is printed
by COMPILE-FILE.
Aesthetics:
Using a well defined, already existing, general mechanism is more
aesthetically pleasing than adding another ad-hoc flag or special
variable.
Discussion:
Rather than just treating :PRINT and :VERBOSE as boolean values, it
might be useful to have them convey more information. For example,
Pitman has suggested using keyword values like :BRIEF or :DETAILED to
allow varying amounts of information of each type to be printed.
Alternatively, it might be reasonable to follow Lucid's precedent to
allow the values of :PRINT and :VERBOSE to be streams to allow
messages to be directed somewhere other than *STANDARD-OUTPUT*.
Either of these suggestions could reasonably be made to apply to LOAD
as well, but the intent of LIKE-LOAD is to make COMPILE-FILE
behave like LOAD, not to change the specification of LOAD.
Loosemore questions whether using conditions for this purpose is
appropriate, because this issue deals with messages indicating the
normal progress of the compiler and conditions are supposed to be used
to signal exceptional (non-ordinary) situations.
Pierson believes that conditions provide a well defined, portable,
non-intrusive interface for user control of infrequent events. While
the use of conditions is not notably efficient, compiler informational
messages are sufficiently infrequent that this should not impose a
noticeable performance penalty.
Pierson would like to see LOAD, etc. changed to also use this
interface.
The two proposals are not mutually incompatible in that the LIKE-LOAD
keywords can be added to an implementation whether or not it is based
on USE-CONDITIONS.
∂07-Jan-89 1048 X3J13-mailer issues relating to compiled constants
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 7 Jan 89 10:47:59 PST
Received: from defun.utah.edu by cs.utah.edu (5.59/utah-2.1-cs)
id AA20410; Sat, 7 Jan 89 11:46:53 MST
Received: by defun.utah.edu (5.59/utah-2.0-leaf)
id AA08916; Sat, 7 Jan 89 11:46:51 MST
Date: Sat, 7 Jan 89 11:46:51 MST
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8901071846.AA08916@defun.utah.edu>
To: x3j13@sail.stanford.edu
Subject: issues relating to compiled constants
Reply-To: cl-compiler@sail.stanford.edu
Coming up shortly will be drafts of four issues relating to the
semantics of quoted and self-evaluating constants:
CONSTANT-COMPILABLE-TYPES
What kinds of objects are dumpable by COMPILE-FILE? What
attributes of those objects must the compiler preserve?
CONSTANT-CIRCULAR-COMPILATION
Must the compiler correctly handle circular objects? Must it
preserve sharing of substructures?
CONSTANT-COLLAPSING
Should the compiler be allowed to use a more general equivalence
relationship than EQUAL in coalescing constants?
QUOTE-MAY-COPY
May COMPILE and EVAL, as well as COMPILE-FILE, substitute
equivalent copies of quoted objects?
All of these issues are very closely related, and the outcome of one
issue may affect each of the others. I apologize for not having a
single document that presents a unified view of the semantics of
constants, but since each of these subissues have been controversial
in their own right (some have competing proposals) it seemed better
not to try to lump them all together. I am hoping that distributing
these writeups to a larger audience will result in some feedback that
will allow us to narrow down the range of possibilities.
-Sandra
∂07-Jan-89 1048 X3J13-mailer **DRAFT** issue CONSTANT-COMPILABLE-TYPES
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 7 Jan 89 10:48:44 PST
Received: from defun.utah.edu by cs.utah.edu (5.59/utah-2.1-cs)
id AA20422; Sat, 7 Jan 89 11:47:34 MST
Received: by defun.utah.edu (5.59/utah-2.0-leaf)
id AA08919; Sat, 7 Jan 89 11:47:31 MST
Date: Sat, 7 Jan 89 11:47:31 MST
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8901071847.AA08919@defun.utah.edu>
To: x3j13@sail.stanford.edu
Subject: **DRAFT** issue CONSTANT-COMPILABLE-TYPES
Reply-To: cl-compiler@sail.stanford.edu
Forum: Compiler
Issue: CONSTANT-COMPILABLE-TYPES
References: CLtL pp. 56, 77-80, 324
Issue CONSTANT-MODIFICATION
Issue CONSTANT-CIRCULAR-COMPILATION
Issue CONSTANT-ARRAY-ATTRIBUTES
Issue QUOTE-MAY-COPY
Issue LOAD-OBJECTS
Category: CLARIFICATION, ADDITION
Edit history: 11/07/88, V1 by Cris Perdue
11/14/88, V2 by Cris Perdue
11/22/88, V3 by Cris Perdue
12/20/88, V4 by Cris Perdue
01/06/89, V5 by Sandra Loosemore (minor editorial
clarifications, expand discussion)
Status: **DRAFT**
Problem description:
CLtL does not specify what objects can be in compiled constants and it
does not say what relationship there can or must be between the
constant passed to the compiler and the one that is established by
compiling and then loading its file. Relevant remarks in CLtL
concerning file compilation and the definition of QUOTE suggest that
the compiler handles constants in ways that are not actually possible.
Introduction to the proposal:
The proposal CONSTANT-COMPILABLE-TYPES:SPECIFY attempts to spell out
what types can appear in compiled constants, and what it means when
they appear. Unless stated otherwise, in this proposal where the term
"constant" is used, it means a quoted or self-evaluating constant, not
a named (defconstant) constant.
The key is a definition of a form of equivalence between Lisp objects,
"similarity as constants". Code passed through the file compiler must
behave as though quoted constants in it are equivalent to quoted
constants in the corresponding interpreted "source" code. This
proposal only concerns quoted constants to be processed by
COMPILE-FILE.
For the benefit of users, this proposal tries to define a fairly large
set of types that all Common Lisp implementations are to handle. It
also attempts to leave room for implementations to differ. Some
implementations have made opposing choices because the language
doesn't specify one over the other. Some implementations already
handle constants that this proposal defines as not legal in Common
Lisp programs, and that is useful to users of those systems.
Different implementors have different amounts of resources to apply to
their system, and implementations differ in their whole approach in
some cases.
We try to set up a framework where some controversies can be defined
clearly and resolved as separate issues.
One of these is the question of when, if ever, to permit "coalescing"
of constants. Some implementations already take advantage of the
license given on page 78 of CLtL to gain some efficiencies. This
proposal provides definitions that make it possible to broaden the
conditions where coalescing is permitted (see related issue
CONSTANT-COLLAPSING).
Another question is whether "circular" constants are compilable (issue
CONSTANT-CIRCULAR-COMPILATION). Most implementations are capable of
supporting circular constants. Still, this proposal avoids requiring
all implementations to handle circular constants. Implementations
that do not handle circular constants presumably also do not make sure
that shared structure remains shared, sort of the opposite of
coalescing. This proposal avoids requiring shared structure to remain
shared across compilation.
Some implementations "lose information" about some constants during
compilation. We try to limit this proposal enough to reduce the
number of unhappy implementors to a bare minimum.
In this version, the question of immutability of some attributes of
objects in compiled constants is not addressed. Cris has taken that
material out of this proposal and is constructing a new proposal
covering just that issue. This proposal does define the concept of
"basic attributes" of various types of objects, and the other proposal
will refer to it, stating that most basic attributes of most types of
objects may be treated as immutable when the object appears in a
compiled constant.
Proposal: CONSTANT-COMPILABLE-TYPES:SPECIFY
An object may be used as a quoted constant processed by COMPILE-FILE
if the compiler can guarantee that the resulting constant established
by loading the compiled file is "similar as a constant" to the
original, plus a few other restrictions.
A few types, such as streams, are not supported in constants. In
other words, an object containing one of these is not considered
similar as a constant to any other object. We say that it is an error
for these objects to appear in a (compiled) constant. Still some
implementations may support them and define how they are treated.
Some types of objects are treated as aggregate objects. For these
types, being similar as constants is defined recursively. We say that
an object of these types has certain attributes, and to be similar as
a constant to another object, the values of the corresponding
attributes of the two objects must also be similar as constants.
This kind of definition has problems with circular or "infinitely
recursive" objects such as a list that is an element of itself. We
consider the idea of depth-limited comparison, and say that two
objects are similar as constants if they are similar at all finite
levels. This idea is implicit in the definitions below, and applies
in all the places where attributes of two objects are required to be
similar as constants.
The rest of this proposal consists of a definition of the notion of
two objects being "similar as constants", organized by type, with some
notes about the additional constraints that the compiler must meet:
Number, Character
If either of two objects is a number or character, the two objects
are similar as constants if and only if they are EQL.
(Note that for cross-compilers it is not always possible to satisfy
this requirement for floating point numbers and complex numbers with
floating point parts. If it is necessary to choose two different
floating point values due to cross-compilation, each value chosen must
be one of the two adjacent, exactly representable numbers such that
the interval between them contains the other number. Other numbers
and characters are represented exactly, so they can be compared if
they are representable on both architecture, an issue for some
characters.)
Random-state
Only the operations PRINT, MAKE-RANDOM, and RANDOM apply to
random-states. Let us say that two random-states are functionally
equivalent if applying RANDOM to them repeatedly always produces the
same pseudo-random numbers in the same order.
Two random-states are similar as constants exactly if copies of them
made via MAKE-RANDOM-STATE are functionally equivalent.
Symbol
A symbol can only be similar to a symbol. References to symbols are
permitted in any constant. References to interned symbols are "by
name". If the symbol is interned, its name and the name of its home
package identify it.
A symbol with a home package is similar as a constant to a symbol when
the names of the symbols and the names of the home packages of the
symbols are similar as constants. (Both symbols must have home
packages.) Within a Common Lisp "address space", this implies that
the symbols are EQ.
If a symbol is not interned, i.e. its home package is NIL, it is
treated in a rather special way. To be similar as a constant to
another symbol, both symbols must be uninterned and have the same
name.
Constants that contain uninterned symbols have to satisfy an extra
constraint. The compiler must arrange that, within a file being
compiled with COMPILE-FILE, references to uninterned symbols that
are EQ in the source code must remain EQ in the compiled code.
Likewise, uninterned symbols that are not EQ must remain non-EQ after
compilation.
Package
A package can only be similar as a constant to a package. References
to packages are permitted in any constant. References to packages are
"by name": two packages are similar as constants when their names are
similar as constants. Within a Lisp "address space", packages with
the same name are EQ.
At load time, the package becomes the same as returned by
FIND-PACKAGE, given the package name. An error is signalled if no
package of that name exists at load time.
OTHER TYPES
-----------
For each of the types listed below, if either object is of the given
type, the two objects are similar as constants exactly if the other is
of that type and the values of all of the specified attributes are
similar as constants.
The attributes listed here can be called the "Basic Attributes" of
objects of each of these types.
Cons CAR, CDR.
Array For 1-dimensional arrays:
LENGTH and ELT for all legal indices.
For arrays of other dimensions:
ARRAY-DIMENSIONS, ARRAY-ELEMENT-TYPE, AREF for all legal
indices.
Note that array constants in a compiled file may lack
displacement, fill pointers, or adjustability, where the
constants in the source had them, but the compiler may
not produce constant arrays that have these features from
ones that do not. The point is to make sure that
declarations are not violated as a result of compilation.
Structure Slot values, name of structure type (a symbol reference).
Hash-table Keys and values. The table's test is of course unchanged
also. It is an error to compile a constant containing a
a hash table that has keys that are similar as
constants.
Readtable Character syntax type for each character in the table;
function for each readmacro character, mappings for
dispatch macros; whether terminating or nonterminating
for each readmacro.
Pathname Each pathname component
Stream, Compiled-Function
It is an error for a stream or compiled-function
to appear in a compiled constant, but the
language may be extended in the future to support certain
cases.
Function Function constants that are not compiled-functions and do
not close over any (lexical) variables are permitted in
compiled constants. Two functions are similar as
constants when they are operationally equivalent. Use of
global function bindings, global macro bindings, and
special variables must be considered external
dependencies for this purpose, and constants appearing in
the functions need only be similar as constants (at level
n-1?).
Generic-function, Method
Help is needed from the CLOS committee to determine what
to do here. (Presumably they would be treated in the same
way as ordinary functions?)
Standard-object
Help is needed from the CLOS committee to determine what
to do here. (There is a cl-cleanup issue, LOAD-OBJECTS,
pending which proposes a mechanism for dealing with
objects.)
Rationale:
This proposal appears to reflect user demand and appears not to exceed
the capabilities of most implementations of the language.
Current practice:
This is believed to be very close to compatible with the Franz, Lucid,
Coral, and Texas Instruments implementations. It is probably
compatible or nearly compatible with other "Lisp Machine"
implementations.
Adoption cost:
Not known. Probably moderate or low -- for most implementations. The
cost would be to implementors rather than users since this part of the
language is currently underspecified. The author believes the cost
will be reasonable for KCL, an implementation where there is some
concern about this issue.
Benefits:
Users would be able to use aggregate objects in constants with
confidence about the behavior of their code.
Conversion cost:
Where this proposal *requires* different behavior than an existing
implementation, there is a conversion cost for users of that
implementation. It appears that this cost will be small, less than
the cost of leaving things unspecified.
Esthetics:
Since there is no adequate definition at present, a fuller definition
would be more esthetic.
Discussion:
This proposal does leave some user-visible attributes of objects
unspecified across the compile-and-load process, except that they must
be consistent with the attributes that must be retained. This
situation is a compromise between the desire for full specification on
the one hand, and on the other hand the desire to leave freedom for
different implementations to remain different and to support some
optimizations such as compacting hash tables and "simplifying" arrays.
Proposals will be entertained for tighter specification of datatypes
such as arrays.
The full extension of the concept of coalescing of constants is to say
that they can be coalesced exactly when they are similar as constants.
Comparing functions is hard. One could define an operation that
converts an interpreted function into a lambda expression. One could
say that interpreted functions are similar as constants when their
associated lambda expressions are similar in the appropriate sense.
This similarity of lambda expressions would be syntactic, but would
have to allow for possible inline macro expansion. Other
transformations would have to be prohibited, or the functions would
have to report themselves as compiled.
This proposal seems to deal with the question of how to test whether
constants in different Lisp address spaces are similar as constants.
That appears to be important.
We need someone expert with floating-point computation to review the
discussion of similarity of floating point numbers as constants.
The definition of similarity for random-states supports the
possibility of random states that are immutable because of being in
compiled constants.
Interest has been expressed by a number of people including users, in
support for user-definable "dumping" of CLOS objects and structure
instances. The cleanup issue LOAD-OBJECTS deals with this.
This subsumes the issue CONSTANT-ARRAY-ATTRIBUTES.
Most of the recent discussion on this proposal has centered around the
handling of functions and readtables, and on aspects relating to CLOS.
Sandra Loosemore notes:
Dumping a constant readtable is not likely to be particularly useful
in an implementation that cannot dump compiled function constants.
(In particular, readtables derived from the standard Common Lisp
readtable are likely to "contain" mostly compiled functions.) I'm
also not convinced that requiring non-compiled, non-closed function
constants buys anything for the user, since an implementation is
always free to make all functions compiled. It seems like it would be
simpler just not to require any function constants to be dumpable.
Jeff Dalton responds:
Although I didn't say anything about it before, I was always bothered
by the idea that functions would be dumped in readtables. Since it's
pretty clear that not all implementations can dump all functions, users
can't rely on it at all; and then the whole idea of dumping a readtable
begins to seem suspect.
JonL White notes:
The analogy between FIND-PACKAGE and FIND-CLASS suggests that class
objects are in the same "database" category as packages. Shouldn't
they be referenced "by name" in compiled file?
Moon responds:
In Flavors we generate metaobjects at compile time, but we never put
them (to speak loosely) into the compiled-code file; instead macros
like DEFFLAVOR and DEFMETHOD expand into Lisp code that obtains new
metaobjects at load time, based on the class name and generic function
name. I don't see how any other way could work, actually, since two
distinct compiled files that refer to a class by the same name must
end up referring to the same metaobject after loading. In Flavors we
don't have anonymous classes nor anonymous generic functions, so we
don't have to solve those issues.
[Issue LOAD-OBJECTS proposes] that the way to load an instance of a
standard-class from a compiled file is for a method of the instance
to return a form which is then evaluated at load time. The semantics
of loading an instance of a standard-class from a compiled file can be
entirely understood in terms of MAKE-INSTANCE or whatever other
function is called by the form returned by MAKE-LOAD-FORM; no new
concepts need be introduced. If the programmer of a given class wants
to use the class redefinition protocol, that class's MAKE-LOAD-FORM
method can output something that uses that protocol, and if he
doesn't, it can output something that doesn't.
∂07-Jan-89 1049 X3J13-mailer **DRAFT** issue CONSTANT-CIRCULAR-COMPILATION
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 7 Jan 89 10:49:17 PST
Received: from defun.utah.edu by cs.utah.edu (5.59/utah-2.1-cs)
id AA20434; Sat, 7 Jan 89 11:48:08 MST
Received: by defun.utah.edu (5.59/utah-2.0-leaf)
id AA08922; Sat, 7 Jan 89 11:48:05 MST
Date: Sat, 7 Jan 89 11:48:05 MST
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8901071848.AA08922@defun.utah.edu>
To: x3j13@sail.stanford.edu
Subject: **DRAFT** issue CONSTANT-CIRCULAR-COMPILATION
Reply-To: cl-compiler@sail.stanford.edu
Forum: Compiler
Issue: CONSTANT-CIRCULAR-COMPILATION
References: Issue CONSTANT-COLLAPSING
Issue QUOTE-MAY-COPY
Category: CLARIFICATION, ADDITION
Edit History: V1, 07 Nov 1988, Sandra Loosemore
V2, 14 Nov 1988, Cris Perdue
V3, 12 Dec 1988, Sandra Loosemore (merge versions 1 and 2)
V4, 03 Jan 1989, Sandra Loosemore (add PRESERVE-SHARING-ONLY)
V5, 06 Jan 1989, Sandra Loosemore (minor wording changes)
Status: **DRAFT**
Problem Description:
CLtL does not specify whether constants containing circular or
recursive references may be compiled. It is also not clear whether
the compiler must preserve sharing of EQ substructures; that is, whether
subobjects that are EQ in the source code must remain EQ after being
compiled.
The proposals below apply to COMPILE-FILE, since it must inherently
copy structures. If issue QUOTE-MAY-COPY is resolved in favor of
allowing COMPILE and possibly EVAL to copy structures, the same
constraints would also apply in those situations. [We would also have
to decide upon the scope over which sharing must be detected in such
situations; the minimal scope would be over a single call to EVAL or
COMPILE.]
In the proposals that follow, "preserving EQness" means that
subobjects that are EQ in the source code must remain EQ after being
compiled; that is, things don't get "less EQ" after compilation.
(Note that coalescing of constants implies that things may get "more
EQ".)
Proposal CONSTANT-CIRCULAR-COMPILATION:NO
State that it is an error for an object containing a circular reference to
appear as a constant to be compiled. State that the compiler is not
required to preserve EQness of substructures.
Rationale:
This proposal would not require any existing implementation to change.
Disallowing portable programs from containing circular constants
allows compiled file loaders to use somewhat simpler implementation
strategies (for example, to build constants in a strict bottom-up
fashion).
Proposal CONSTANT-CIRCULAR-COMPILATION:PRESERVE-SHARING-ONLY
State that it is an error for an object containing a circular
reference to appear as a constant to be compiled. State that the
compiler is required to preserve EQness of substructures within a file
compiled with COMPILE-FILE.
Rationale:
Disallowing portable programs from containing circular constants
allows compiled file loaders to use somewhat simpler implementation
strategies (for example, to build constants in a strict bottom-up
fashion).
Some programs (such as PCL) have come to depend on COMPILE-FILE
preserving the EQness of uninterned symbols, and it is cleaner
to require sharing to be preserved in general instead of making
symbols be a special case. Requiring sharing to be preserved still
allows loaders to build constants bottom-up.
Proposal: CONSTANT-CIRCULAR-COMPILATION:FLAG
Add to the definition of Common Lisp a special variable:
*DUMP-CIRCLE* [Special variable]
State that if the (compile-time) value of *DUMP-CIRCLE* is NIL, it is
an error for an object containing a circular reference to appear as a
constant to be compiled. State that the compiler is required to
preserve EQness of substructures within a file compiled with
COMPILE-FILE when *DUMP-CIRCLE* is non-NIL. (Note that this differs
from *PRINT-CIRCLE*, which is not required to detect sharing.)
The initial value of *DUMP-CIRCLE* is implementation-dependent.
Rationale:
As with *PRINT-CIRCLE* for printing, writing representations of
objects to a stream is much faster if the implementation does not
attempt to support circular, self-recursive, mutually-referential,
etc. substructure.
Current Practice:
A-Lisp preserves EQness of substructures (since it makes an effort to
collapse isomorphic structures) but signals an error if an attempt is
made to compile a circular constant. PSL and Utah Common Lisp both
get stuck in an infinite loop if an attempt is made to compile a
reentrant structure. The TI Explorer compiler is able to reproduce
recursive lists and arrays, but currently hangs in a loop on a
circular list. Lucid and Symbolics can handle circular constants
correctly. Franz uses a flag to control whether or not to attempt to
detect circular constants.
Cost to implementors:
We know of no implementation that would have to change under proposal
NO. For proposal FLAG, some implementations would require sweeping
changes; in some cases a completely different dumper/loader strategy
would have to be implemented. The cost of proposal
PRESERVE-SHARING-ONLY would fall somewhere in between.
Cost to users:
The situation now is that programs which depend upon circularity or
sharing of substructure being preserved by the compiler are already
nonportable. Proposal NO simply formalizes the status quo. Proposal
FLAG would offer users functionality that is currently not portable.
Benefits:
An area of ambiguity in the language is removed.
Discussion:
JonL has argued against proposal CONSTANT-CIRCULAR-COMPILATION:NO, saying
I don't see any performance justification; and even if there were, I'd
look at it with a very jaundiced eye, favoring interpreter/compiler
consistency over nickle-and-dime issues of compiler speed.
Loosemore thinks PRESERVE-SHARING-ONLY is the "right" solution, but
would also support CONSTANT-CIRCULAR-COMPILATION:NO because it is the
most consistent with current practice -- no implementations would be
required to change and no currently portable programs would be
invalidated. While one could make an argument for this proposal on
the basis of improving compiler speed, the compatibility issue is seen
as far more important.
There was also quite a bit of discussion about how this proposal
relates to the requirement in CLtL (p. 69) about preserving the
EQLness of references to symbolic constants.
∂07-Jan-89 1050 X3J13-mailer **DRAFT** issue CONSTANT-COLLAPSING
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 7 Jan 89 10:50:03 PST
Received: from defun.utah.edu by cs.utah.edu (5.59/utah-2.1-cs)
id AA20460; Sat, 7 Jan 89 11:48:54 MST
Received: by defun.utah.edu (5.59/utah-2.0-leaf)
id AA08925; Sat, 7 Jan 89 11:48:52 MST
Date: Sat, 7 Jan 89 11:48:52 MST
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8901071848.AA08925@defun.utah.edu>
To: x3j13@sail.stanford.edu
Subject: **DRAFT** issue CONSTANT-COLLAPSING
Reply-To: cl-compiler@sail.stanford.edu
Forum: Compiler
Issue: CONSTANT-COLLAPSING
References: CLtL p. 78, 87
Issue CONSTANT-MODIFICATION
Issue CONSTANT-COMPILABLE-TYPES
Issue EQUAL-STRUCTURE
Issue QUOTE-MAY-COPY
Category: CHANGE
Edit History: V1, 07 Nov 1988, Sandra Loosemore
V2, 12 Dec 1988, Sandra Loosemore
V3, 03 Jan 1989, Sandra Loosemore
V4, 06 Jan 1989, Sandra Loosemore
Status: **DRAFT**
Problem Description:
CLtL states that an implementation is permitted to "collapse" or
coalesce constants appearing in code to be compiled if they are EQUAL.
The definition of EQUAL does not permit coalescing of more general
isomorphic data structures (such as arrays and structures), which is
often desirable.
Issue QUOTE-MAY-COPY deals with whether coalescing may be performed
only by COMPILE-FILE, or by COMPILE and EVAL as well. CLtL says: "An
object is considered to be a constant in code to be compiled if it is
a self-evaluating form or contained in a QUOTE form".
Proposal CONSTANT-COLLAPSING:GENERALIZE:
State the an implementation is permitted to "collapse" constants
appearing in code to be compiled if they are equivalent under the
relationship specified in issue CONSTANT-COMPILABLE-TYPES.
Rationale:
There is little reason why implementations should not be allowed to
perform more general collapsing of structures, since the arguments
against doing so also apply to collapsing of EQUAL structures, which
is already permitted.
Current Practice:
Both PSL/PCLS and A-Lisp collapse isomorphic arrays and structures,
and certain other data types that are defined internally as structures
(RANDOM-STATEs, for example). Lucid Common Lisp also uses a more
general coalescing predicate than EQUAL.
Cost to implementors:
None. This extends the range of permitted behavior for
implementations but does not require any implementation to change.
Cost to users:
It is hard to imagine a program that would break under this proposal.
Benefits:
Collapsing of isomorphic arrays and structures may lead to significant
memory savings in some applications.
Discussion:
This proposal depends heavily on issue CONSTANT-COMPILABLE-TYPES.
Some people believe that if the definition of EQUAL weren't "broken",
there wouldn't be any need for this proposal.
There is no inherent reason why the "coalescing predicate" must be the
same as the relationship used by the compiler/loader to construct
equivalent copies of objects of constants, but making the same rules
be applied in both situations simplifies the language somewhat.
∂07-Jan-89 1050 X3J13-mailer **DRAFT** issue QUOTE-MAY-COPY
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 7 Jan 89 10:50:37 PST
Received: from defun.utah.edu by cs.utah.edu (5.59/utah-2.1-cs)
id AA20465; Sat, 7 Jan 89 11:49:27 MST
Received: by defun.utah.edu (5.59/utah-2.0-leaf)
id AA08928; Sat, 7 Jan 89 11:49:24 MST
Date: Sat, 7 Jan 89 11:49:24 MST
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8901071849.AA08928@defun.utah.edu>
To: x3j13@sail.stanford.edu
Subject: **DRAFT** issue QUOTE-MAY-COPY
Reply-To: cl-compiler@sail.stanford.edu
Forum: Compiler
Issue: QUOTE-MAY-COPY
References: CLtL p. 55, 78, 86, 143
Issue CONSTANT-COLLAPSING
Issue CONSTANT-COMPILABLE-TYPES
Issue CONSTANT-MODIFICATION
Category: CHANGE/CLARIFICATION
Edit History: V1, 5 Dec 1988, Sandra Loosemore
V2, 10 Dec 1988, Sandra Loosemore
(comments from Dalton, JonL)
V3, 3 Jan 1989, Sandra Loosemore
(comments from Pitman et al)
V4, 7 Jan 1989, Sandra Loosemore
(update discussion)
Status: **DRAFT**
Problem Description:
May QUOTE return a copy of its argument? In particular, is it
permissible for COMPILE to copy quoted constants to read-only
memory, or to coalesce equivalent constants?
In spite of the name of this issue, the question is not whether QUOTE
itself may copy objects, but whether the semantics of "quoted objects"
is such that it is permissible for the compiler or interpreter to
substitute a copy of the original object.
Background:
CLtL p. 86 states that (QUOTE <x>) simply returns <x>. On
p. 55 it is mentioned that the only self-evaluating forms that may
be copied are numbers or characters. It is also stated that an
implementation is permitted to collapse (or coalesce) EQUAL constants
appearing in code to be compiled.
Because of its nature as a file processor, COMPILE-FILE generally must
cause copies of constants to be constructed when the compiled code is
loaded. In a number of existing Lisp implementations, COMPILE also
causes constant objects to be copied and/or coalesced. Since it is
permissible for an implementation to implicitly compile even
"interpreted" code (p. 143), the semantics of constants seen by EVAL
may also be affected if the in-memory compiler (as well as the file
compiler) is allowed to copy or coalesce constants.
The arguments for allowing constants to be copied can be summarized
briefly as follows. Copying constants to read-only memory can result
in less work for garbage collectors. If there is hardware support for
write-protection of memory, this may also be used to cause an error to
be signalled if an attempt is made to modify the constant. Coalescing
equivalent constants can lead to significant memory savings in some
applications (although this savings is likely to be less for individual
functions compiled with COMPILE than entire programs compiled with
COMPILE-FILE).
The primary argument against allowing constants to be copied or
coalesced is that doing so causes information to be lost, and in the
case of COMPILE and EVAL, there is no inherent reason why this
information must be discarded. Some people also feel that allowing
QUOTE not to return a value that is EQ (or even EQL) to its argument
would be a substantial, incompatible change from its "traditional"
semantics.
Proposal QUOTE-MAY-COPY:ALWAYS:
Change the description of QUOTE to indicate that (QUOTE <x>) returns
an object equivalent to <x>, which may or may not be EQ to <x>.
Likewise, a self-evaluating form may also return an equivalent copy
of the object.
The equivalence relationship is defined in the writeup for issue
CONSTANT-COMPILABLE-TYPES, and only those objects for which this
relationship is defined may appear as quoted or self-evaluating
constants. The restrictions placed on compiled constants in
issue CONSTANT-CIRCULAR-COMPILATION apply to constants in code
processed by EVAL and COMPILE, as well as COMPILE-FILE. EVAL and
COMPILE may also coalesce constants, as described in issue
CONSTANT-COLLAPSING.
If an implementation chooses to copy constants, the copying may only
happen once each time the form containing the constant is processed
with COMPILE or EVAL (see examples below).
Rationale:
This proposal would make the treatment of constants uniform across
COMPILE-FILE, COMPILE, and EVAL.
Proposal QUOTE-MAY-COPY:NOT-EVAL-OR-COMPILE:
Clarify that self-evaluating forms and quoted constants always
evaluate to objects that are EQL to the original, except in the case
of code compiled with COMPILE-FILE (where an equivalent but possibly
non-EQL object is returned). The restrictions on compiling constants
in issues CONSTANT-COMPILABLE-TYPES and CONSTANT-CIRCULAR-COMPILATION
apply only to COMPILE-FILE. Only COMPILE-FILE may coalesce constants
(issue CONSTANT-COLLAPSING).
Rationale:
This proposal is the most consistent with the semantics described in
CLtL. It would make the treatment of constants uniform across
COMPILE and EVAL.
Proposal QUOTE-MAY-COPY:NOT-EVAL:
Clarify that quoted or self-evaluating constants appearing in code
processed by EVAL must return an object that is EQL to the original.
In functions that have been compiled with COMPILE or code that has
been compiled with COMPILE-FILE, an equivalent (but possibly
non-EQL) copy of the object may be returned instead.
The equivalence relationship is defined in the writeup for issue
CONSTANT-COMPILABLE-TYPES, and only those objects for which this
relationship is defined may appear as quoted or self-evaluating
constants in code to be compiled. The restrictions on constants
described in issue CONSTANT-CIRCULAR-COMPILATION apply to both
COMPILE-FILE and COMPILE, and both may coalesce constants as
described in issue CONSTANT-COLLAPSING. There are no restrictions
on what kinds of objects may appear in code processed with EVAL, and
EVAL may not coalesce equivalent constants.
If an implementation chooses to copy constants, the copying may only
happen once each time the form containing the constant is processed
with COMPILE (see examples below).
Rationale:
This proposal is the most consistent with current practice.
Test Cases/Examples:
#1: (Behavior of COMPILE)
Suppose the function FOO is defined:
(defun foo () '(a b c))
Under all three proposals, multiple calls to FOO must always return
EQ values, regardless of whether FOO is interpreted or compiled:
(eq (foo) (foo)) ==> true
Proposals ALWAYS and NOT-EVAL allow FOO to return a "different" EQ
value after it is compiled:
(setq old-foo (foo))
(compile 'foo)
(eq old-foo (foo)) ==> ??? under ALWAYS or NOT-EVAL
true under NOT-EVAL-OR-COMPILE
#2: (Behavior of EVAL)
(let ((x '(a b c)))
(eq x
(eval (list 'quote x))))
Under proposal ALWAYS, this may or may not return true. Proposals
NOT-EVAL-OR-COMPILE and NOT-EVAL guarantee this to return true.
(let ((x '(a b c)))
(eq (eval (list 'quote x))
(eval (list 'quote x))))
Under proposal ALWAYS, this may or may not return true (each call to
EVAL may construct its own copy of X). Proposals NOT-EVAL-OR-COMPILE
and NOT-EVAL guarantee this to return true.
Current Practice:
Implementations in which COMPILE copies constants include PSL/PCLS and
Kyoto Common Lisp. In Lucid Common Lisp, constants are not normally
copied by COMPILE, but since COMPILE does coalesce constants, it may
cause QUOTE to return an object which is not EQL to its original
argument.
There do not appear to be any implementations in which constants are
copied by EVAL.
Cost to implementors:
Proposal QUOTE-MAY-COPY:NOT-EVAL-OR-COMPILE would cause significant
problems for some implementations. For example, PSL/PCLS would
require major changes to its memory management scheme and garbage
collector as well as the compiler to bring it into compliance.
Proposal QUOTE-MAY-COPY:NOT-EVAL could potentially cause problems for
compiled-only implementations in which the in-memory compiler normally
coalesces or makes copies of constants. There does not appear to be
any existing implementation that would be affected.
Note that neither QUOTE-MAY-COPY:ALWAYS or QUOTE-MAY-COPY:NOT-EVAL
-require- constants to be copied or coalesced; neither proposal would
require changes to those implementations that currently don't touch
constants.
Cost to users:
Proposals QUOTE-MAY-COPY:ALWAYS and QUOTE-MAY-COPY:NOT-EVAL would have
the result of explicitly stating that programs which depend on COMPILE
preserving EQLness of constants are nonportable. (This is the de
facto situation now.) Such programs could continue to work in those
implementations in which COMPILE does not copy or coalesce constants.
The impact of allowing constants to be copied in interpreted code
(proposal QUOTE-MAY-COPY:ALWAYS) is unknown. It could be argued that
any code that depends on constants not being copied or coalesced is
broken, since it would not work when compiled in some implementations.
Benefits:
The semantics of QUOTE are clarified.
Discussion:
There has been some confusion about the names of the proposals. It's
been suggested that all of the proposals should be rewritten and
renamed to make it more clear that the issue is whether COMPILE or
EVAL may make copies of constants. Note that proposal
QUOTE-MAY-COPY:ALWAYS implies that copying is always *permitted*, but
is not required under any circumstances.
This issue has caused a very lengthy debate on the cl-compiler mailing
list, with no consensus arising yet. Following are comments
summarizing various people's positions.
Kent Pitman originally supported NOT-EVAL-OR-COMPILE, but now says:
I asked Moon about his feelings on this. He thinks pretty strongly that
the ALWAYS option is the only practical one to pursue. Partly, he says,
because it's maximally compatible with current practice and partly
because it avoids making COMPILE-FILE seem different.
In principle, I favor option ALWAYS, permitting copying of quoted
structure to a constants area in any of EVAL, COMPILE, or COMPILE-FILE
situations, as appropriate to the implementation.
It should not be concluded from this that I favor restrictions on the
kinds of data which may be quoted, however. The wording of option ALWAYS
should be ammended to say that such copying is permitted only when the
system can reliably deduce whether such copying is `appropriate,'
and avoid it in cases where it is not. The purpose of such wording would
be to avoid placing restrictions on what kinds of structures a user can
or cannot quote.
So, for example, if an implementor cannot in some context figure out how
to detect circularities in quoted structure in order to either decline
copying or correctly copy the circular form, then the implementation is
not permitted to attempt copying in such contexts.
Note however that because of special considerations forced by the external
representation of data in compiled files, I go along with (and encourage)
the establishment of a known subset of types which can be quoted (or used
as self-evaluating constants) in code to be reliably processed by the file
compiler. Coincidentally, such restrictions might make it easier for an
implementation to know whether copying was going to succeed in the case of
loading compiled code from a file, but technically these restrictions are
not motivated by any consideration of what kinds of structures might or
might not be possible to QUOTE.
My inclination is also to believe that copying should not be done
repeatedly, and we should find a way to express this. That is, repeated
execution of code in the same execution environment should return an EQL
result (or some such). This is important to guaranteeing efficiency. Even
in copying implementations, it is not necessary that such constants be
allocated in a read-only area or some such to achieve this effect. For
example, quoted structure could be placed in a special array and QUOTE
could be implemented using AREF. What is important is that any of these
permissions we give for copying not be taken for a license that QUOTE
should be implemented by COPY-TREE or some other operation which cannot
be done in constant time.
Dan Pierson says:
I also support QUOTE-MAY-COPY:NOT-EVAL-OR-COMPILE. In the absence of
overwhelming opposing reasons, we should not diminish traditional Lisp
functionality. While NOT-EVAL may be more in line with current
practice of a couple of implementations, the argument that these
implementations are already broken is at least as strong as the
argument that we shouldn't break them by pointing out that they don't
conform to the language standard.
However, my position on this is not unalterable.
Sandra Loosemore says:
I oppose NOT-EVAL-OR-COMPILE on the grounds that it differs from current
practice and would involve a substantial conversion cost for some
implementations; either of the other two alternatives would be acceptable
instead since they involve essentially no conversion cost for either
implementors or users. I am not convinced that the modifications to
proposal ALWAYS suggested by Pitman wouldn't cause just as much work
for some implementations as forbidding copying entirely. If the
modifications applied only to the behavior of EVAL and not COMPILE, that
would be OK.
Many people have referred to "tradition" in their arguments on this
issue. Different implementations have different traditions, and what
seems "broken" to one person may seem perfectly natural to another
person who comes from a different background.
JonL White says:
I favor giving as much leeway as possible to
the implementors for making memory-management optimizations. While one
implementor may choose not to do any such work, and another may even go
out of his way to assure EQLness over an unlikely set of circumstances,
this should not constrain the third from doing the "classic" thing. In
short, I don't see the value of adding constraints that
(1) invalidate much existing practice, and
(2) appear to be purely of theortical value.
Making "compiled code" (read: compile-file) work as closely as possible to
interpreted code is _not_ "purely of theortical value."
QUOTE-MAY-COPY:ALWAYS is the only proposal that both recognizes the
prevalent practice and pays (at least) lip service to the question of
compiled/interpreted consistency.
Cris Perdue says:
I am opposed to all of the proposals offered in their current
form.
CLtL takes a simple, useful approach to this problem. The idea
that QUOTE cannot reasonably operate as defined in CLtL is incorrect,
though it appears desirable to explain somewhere the "copying"
effects that compile-file may have on constants.
To say that QUOTE copies in existing implementations is to
imply that a lot of copying might happen that never actually
happens. COMPILE-FILE followed by LOAD effectively copies,
and in KCL, COMPILE effectively makes a copy, but not QUOTE.
I object strongly to suggestions that QUOTE copies in existing
practice, at least existing practice as I know it. Among other things,
this skews the entire discussion. It also limits the set of datatypes
that can be QUOTEd, because the equivalence defined in
CONSTANT-COMPILABLE-TYPES does not support all datatypes.
It is possible for QUOTE or a garbage collector to copy
constants into readonly storage, but I think that rationale is
different from supporting existing practice. With that rationale
I might support something like QUOTE-MAY-COPY:ALWAYS, but I think
it would be questionable whether the equivalence defined in
CONSTANT-COMPILABLE-TYPES is sufficient. A version
that applies to all objects might be advisable as the equivalence
maintained by QUOTE.
∂07-Jan-89 1311 X3J13-mailer **DRAFT** issue EVAL-WHEN-NON-TOP-LEVEL, version 4
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 7 Jan 89 13:11:33 PST
Received: from defun.utah.edu by cs.utah.edu (5.59/utah-2.1-cs)
id AA23183; Sat, 7 Jan 89 14:10:25 MST
Received: by defun.utah.edu (5.59/utah-2.0-leaf)
id AA08982; Sat, 7 Jan 89 14:10:22 MST
Date: Sat, 7 Jan 89 14:10:22 MST
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8901072110.AA08982@defun.utah.edu>
To: x3j13@sail.stanford.edu
Subject: **DRAFT** issue EVAL-WHEN-NON-TOP-LEVEL, version 4
Reply-To: cl-compiler@sail.stanford.edu
Forum: Compiler
Issue: EVAL-WHEN-NON-TOP-LEVEL
References: CLtL p. 69-70
Issue DEFINING-MACROS-NON-TOP-LEVEL
Category: CHANGE, CLARIFICATION
Edit History: 6-May-88, V1 by Sandra Loosemore
16 Dec 1988, V2 by Sandra Loosemore (alternate direction)
30 Dec 1988, V3 by Sandra Loosemore (minor wording changes)
07 Jan 1989, V4 by Sandra Loosemore (update discussion)
Status: **DRAFT**
Problem Description:
The current description of how the compiler should handle EVAL-WHEN
only makes sense when it appears as a top-level form in the file being
compiled. Is it legitimate for EVAL-WHEN to appear in non-top-level
locations? What does it mean in such places?
Proposal EVAL-WHEN-NON-TOP-LEVEL:IGNORE-COMPILE:
Clarify that EVAL-WHEN may appear both at top-level and at
non-top-level. In non-top-level locations, however, the COMPILE
situation is effectively ignored.
More specifically, when an EVAL-WHEN form is processed by the
interpreter (that is, by the function EVAL), the presence of the EVAL
situation indicates that the body of the EVAL-WHEN should be evaluated
as an implicit PROGN. Otherwise, EVAL-WHEN returns NIL without
evaluating the body. The interpreter ignores the COMPILE and LOAD
situations.
When an EVAL-WHEN form is processed by the compiler:
First, if the situation COMPILE is specified:
- If the EVAL-WHEN form appears at top level (as defined in
proposal DEFINING-MACROS-NON-TOP-LEVEL:ALLOW), then each of
the forms within the body of the EVAL-WHEN are evaluated by
the compiler in the null lexical environment using the
function EVAL.
- Otherwise, no compile-time evaluation takes place. An
implementation is permitted to signal a warning to indicate
that the compile-time evaluation is being ignored.
Then, if the situation LOAD is specified, then the compiler treats
the body of the EVAL-WHEN form as if it were an implicit PROGN.
If the situation LOAD is not specified, then the compiler should
treat the EVAL-WHEN form as if it were a constant value of NIL.
The compiler ignores the EVAL situation.
Rationale:
Restricting compile-time evaluation to top-level locations prevents
complications resulting from performing the evaluation in the wrong
lexical environment.
This definition of how EVAL-WHEN behaves is much simpler than that
given in CLtL, and makes it easier to explain its nesting behavior.
Allowing implementations to signal a warning when ignoring a
non-top-level EVAL-WHEN allows users to be informed that something
unusual is going on.
Current Practice:
IIM Common Lisp implements this proposal. Kim Barrett contributed the
following code that illustrates their implementation:
(defmacro eval-when (situations &body body &environment env)
(if (not (compiler-environment-p env))
(when (member 'eval situations) `(progn ,@body))
(progn
(when (member 'compile situations)
(if (compiler-at-top-level-p env)
(mapc #'eval body)
(warn "Top-level form encountered at non-top-level.")))
(when (member 'load situations) `(progn ,@body)))))
Cost to implementors:
Probably fairly minor in most implementations.
Cost to users:
Except for the change relating to possible multiple evaluation of
nested EVAL-WHENs, this proposal is a compatible extension.
Benefits:
The behavior of EVAL-WHEN is easier to understand. Making EVAL-WHEN
meaningful at non-top-level locations makes it more generally useful,
for example in the expansion of defining macros.
Discussion:
The behavior specified for top-level EVAL-WHENs in this proposal
differs slightly from that described in CLtL. In the case where both
COMPILE and LOAD are specified, CLtL indicates that the compile-time
evaluation should be interleaved with normal compiler processing of
each of the forms in the body, while this proposal specifies that the
evaluation of all of the body forms should take place before any of
the normal compiler processing. However, it is unlikely that this
would cause serious problems for any user programs.
The nesting behavior of EVAL-WHEN as described in CLtL has been
criticized as overly complicated and hard to understand, while this
proposal is much less complicated. However, the behavior of nested
EVAL-WHENs in this proposal is strongly tied to the definition of the
term "top-level"; see proposal DEFINING-MACROS-NON-TOP-LEVEL:ALLOW.
If the bodies of top-level EVAL-WHENs are also considered to be
top-level, this leaves open the possibility that nested EVAL-WHENs may
cause multiple compile-time evaluations. For example,
(eval-when (eval compile load)
(eval-when (eval compile load)
(punch-paper-tape)))
would cause PUNCH-PAPER-TAPE to be called twice at compile time (once when
the outer EVAL-WHEN is processed, and again when the inner EVAL-WHEN is
processed). Some people think this behavior would be unacceptable.
This problem could be "fixed" by not considering the bodies of top-level
EVAL-WHENs to be top-level forms. In this case, outer EVAL-WHENs would
always override any nested EVAL-WHENs. For example,
(eval-when (eval load)
(eval-when (eval compile load)
(punch-paper-tape)))
would not cause *any* compile-time call to PUNCH-PAPER-TAPE. This
represents an incompatible change from the behavior of EVAL-WHEN
described in CLtL, where wrapping a form with (EVAL-WHEN (EVAL LOAD)
...) is essentially a no-op. Some people think the change would be a
good idea, others are uncertain whether the resulting cleaner
semantics would justify it.
As a compromise position, we could say that EVAL-WHEN passes
top-level-ness on to its body only if the COMPILE situation is not
specified.
Some people are not comfortable with messing with the definition of
top-level at all. On the other hand, others think it is important
that EVAL-WHEN and the various defining macros should apply consistent
rules for deciding when it is appropriate to perform compile-time
magic.
A final alternative is to go back to describing EVAL-WHEN the way it
was in CLtL, with a compile-time-too state variable.
∂07-Jan-89 1316 X3J13-mailer **DRAFT** issue DEFINING-MACROS-NON-TOP-LEVEL, version 7
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 7 Jan 89 13:12:18 PST
Received: from defun.utah.edu by cs.utah.edu (5.59/utah-2.1-cs)
id AA23191; Sat, 7 Jan 89 14:11:10 MST
Received: by defun.utah.edu (5.59/utah-2.0-leaf)
id AA08985; Sat, 7 Jan 89 14:11:06 MST
Date: Sat, 7 Jan 89 14:11:06 MST
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8901072111.AA08985@defun.utah.edu>
To: x3j13@sail.stanford.edu
Subject: **DRAFT** issue DEFINING-MACROS-NON-TOP-LEVEL, version 7
Reply-To: cl-compiler@sail.stanford.edu
Forum: Compiler
Issue: DEFINING-MACROS-NON-TOP-LEVEL
References: CLtL p. 66-70, 143
Issue EVAL-WHEN-NON-TOP-LEVEL
Issue COMPILE-FILE-HANDLING-OF-TOP-LEVEL-FORMS
Issue COMPILER-LET-CONFUSION
Category: CLARIFICATION, ENHANCEMENT
Edit History: 6-May-88, V1 by Sandra Loosemore
9-Jun-88, V2 by Sandra Loosemore
12-Sep-88, V3 by Sandra Loosemore (fix garbled section 4)
21-Sep-88, V4 by Sandra Loosemore (clarify section 5)
16-Dec-88, V5 by Sandra Loosemore (major restructuring)
31-Dec-88, V6 by Sandra Loosemore (wording clarifications)
07-Jan-89, V7 by Sandra Loosemore (add example)
Status: **DRAFT**
Problem Description:
CLtL leaves the interpretation of defining forms such as DEFMACRO and
DEFVAR that appear in other than top-level locations unclear.
On page 66, it is stated: "It is not illegal to use these forms at
other than top level, but whether it is meaningful to do so depends on
context. Compilers, for example, may not recognize these forms
properly in other than top-level contexts". At least one implementation
has interpreted this to mean that it is permissible to simply refuse
to compile defining macros that do not appear at top-level.
Proposal: DEFINING-MACROS-NON-TOP-LEVEL:ALLOW
(1) Remove the language from p. 66 of CLtL quoted above. Clarify that
while defining macros normally appear at top level, it is meaningful
to place them in non-top-level contexts and that the compiler must
handle them properly in all situations. However, the compile-time side
effects described in issue COMPILE-FILE-HANDLING-OF-TOP-LEVEL-FORMS
only take place when the defining macros appear at top-level.
(2) Remove the language on p. 145 of CLtL, which states that macro
functions are always defined in the null lexical environment. Clarify
that all defining macros which create functional objects (including
DEFMACRO, DEFTYPE, DEFINE-SETF-METHOD, and the complex form of
DEFSETF, as well as DEFUN) must ensure that those functions are
defined in the lexical environment in which the defining form is
evaluated.
(3) Define a ``top-level form'' as follows:
- Each form read by COMPILE-FILE from the input file is a top-level
form.
- Forms within the body of a top-level PROGN, EVAL-WHEN, or
COMPILER-LET are also top-level forms.
- The expansion of a top-level macro call is also a top-level form.
Top-level forms would be evaluated by the interpreter in a null
lexical environment, but evaluation in a null lexical environment does
not necessarily imply that the form is top-level.
(4) Specify that top-level forms in a file being compiled are
guaranteed to be processed sequentially, including forms within the
body of a top-level PROGN, EVAL-WHEN, or COMPILER-LET. The order in
which non-top-level subforms of a top-level form are processed by the
compiler is explicitly left unspecified.
Rationale:
The notion of a ``top-level form'' is rather confused, since the term
is used in CLtL to refer both to a place where a form may appear (what
this proposal continues to call ``top-level''), and to instances of
forms which traditionally appear there (what this proposal calls
``defining macros'').
There has been a suggestion that the notion of a top-level form should
be extended to include forms in the body of a top-level LET, to allow
forms such as DEFUN to be meaningful there. However, we feel that a
cleaner solution is to remove the restrictions on the placement of
defining macros altogether.
Item (4) serves two purposes. First, it guarantees users that
compile-time side-effects from top-level EVAL-WHEN forms or defining
macros will happen in the correct order. Second, it allows compilers
to perform certain kinds of source-to-source transformations that
change the order of subforms.
For instance, the following example from CLtL
(let ((old-count *access-count*))
(unwind-protect
(progn
(incf *access-count*)
(perform-access))
(setq *access-count* old-count)))
is entirely equivalent to:
(let ((old-count *access-count*))
(let ((thunk #'(lambda () (setq *access-count* old-count))))
(unwind-protect
(progn
(incf *access-count*)
(perform-access))
(funcall thunk))))
(This is a real example from the A-Lisp compiler, which implements
UNWIND-PROTECT by having it push a "thunk" to perform the cleanup
actions onto the catch stack before executing the protected form.)
Current Practice:
CLtL mentions only that forms within a top-level PROGN, and not
COMPILER-LET, are treated as top-level. However, COMPILER-LET is
also treated specially in implementations derived from the MIT Lisp
Machine (TI and Symbolics), as well as Lucid and Coral (but not
VaxLisp).
Cost to implementors:
Implementations that currently don't compile defining macros correctly
when they appear at non-top-level will have to be changed.
Cost to users:
None. This is a compatible extension.
Benefits:
The notion of defining macros as being somehow special when they
appear at top-level is removed. Allowing defining macros to appear
anywhere instead of restricting them to certain positions results in a
cleaner language design.
Discussion:
This proposal is consistent with the behavior specified in proposal
EVAL-WHEN-NON-TOP-LEVEL:IGNORE-COMPILE. In particular, if the compile
time side-effects for defining macros specified in proposal
COMPILE-FILE-HANDLING-OF-TOP-LEVEL-FORMS:CLARIFY are implemented using
EVAL-WHEN, the "right" compiler behavior for defining macros at
non-top-level will happen automatically.
The issue of whether the bodies of top-level EVAL-WHENs should also be
considered top-level is controversial, as it effects the nesting
behavior of EVAL-WHEN. See issue EVAL-WHEN-NON-TOP-LEVEL for details.
There has also been a suggestion that MACROLET bodies should be
considered top-level. IIM Common Lisp implements this.
Note that proposal COMPILER-LET-CONFUSION:ELIMINATE would remove
COMPILER-LET from the language entirely.
∂08-Jan-89 2342 CL-Compiler-mailer **DRAFT** issue CONSTANT-COMPILABLE-TYPES
Received: from Think.COM by SAIL.Stanford.EDU with TCP; 8 Jan 89 23:41:53 PST
Return-Path: <barmar@Think.COM>
Received: from kulla.think.com by Think.COM; Mon, 9 Jan 89 02:35:59 EST
Received: by kulla.think.com; Mon, 9 Jan 89 02:38:15 EST
Date: Mon, 9 Jan 89 02:38:15 EST
From: barmar@Think.COM
Message-Id: <8901090738.AA09372@kulla.think.com>
To: cl-compiler@sail.stanford.edu
Cc: x3j13@sail.stanford.edu
In-Reply-To: Sandra J Loosemore's message of Sat, 7 Jan 89 11:47:31 MST <8901071847.AA08919@defun.utah.edu>
Subject: **DRAFT** issue CONSTANT-COMPILABLE-TYPES
The full extension of the concept of coalescing of constants is to say
that they can be coalesced exactly when they are similar as constants.
I guess my last message can be thought of as endorsing this idea.
barmar
∂09-Jan-89 0848 X3J13-mailer Editorial committee issues
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 9 Jan 89 08:48:01 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
for x3j13@sail.stanford.edu; id AA15007; Mon, 9 Jan 89 08:46:48 PST
Message-Id: <8901091646.AA15007@decwrl.dec.com>
From: chapman%aitg.DEC@decwrl.dec.com
Date: 9 Jan 89 11:44
To: x3j13@sail.stanford.edu
Subject: Editorial committee issues
The editorial committee has completed discussion of 5 issues and
would like to bring them to vote, if possible, in Hawaii. Although
there will be copies available in Hawaii, please review these issues
and send comments to cl-editorial.
Thanks for your time.
kathy chapman
∂09-Jan-89 0849 X3J13-mailer Issue:DEPRECATION-POSITION
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 9 Jan 89 08:49:26 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
for x3j13@sail.stanford.edu; id AA15093; Mon, 9 Jan 89 08:48:13 PST
Message-Id: <8901091648.AA15093@decwrl.dec.com>
From: chapman%aitg.DEC@decwrl.dec.com
Date: 9 Jan 89 11:47
To: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
Subject: Issue:DEPRECATION-POSITION
Issue: DEPRECATION-POSITION
References: X3J13 committee and sub-committee meetings
Category: Policy
Edit history: 12-DEC-88, Version 1 by Chapman
20-DEC-88, Version 2 by Chapman
9-JAN-89, Version 3 by Chapman
Problem Description:
When features of a language become outdated due to technology advances,
or unnecessary due to the addition of better features, should the old
features be deprecated from the language, or deleted outright?
Since there has never been a Common Lisp standard before, deprecation
is against a de-facto standard, which may or may not be appropriate.
Deletion, on the other hand, is cleaner, but may generate never-ending
discussion when the standard goes for public review (and even in the
X3J13 meeting).
In summary, there are two levels:
1) features in CLtL that are not present in ANSI Common Lisp 1989,
2) features in ANSI Common Lisp 1989 that will likely not be present in
future standards;
and the issues are:
a) what features fit into which category
b) how should implementations deal with such features? how can programs be
written to avoid problems with such features?
Proposal (DEPRECATION-POSITION:LIMITED)
Since Common Lisp has been used industrially, it is reasonable to
assume that any level 1 feature will be a cause for
at least some controversy. Therefore, this proposal suggests that
X3J13 put features categorized as level 1 in a separate package,
and retain features categorized as level 2 in the Lisp package, but
declare them deprecated in the standard.
The members of each level will be determined on a case-by-case basis by
the X3J13 committee.
Rationale:
The standard should contain information about deprecation since
the topic has been mentioned more than once in X3J13, and since
Common Lisp is such a large language.
It's not
unreasonable for a language the size of Lisp to get rid of the
never-used tools, but we don't want to generate years of discussion
over a relatively minor issue when the standard goes for public review.
Current Practice:
Fortran successfully deprecated one constant. However, a proposal
submitted during its latest standardization effort that
suggested deleting old features in favor of new ones was
opposed vehemently. The Pascal committee is currently opposed
to deprecation, and the SPARC proposal suggests that
deprecation should be dictated by the marketplace.
Adoption Cost:
None.
Benefits:
This policy will provide a basis for future X3J13 decisions.
Conversion Cost:
None.
Aesthetics:
None.
Discussion:
Comment:
"I personally would argue for not including "deprecated" features in
the standard at all, because including them now will make it harder to
remove them later. My perception is that ANSI Common Lisp is turning
out to be a much different language than what is described in CLtL,
particularly if CLOS becomes a required part of the language. If,
with the benefit of hindsight and experience, we now realize that some
"features" described in CLtL were really "bugs", the time to remove
them is *before* they become cast in stone as part of ANSI Common
Lisp. I suspect that most implementors will continue to provide these
features as extensions anyway, as long as a substantial number of
their customers are still using them."
Response:
Perhaps most implementors will continue to provide the deleted features,
but they will do that also if they are deprecated. Since the only real
difference between the two is the amount of discussion one will generate
over the other (I think that worrying about future difficulty of getting
rid of the features is not a "real" difference yet), it seems that choosing
the route of least resistance in this case is the wisest course.
Comment:
"For the most part, X3J13 hasn't been able to deal with
which features fit into which category until how the categories will
be divided has been resolved. In particular, there are a number of
features that we didn't want to remove from ANSI Common Lisp 1989 if
it would be awkward for implementations to continue to support them or
programs to continue to use them, but wanted to at least declare them
"obsolete". There's been some debate on whether CHAR-FONT, for
example , should be deleted before the standard is written, or declared
deprecated within the standard."
∂09-Jan-89 0851 X3J13-mailer Issue:CUT-OFF-DATES
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 9 Jan 89 08:50:53 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
for x3j13@sail.stanford.edu; id AA15165; Mon, 9 Jan 89 08:49:39 PST
Message-Id: <8901091649.AA15165@decwrl.dec.com>
From: chapman%aitg.DEC@decwrl.dec.com
Date: 9 Jan 89 11:49
To: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
Subject: Issue:CUT-OFF-DATES
Issue: CUT-OFF-DATES
References: Working draft of the standard
Category: Policy
Edit history: 20-DEC-88, Version 1 by Chapman
9-JAN-89, Version 2 by Chapman
Problem Description:
The X3J13 committee has informally agreed that a 12/89 standard is
a doable goal. However, the standard has to be reviewed by a large
number of people outside the X3J13 committee. We must allow plenty
of time for these reviews, and should therefore plan our internal
reviews and "document freeze" accordingly.
Proposal (CUT-OFF-DATES:ESTABLISH)
Item Cut-off date for changes
________________________________________________(First day of the month)____
Format of tool descriptions 11/88
Meaning of each item in each tool description 11/88
Fonts 2/89
Changes to existing functions 4/89
Additional functions 4/89
Compliance 2/89
Error terms 2/89
Contents of Chapter 6 tool descriptions:
- Syntax section 2/89
- Arguments section 5/89
- Values section 5/89
- Description section 5/89
- Examples section 2/89
- Side Effects section 3/89
- Affected By section 3/89
- Conditions section 4/89
- See Also section 2/89
- Notes section 5/89
Changes to TOC 2/89
Contents of sections: 4/89
- 1.1 4/89
- 1.2 4/89
- 1.3 4/89
- 1.4 4/89
- 1.5 4/89
- 1.6 4/89
- 1.7 4/89
- 1.8 4/89
- 2.1 5/89
- 2.2 5/89
- 2.3 5/89
- 2.4 5/89
- 2.5 5/89
- 3.1 5/89
- 3.2 5/89
- 4.1 6/89
- 4.2 6/89
- 5.1 6/89
- 5.2 6/89
- 5.3 6/89
- 5.4 6/89
The way this breaks down is as follows:
Things that have already frozen: format of Chapter 6 tool descriptions,
meaning of each tool description category.
Things that will be frozen after the 1/88 meeting: fonts, compliance,
error terms, syntax section, examples section, see also section,
side effects section, affected by section, table of contents, and
this schedule of cut-off dates.
Things that will be frozen after the 3/88 meeting:
Contents of Chapters 1, 2, and 3, New issues that change existing functions
or add new functions, values section, arguments section, description
section, notes section, and conditions section.
Things that will be frozen by 6/1/89:
Chapters 4 and 5.
All comments received according to this schedule will be incorporated
by 6/30/89. Any comments received after the dates listed above will
only be considered if they are of an extreme nature, if they impact
the correctness of the document. Otherwise the comments will be filed
and reserved for the next standard.
To change these dates, a 2/3 vote of the editorial committee
or a majority vote of X3J13 is required.
Rationale:
In order to complete this standard and move on to the next version,
we need to establish dates after which changes will not be allowed.
Current Practice:
None.
Adoption Cost:
None.
Benefits:
Establishing cut-off dates will encourage reviewers to complete
a thorough review in a timely manner.
Conversion Cost:
None.
Aesthetics:
None.
Discussion:
Comment:
"There are a couple of areas where I expect some further work that might
impact these dates:
a) pathname functions
I'm still hoping to get some cleanup of many of the pathname issues
b) errors signalled, by name
I'm still hoping that we can get at least a partial listing, for each
function, of the possible errors signalled, under what circumstances.
c) pending cleanups
There will probably be 10-15 cleanup issues dealing with ambiguities that
will drag out beyond 3/89. I hope not, but I'm trying to be realistic;
there are just too many "open" issues left."
∂09-Jan-89 0851 X3J13-mailer Issue:SUBSETTING-POSITION
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 9 Jan 89 08:51:25 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
for x3j13@sail.stanford.edu; id AA15185; Mon, 9 Jan 89 08:50:10 PST
Message-Id: <8901091650.AA15185@decwrl.dec.com>
From: chapman%aitg.DEC@decwrl.dec.com
Date: 9 Jan 89 11:49
To: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
Subject: Issue:SUBSETTING-POSITION
Issue: SUBSETTING-POSITION
References: X3J13 committee and sub-committee meetings
Category: Policy
Edit history: 12-DEC-88, Version 1 by Chapman
9-JAN-89, Version 2 by Chapman (with discussion by Masinter)
Problem Description:
Should the CL standard be partitioned such that an implementation
could chose a subset of all the CL facilities to implement and
still be a conforming implementation?
What subsets should be specified in the draft standard we submit to
ANSI?
What position should we take if someone should propose a subset?
Proposal (SUBSETTING-POSITION:NONE)
The draft standard we submit to ANSI
contains *no* subsets. In the section on "subsetting" it should be mentioned
that Lisp is a "small" language with a "big" library and that the conventional
mechanism for allowing small memory images is auto-load.
Rationale:
Current Practice:
Pascal has two levels of conforming implementations -- level 1 contains
level 0 and conformant arrays. This was a compromise necessary to achieve
international agreement. The 1981 PL/I was subsetted and the
results were a range of implementations between the
subset and the full language; nobody wanted to use the subset so vendors
were forced to implement the full language eventually anyway.
Cobol had multiple levels of subsets. However,
the only two levels that were important were the minimum
subset and the full language. The middle levels were
seldom used other than transient points to the full language.
Fortran was subsetted. It was felt that subsetting encouraged
vendors to implement Fortran and therefore proliferate its usage,
but users were quite annoyed that one Fortran was considerably
different from another.
The new Fortran language standards committee is
banning subsetting.
SPARC feels that
subsets aren't good for facilitating interchange, but serve the
purpose of allowing
timely implementation of the standard.
A suggestion that was made by most language committee representatives
was to group subsetted parts meaningfully, and to minimize the number
of levels.
Adoption Cost:
None.
Benefits:
This policy will provide a basis for making decisions in X3J13.
Conversion Cost:
None.
Aesthetics:
None.
Discussion:
First of all, we should review the possible kinds of subsets one might
have: subsets might omit syntax, functions, admissable values or arguments
to functions, or data types. For example, a subset might disallow SPECIAL
declarations (a syntactic subset), might omit the COS, SIN, ATAN functions,
might disallow the :TEST keyword to MAKE-HASH-TABLE, might restrict TAILP
to work on proper lists, or might omit complex numbers. Each of these is a
"subset" in the sense that a subset of correct programs for the "full"
language would be correct for the "subset" language.
Subsets can have various levels of "determinability" for programs. The
issue is: how easy is it to tell whether a program written in the "full"
language would run in a "subset" implementation? Except for the
(non-trivial) issue of macro expansions, some subsets are "lexically"
determinable, e.g., if a function is omitted, you can tell if the program
uses it by scanning the program. Some subsets are "dynamically"
determinable, e.g, a subset might signal an error if the :TEST argument to
MAKE-HASH-TABLE is EQUALP. Some subsets are neither lexically nor
dynamically determinable, e.g., if the subset implements dynamic extent for
rest lists, it may be impossible to tell even with run-type checks whether
the a program written in the "full" language would conform.
Some "subsets" might be merely restrictive interpretations, e.g., a
"run-time" implementation that made ED, TRACE, UNTRACE into no-ops and made
BREAK halt the program execution rather than "enter the debugger"; since we
cannot define what "enter the debugger" means, we might want to define
explicitly this subset as a reasonable one for embedded systems.
∂09-Jan-89 0852 X3J13-mailer Issue:CONFORMANCE-POSITION
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 9 Jan 89 08:52:34 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
for x3j13@sail.stanford.edu; id AA15368; Mon, 9 Jan 89 08:51:17 PST
Message-Id: <8901091651.AA15368@decwrl.dec.com>
From: chapman%aitg.DEC@decwrl.dec.com
Date: 9 Jan 89 11:50
To: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
Subject: Issue:CONFORMANCE-POSITION
Issue: CONFORMANCE-POSITION
References: Chapter 1, Section 1.5, Working draft of standard
Category: Clarification
Related Issues: EXTENSIONS-POSITION, LISP-SYMBOL-REDEFINITION, PACKAGE-CLUTTER
Edit history: 12-DEC-88, Version 1 by Chapman
20-DEC-88, Version 2 by Chapman
9-JAN-89, Version 3 by Chapman
Problem Description:
Two ways of defining conformance are in terms of a conforming program
and in terms of a conforming implementation. How should our standard
define conformance?
Proposal (CONFORMANCE-POSITION:PROGRAM)
The standard presents the syntax and semantics to be implemented by
a conforming implementation.
A conforming program is one that can be executed by a conforming
implementation with no unhandled exceptions and no unspecified
and potentially harmful consequences.
The basic test for conformance will be that a program written to the letter
of the standard will run in all "conforming" implementations.
The basic rules are as follows:
. Conforming programs use the syntax described in the standard.
. Conforming programs are written using the functions, macros,
special forms, variables, constants described in the standard.
. Conforming implementations provide the functions, macros, special
forms, variables, constants, and arrange that they behave in ways
that conform to the descriptions of them in the standard.
Rationale:
The standard must contain information about conformance. Including
requirements which would be placed on implementations, however, leaves
the possiblity open that something would be overlooked, and so
implementations may well conform without processing correctly
conforming programs.
Current Practice:
CLtL generally describes things in terms of what a correct program can
expect.
dpANS C is also in terms of programs. They have further defined
both "conforming" and "strictly conforming" programs; the
difference has something to do with how the program deals with features
that the standard says are implementation-defined.
Pascal defines
conformance in terms of both, PL/I defines conformance in terms of
conforming programs only.
Fortran and Ada say that a conforming implementation correctly processes
conforming programs. Ada goes on to say other specific things about
a conforming implementation, Fortran does not at this time but probably
will in its next standard. The ISO conformance guidelines, and the
draft of the SPARC proposal discuss both programs and implementations.
Adoption Cost:
None.
Benefits:
This definition will give readers and validators a basis on which to read
the standard.
Conversion Cost:
None.
Aesthetics:
None.
Discussion:
Comment:
I think we might want to introduce the notion of a "portable" program, as
well as a "conformal" one.
A "portable Common Lisp program" is a conformal Common Lisp program that
"works the same" in all conformal implementations.
Response:
There should be no difference, then between a portable program and a
conforming program. Why introduce new terms?
∂09-Jan-89 0933 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu URGENT: Northeastern University Theory Day - Corrections
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 9 Jan 89 09:31:30 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA21303; Mon, 9 Jan 89 09:30:38 PDT
Message-Id: <8901091730.AA21303@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Mon, 9 Jan 89 09:30:51 PST
Received: by BYUADMIN (Mailer R2.01A) id 6239; Mon, 09 Jan 89 10:29:12 MST
Date: Mon, 9 Jan 89 09:34:51 EST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
andrew klapper <klapper%CORWIN.CCS.NORTHEASTERN.EDU@Forsythe.Stanford.EDU>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
From: andrew klapper <klapper%CORWIN.CCS.NORTHEASTERN.EDU@Forsythe.Stanford.EDU>
Subject: URGENT: Northeastern University Theory Day - Corrections
Comments: To: theorynt@vm1.nodak.edu
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
-------------------------------------------------------------------------------
The College of Computer Science at Northeastern University
announces its 1989
THEORY DAY
Friday, January 27, 1989
........................... Schedule of Events ................................
10:00 AM Eric Allender "Limitations of the Upward Separation Technique"
11:00 AM Joan Feigenbaum "Generating Hard Certified Elements of
NP-Complete Sets"
12:00 PM Lunch Break
2:00 PM Gilles Brassard "Minimum Disclosure Proofs of Knowledge"
3:30 PM Ken MacAloon "Constraint Logic Programming"
All talks will take place in room 356 Ell Center on the Northeastern University
campus. Parking on campus will be available but requires prior approval. For
information about visitor parking and maps of campus or for any other
information, please contact Gayle Mackay:
College of Computer Science
Northeastern University
360 Huntington Ave.
Boston, MA 02115
(617) 437-2464
or contact Andy Klapper at klapper@corwin.ccs.northeastern.edu
∂09-Jan-89 0939 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Urgent: Semantics of Programming Languages
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 9 Jan 89 09:39:06 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA21580; Mon, 9 Jan 89 09:38:28 PDT
Message-Id: <8901091738.AA21580@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Mon, 9 Jan 89 09:38:41 PST
Received: by BYUADMIN (Mailer R2.01A) id 6523; Mon, 09 Jan 89 10:34:04 MST
Date: Mon, 9 Jan 89 10:12:21 EST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Gyorgy Revesz 789-7871 <REVESZ%YKTVMH.BITNET@forsythe.stanford.edu>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
From: Gyorgy Revesz 789-7871 <REVESZ%YKTVMH.BITNET@forsythe.stanford.edu>
Subject: Urgent: Semantics of Programming Languages
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
The Programming Languages and Foundations Department
of the IBM T.J. Watson Research Center
Announces a series of distinguished lectures on the
----------------------------------------------------------------------------
SEMANTICS OF PROGRAMMING LANGUAGES
----------------------------------------------------------------------------
January 26 An ultimate "Kahn Principle" for dataflow semantics
Albert Meyer, MIT
----------------------------------------------------------------------------
February 23 How far do we need to automate proofs?
Dana Scott, Carnegie Mellon University
----------------------------------------------------------------------------
March 23 Denotational semantics and observable properties
Samson Abramsky, Imperial College
----------------------------------------------------------------------------
April 27 To be announced
John Mitchell, Stanford University
----------------------------------------------------------------------------
May 25 Type structure and categories
John Reynolds, Carnegie Mellon University
----------------------------------------------------------------------------
Location:IBM T.J. Watson Research Center, Hawthorne, NY
Time: 3 PM - 4 PM
Visitors are welcome. Please make arrangements
in advance by contacting Gyorgy Revesz at
(914) 789-7871.
IBM T.J. Watson Research Center
P.O. Box 704
Yorktown Heights, NY 10598
∂09-Jan-89 0943 LOGMTC-mailer Seminar reminders
Received: from csli.Stanford.EDU by SAIL.Stanford.EDU with TCP; 9 Jan 89 09:43:36 PST
Received: by csli.Stanford.EDU (4.0/4.7); Mon, 9 Jan 89 09:42:06 PST
Date: Mon 9 Jan 89 09:42:05-PST
From: Sol Feferman <SF@CSLI.Stanford.EDU>
Subject: Seminar reminders
To: Logic@csli.Stanford.EDU
Message-Id: <600370925.0.SF@CSLI.Stanford.EDU>
Mail-System-Version: <SUN-MM(242)+TOPSLIB(128)@CSLI.Stanford.EDU>
Today at 4:15 PM Prof. Gabriel Stolzenberg of Northeastern U will give a
special lecture on constructive mathematics. Tomorrow at 4:15 Paolo
Mancosu will continue a presentation of his work on generalizing classical
and effective analogues for model theory. Both in Room 381-T.
No meeting January 17.
-------
∂09-Jan-89 1132 @Score.Stanford.EDU:chandler@polya.Stanford.EDU General Faculty Meeting
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 9 Jan 89 11:32:37 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Mon 9 Jan 89 11:29:36-PST
Received: by polya.Stanford.EDU (5.59/25-eef) id AA21752; Mon, 9 Jan 89 09:42:14 PDT
Date: Mon, 9 Jan 1989 9:42:06 PST
From: "Joyce R. Chandler" <chandler@polya.stanford.edu>
To: faculty@score, bureaucrats@score
Subject: General Faculty Meeting
Message-Id: <CMM.0.87.600370926.chandler@polya.stanford.edu>
Just a reminder...tomorrow - 1/10 - General Faculty Meeting to be held at
2:30 in MJH-146.
∂09-Jan-89 1149 @Score.Stanford.EDU:chandler@polya.Stanford.EDU Tomorrow's Faculty Lunch
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 9 Jan 89 11:49:43 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Mon 9 Jan 89 11:46:49-PST
Received: by polya.Stanford.EDU (5.59/25-eef) id AA00390; Mon, 9 Jan 89 11:47:14 PDT
Date: Mon, 9 Jan 1989 11:45:31 PST
From: "Joyce R. Chandler" <chandler@polya.stanford.edu>
To: faculty@score, bureaucrats@score
Subject: Tomorrow's Faculty Lunch
Message-Id: <CMM.0.87.600378331.chandler@polya.stanford.edu>
Just a reminder......tomorrow's faculty lunch to be held in the Hartley
Conference Room of the Mitchell Earth Sciences Building at 12:15 will feature
Rebecca Lasher of the Math/CSD Library demonstrating on-line access to
library materials.
∂09-Jan-89 1155 X3J13-mailer Issue:EXTENSIONS-POSITION
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 9 Jan 89 11:55:13 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
for skona%csilvax@hub.ucsb.edu; id AA15119; Mon, 9 Jan 89 08:48:49 PST
Message-Id: <8901091648.AA15119@decwrl.dec.com>
From: chapman%aitg.DEC@decwrl.dec.com
Date: 9 Jan 89 11:48
To: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
Subject: Issue:EXTENSIONS-POSITION
Issue: EXTENSIONS-POSITION
References: Chapter 1, Working draft of standard
Category: Clarification
Related Issues: CONFORMANCE-POSITION, IF-BODY
Edit history: 12-DEC-88, Version 1 by Chapman
20-DEC-88, Version 2 by Chapman
9-JAN-89, Version 3 by Chapman
Problem Description:
What is the definition of a language extension?
What effect does a language extension have on a conforming program?
What obligation does an implementation have to warn the user that an
extension is being used?
Is it OK to define Common Lisp functions with extra optional or
keyword parameters, with system dependent meanings? E.g. Lucid's
COMPILE-FILE has several keyword arguments not mentioned in CLtL.
Is it OK to return extra values from Common Lisp functions?
Is it OK to define the behavior of functions on datatypes not
explicitly permitted in CLtL? For example, suppose + is defined on
vectors to do component-wise addition on the elements? Arguments to +
"must" be numbers, meaning that it "is an error" to supply anything
other than numbers, meaning that anything can happen when you supply
arguments other than numbers.
Proposal (EXTENSIONS-POSITION:DOCUMENTATION)
The standard document should define a language extension to be
any implementation-supplied tool that isn't explicitly defined
in the standard. This includes facilities added to tools defined
in the standard.
The standard document should levy the following requirement on a
conforming implementation's documentation:
The documentation that accompanies a conforming implementation should clearly
state which parts of the implementation are extensions.
Extensions that are associated with symbols that are external in the LISP
package are reasonable. Extensions to existing functions
as far as additional optional or keyword arguments are disallowed,
except where explicitly allowed. Extensions to existing functions as far as
data types allowed, extra arguments, or extra return values are disallowed
except where explicitly allowed.
If the standard says that "the results are unspecified", and an
implementation specifies the results, this an extension in the
sense that if the correct behavior of a program depends on the results,
only implementations with the same extension will execute the program
correctly.
Rationale:
The standard should contain information about language extensions
since most implementations have extended the language.
Current Practice:
CLtL allows any extension, provided that it doesn't alter the behavior
of a program that only uses what is specified in CLtL. In particular,
any situation that "is an error" (either explicitly or implicitly) is a
potential area for extension.
Adoption Cost:
Vendors will have to improve their documentation
to list all their extensions. Vendors will have to go through their
implementation and determine what is or isn't an extension.
Benefits:
This definition will provide a basis for proper understanding of
the error terminology used in the standard. The implementation
documentation requirement will aid the user in producing portable code.
Conversion Cost:
None.
Aesthetics:
None.
Discussion:
Comments:
"The most commonly proposed solution to this kind of problem is to
require the implementation to have a way to disable its extensions, so
that a programmer can be told when he is using a feature that might
affect his program's portability. Whether this should be the default
mode is up for debate; I think most other standards that do this don't
require it to be the default."
Response:
Requiring an implementation to be able to disable extensions seems like
a more costly alternative than requiring an implementation to document
its extensions as extensions if it is to be conforming, since presumably
an implementation will document user-visible extension anyway.
Comment:
It seems to be a constraint on "documentation" rather than "implementation"
if you turn the accidental behavior of (CAR T) into a "feature" of your
implementation. We might want to disallow such an extension as "conforming
to the standard". An implementation which had such an extension might
conform, even if the extension did not conform.
Response:
There are currently statements in the conformance section of the standard
that state what you have demonstrated here. They will be left in that
section.
∂09-Jan-89 1242 X3J13-mailer Re: Issue:SUBSETTING-POSITION
Received: from NSS.Cs.Ucl.AC.UK by SAIL.Stanford.EDU with TCP; 9 Jan 89 12:41:24 PST
Received: from aiai.edinburgh.ac.uk by NSS.Cs.Ucl.AC.UK via Janet with NIFTP
id aa06734; 9 Jan 89 19:42 GMT
Date: Mon, 9 Jan 89 19:43:21 GMT
Message-Id: <11708.8901091943@subnode.aiai.ed.ac.uk>
From: Jeff Dalton <jeff%aiai.edinburgh.ac.uk@NSS.Cs.Ucl.AC.UK>
Subject: Re: Issue:SUBSETTING-POSITION
To: chapman <@decwrl.dec.com:chapman@aitg.dec>, x3j13@sail.stanford.edu
In-Reply-To: chapman's message of 9 Jan 89 11:49
Subsetting has long been a somewhat controversial topic, but I think
it is fair to say that "no subsets" is the dominant position in X3J13.
It is possible that subsets might be helpful at the ISO level, but
so far the idea of a subset (without any other changes) has not attracted
too great a following.
> Proposal (SUBSETTING-POSITION:NONE)
>
> The draft standard we submit to ANSI contains *no* subsets. In the
> section on "subsetting" it should be mentioned that Lisp is a "small"
> language with a "big" library and that the conventional mechanism for
> allowing small memory images is auto-load.
I'd be happier if it were fairly easy for someone reading the standard
to determine which part was the "library" and which the core language.
For example, where do we find FUNCALL and APPLY?
The draft C standard has an explicit division. Section 3 is
"Language" and section 4 is "Library". It may not be necessary
to go that far for Common Lisp.
> Current Practice:
>
> The 1981 PL/I was subsetted and the results were a range of
> implementations between the subset and the full language; nobody wanted
> to use the subset so vendors were forced to implement the full language
> eventually anyway.
I'd be interested in knowing more of the PL/I story. As I recall, we
(Dartmouth) were quite happy with "Subset G".
I suppose you might want to add something about Basic. At one point,
there was an ANSI standard for "Minimal Basic". It was too minimal.
Later work on ANSI Basic involved a rather different-looking language
(think "structured control structures") and a number of optional
extensions for such things as real-time process control. I don't
know the details or what finally happened, but it looked fairly messy.
∂09-Jan-89 1257 lansky@ai.sri.com AIRR Seminar Reminder
Received: from Warbucks.AI.SRI.COM by SAIL.Stanford.EDU with TCP; 9 Jan 89 12:56:21 PST
Received: from venice.ai.sri.com by Warbucks.AI.SRI.COM with INTERNET ;
Mon, 9 Jan 89 12:44:33 PST
Received: by venice.ai.sri.com (3.2/4.16)
id AA00773 for planlunch@ai.sri.com; Mon, 9 Jan 89 12:44:36 PST
Date: Mon 9 Jan 89 12:44:34-PST
From: LANSKY@Warbucks.AI.SRI.COM (Amy Lansky)
Subject: AIRR Seminar Reminder
To: planlunch@Warbucks.AI.SRI.COM
Message-Id: <600381874.0.LANSKY@VENICE.ARPA>
Mail-System-Version: <SUN-MM(229)+TOPSLIB(128)@VENICE.ARPA>
VISITORS: Please arrive 5 minutes early so that you can be escorted up
from the E-building receptionist's desk. Thanks!
-----------------------------------------------------------------------
ABDUCTION, DEDUCTION, INDUCTION AND PREDICTION
John R. Josephson (Josephson@osu-20.ircc.ohio-state.edu)
Ohio State University Laboratory for AI Research (LAIR)
Department of Computer and Information Science
2:00 PM, TUESDAY, January 10
SRI International, Building E, Room EJ228
Abduction has been described as a distinctive form of inference,
separate from both deduction and induction. Other terms that have
been used for essentially the same inference pattern include:
inference to the best explanation, hypothetic inference, eliminative
induction, differential diagnosis, and the explanatory inference. It
is the ``hypothetico-'' in the ``hypothetico-deductive'' model of the
scientific method, and often the ``hypothesize'' in the ``hypothesize
and test'' weak method in AI. The objectives of this talk will be to
describe and characterize abductive inference, and to clarify some
relationships to deduction and induction. In particular I will argue
that some abductions are deductions, but some are not, and that
inductive generalizations can be insightfully analyzed as special
cases of abductions. I will argue that predictions are a distinctive
form of inference; they are not abductions and are sometimes
deductive, sometimes not. The result will be a new taxonomy of basic
inference types.
-------
∂09-Jan-89 1303 X3J13-mailer revised ISO discussion, revised DRAFT Gegenda and Subcommittee meetings
Received: from lucid.com by SAIL.Stanford.EDU with TCP; 9 Jan 89 13:03:27 PST
Received: from challenger ([192.9.200.17]) by heavens-gate.lucid.com id AA00910g; Mon, 9 Jan 89 12:59:24 PST
Received: by challenger id AA16753g; Mon, 9 Jan 89 12:55:22 PST
Date: Mon, 9 Jan 89 12:55:22 PST
From: Jan Zubkoff <jlz@lucid.com>
Message-Id: <8901092055.AA16753@challenger>
To: x3j13@sail.stanford.edu
Subject: revised ISO discussion, revised DRAFT Gegenda and Subcommittee meetings
Guest Room 120 of the hotel has been reserved for Subcommittee meetings.
Please let me know how much time you need and what day and time you'll need.
I'll make up a scudule and post it.
---jan---
Monday, January 16
7:30am - ISO discussion, Chart room
We've found copying facilities to be very expensive at hotels. We intend not
to use their facilities. Please mail copies of reports to Liz Anne's
attention at the hotel if you intend to distribute reports to the meeting.
Participants are encouraged to bring copies of reports mailed to them to the
meeting.
X3J13 Committee Meeting Agenda DRAFT
January 16 - 18, 1988
1 Call to Order, January 16, 9:00am Chart Room
2 Opening Remarks and Introductions
- Opening Remarks, Bob Mathis (10 minutes)
- Introduction of attendees
- Future meetings, Jan Zubkoff (5 minutes)
3 Approval of Agenda
4 Approval of Minutes
5 Other Business
6 Character Subcommittee Report, Thom Linden (2 hours)
7 Coffee Break 10:30
8 Character continuation
9 Chapter 3 CLOS, Gregor Kiczales (1 hour)
10 LUNCH 12:00 Voyage Room Restaurant
11 Compiler Subcommittee, Sandra Loosemore (2 hours)
12 Iteration Subcommittee Report, Jonl White (30 minutes) 89-004
13 Recess 3:00
14 Call to Order, 8:00pm
15 Editorial Subcommittee Report, Kathy Chapman (1 hour)
16 Other Subcommittee Reports
16a Recess 10:00
17 Call to Order, January 17, 9:00am Chart Room
18 Other Subcommittee Reports
19 Coffee Break 10:30am
20 Cleanup Subcommittee, Larry Masinter
21 Lunch 12:00 Voyage Room Restaurant
22 Cleanup continuation
23 Break 3:00
24 Cleanup continuation
25 Recess 4:30pm
26 Luau 6:45pm
27 Call to Order, January, 18 9:00am Paddle Room
28 Cleanup continuation
29 Coffee Break 10:30
30 Cleanup continuation
31 Lunch, 12:00 Voyage Room Restaurant
32 Cleanup continuation
33 Recess, 3:00pm
34 Call to Order, January, 18 7:00pm
35 Cleanup continuation
36 Adjournment
∂09-Jan-89 1607 @polya.Stanford.EDU:dill@amadeus.Stanford.EDU Harry Lewis Talk
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 9 Jan 89 16:07:19 PST
Received: from Amadeus.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA19697; Mon, 9 Jan 89 16:05:29 PDT
Received: by amadeus.Stanford.EDU (5.59/inc-1.0)
id AA08327; Mon, 9 Jan 89 16:04:42 PDT
Date: Mon, 9 Jan 89 16:04:42 PDT
From: dill@amadeus.Stanford.EDU (David Dill)
Message-Id: <8901100004.AA08327@amadeus.Stanford.EDU>
To: lop@polya.stanford.edu
Subject: Harry Lewis Talk
SPECIAL SEMINAR
11:00 AM
Thursday, January 19, 1989
Margaret Jacks 252
This talk should be of interest not only to theoreticians, but
also to those interested in timing in circuits and other systems.
A LOGIC OF CONCRETE TIME INTERVALS
AND
THE ANALYSIS OF CIRCUITS WITH BOUNDED TEMPORAL UNCERTAINTY
Harry R. Lewis
Gordon McKay Professor of Computer Science
Harvard University
As the complexity of circuit designs continues to increase, the utility
of simulation and debugging tools to validate those designs continues
to decrease. Almost no tools are available that provide formal verification
of even small asynchronous circuit designs, under models of circuit
function comparable to those used by engineers when doing designs.
We propose a model of asynchronous boolean circuits (with
feedback) in which the response time of an individual logical element
is known within concrete time bounds (e.g. ``the rise time is between
110ns and 140ns''). We develop a theory of nondeterministic finite-state
machines that captures exactly the range of possible logical and temporal
behaviors of such devices. These abstract machines are in turn the natural
models for formulas of a temporal logic with modalities for assertions
about concrete times (e.g. ``if A can become true within 200ns, then
necessarily B will become true within 50ns thereafter'').
This logic (or syntactically convenient extensions of it) can be used
for formally specifying circuit functionality. Such specifications
can be mechanically checked against proposed designs that use
subtle coincidences of timing in order to work (or fail).
We will mention some possible extensions of the circuit model, as
well as some possible applications of the logic and its model
theory to the analysis of other systems of asynchronous events.
∂09-Jan-89 1632 @polya.Stanford.EDU:tah@linz MTC Seminar
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 9 Jan 89 16:32:31 PST
Received: from linz.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA21336; Mon, 9 Jan 89 16:31:07 PDT
Received: by linz.stanford.edu (5.59/25-eef) id AA17415; Mon, 9 Jan 89 16:26:11 PDT
Message-Id: <8901100026.AA17415@linz.stanford.edu>
To: lop@polya
Subject: MTC Seminar
Reply-To: tah@cs.stanford.edu
Date: 09 Jan 89 16:26:09 PST (Mon)
From: Tom Henzinger <tah@linz>
There will be no seminar on January 13, because many participants will
be at POPL. We'll continue this quarter Fridays at noon, starting on
January 20. I'll send out a message about topics next week.
-- Tom.
∂09-Jan-89 1705 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Urgent: Invited Lecture
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 9 Jan 89 17:05:46 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA23062; Mon, 9 Jan 89 17:05:04 PDT
Message-Id: <8901100105.AA23062@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Mon, 9 Jan 89 17:05:17 PST
Received: by BYUADMIN (Mailer R2.01A) id 3601; Mon, 09 Jan 89 18:03:19 MST
Date: Mon, 9 Jan 89 15:41:52 EST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Gyorgy Revesz 789-7871 <REVESZ%YKTVMH.BITNET@forsythe.stanford.edu>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
From: Gyorgy Revesz 789-7871 <REVESZ%YKTVMH.BITNET@forsythe.stanford.edu>
Subject: Urgent: Invited Lecture
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
The Programming Languages and Foundations Department of the
IBM T.J. Watson Research Center
Announces the fisrt invited talk in a series of
distinguished lectures on the Semantics of Programming Languages
TITLE: An Ultimate 'Kahn Principle' for Dataflow Sementics.
SPEAKER: Alber Meyer, MIT
DATE: January 26, 1989
LOCATION: IBM T.J. Watson Research Center, Hawthorne, N.Y.
TIME: 3 PM - 4 PM
-----------------------------------------------------------------------
A B S T R A C T
Kahn showed in the mid-70's that dataflow nets whose nodes process inputs
"sequentially" AND "functionally" can be analyzed by fixed-point
reasoning on the domain of data-streams. On the other hand,
Brock-Ackermann observed in the late 70's the ``anomaly'' that for
nondeterministic nodes such as MERGE, the data-stream input-output
behavior of the nodes did not even uniquely determine the behavior
of nets using such nodes.
We report on some notable progress on the mathematical semantics of
dataflow nets made recently by independent groups at Tel Aviv, MIT,
and Cornell.
For example, Kahn's Least-Fixed Point Principle can now be extended
to nets with non-sequential functional nodes, and Brock-Ackermann's
anomaly can be culled from essentially any nonfunctional nodes. This
case study also illustrates the significance of such basic concepts
in programming semantics as compositionality, observational congruence,
and full abstraction.
-----------------------------------------------------------------------
Visitors are welcome. Please, make arrangements in advance by contacting
Gyorgy Revesz at (914) 789-7871
∂09-Jan-89 1712 @polya.Stanford.EDU:ARCEO@Warbucks.AI.SRI.COM SEMINAR - JANUARY 11th (Wednesday)
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 9 Jan 89 17:12:41 PST
Received: from Warbucks.AI.SRI.COM by polya.Stanford.EDU (5.59/25-eef) id AA23583; Mon, 9 Jan 89 17:11:02 PDT
Resent-Message-Id: <8901100111.AA23583@polya.Stanford.EDU>
Return-Path: <ARCEO@Warbucks.AI.SRI.COM>
Date: Fri 6 Jan 89 14:22:47-PST
From: ARCEO@Warbucks.AI.SRI.COM (Dori Arceo)
Subject: SEMINAR - JANUARY 11th (Wednesday)
To: AIC-Staff@Warbucks.AI.SRI.COM, planlunch@Warbucks.AI.SRI.COM,
CSL-Staff@CSL.SRI.COM, BBoard@KL.SRI.COM
Cc: Waldinger@Warbucks.AI.SRI.COM
Message-Id: <600128567.0.ARCEO@WARBUCKS.AI.SRI.COM>
Mail-System-Version: <VAX-MM(229)+TOPSLIB(126)@WARBUCKS.AI.SRI.COM>
Resent-Date: Mon 9 Jan 89 17:08:04-PST
Resent-From: WALDINGER@Warbucks.AI.SRI.COM (Richard Waldinger)
Resent-To: lop@POLYA.STANFORD.EDU
TITLE: Refinement of Data
SPEAKER: Prof. Ralph Back
Department of Computer Science
Abo Akademi
Turku, Finland
TIME: 4:15 Wednesday, January 11
PLACE: AI Center Conference Room
EJ 228
Building E, SRI International
ABSTRACT:
The refinement calculus gives a formal basis for the stepwise-refinement
method of program construction. It is an extension of the weakest-precondition
calculus of Dijkstra, and is based on a relation of refinement between program
statements. This relation is a partial order when the semantics of statements
is identified with their predicate transformers. The talk describes how to
handle data refinement within this calculus, i.e., how to change the data
representation within a program in a systematic manner by a sequence of
correctness-preserving program transformations. The method proposed can also
handle nondeterministic abstraction functions (cases where a concrete program
state may represent many different abstract states). This is achieved by
introducing statements with an angelic (don't know) nondeterminism, in
addition to the usual demonic (don't care) nondeterminism assumed by Dijkstra.
The resulting specification/programming language is given a game-theoretic
weakest-precondition semantics. The method permits different representations
of a data abstraction to coexist in a program statement, using explicit
representation and abstraction statements to move from one representation to
another.
-------
∂09-Jan-89 2246 misha@polya.Stanford.EDU Next AFLB
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 9 Jan 89 22:46:31 PST
Received: by polya.Stanford.EDU (5.59/25-eef) id AA03687; Mon, 9 Jan 89 22:45:11 PDT
Date: Mon, 9 Jan 89 22:45:11 PDT
From: Michael Kharitonov <misha@polya.Stanford.EDU>
Message-Id: <8901100645.AA03687@polya.Stanford.EDU>
To: aflb-all@polya.Stanford.EDU
Subject: Next AFLB
AFLB is going to be eventful and exciting this quarter.
It looks like in addition to the regular time we will need
an alternative slot. Tuesdays at 4:15 pm seems like a good
choice; if anybody objects to this time, please let me know.
We will kick off with a talk by Don Knuth at the same bat-time
(Thursday, Jan 12, 12:30) and bat-place (MJH 352):
Title: Stable Husbands
(joint work with Rajeev Motwani and Boris Pittel)
Abstract:
Suppose $n$ boys and $n$ girls rank each other at random. We show that any
particular girl has at least $({1\over 2}-\epsilon) \ln n$
different husbands in the set of all Gale/Shapley stable matchings defined
by these rankings, with probability approaching~1 as $n→∞$, if $\epsilon$
is any positive constant. The proof emphasizes general methods that appear
to be useful for the analysis of many other combinatorial algorithms.
∂10-Jan-89 0817 TAJNAI@Score.Stanford.EDU Reminder of Sunrise Club breakfast on Tuesday, 1/17
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 10 Jan 89 08:17:45 PST
Date: Tue 10 Jan 89 08:01:22-PST
From: Carolyn Tajnai <TAJNAI@Score.Stanford.EDU>
Subject: Reminder of Sunrise Club breakfast on Tuesday, 1/17
To: faculty@Score.Stanford.EDU, ras@Score.Stanford.EDU, phd@Score.Stanford.EDU
Message-ID: <12461452196.15.TAJNAI@Score.Stanford.EDU>
TO: Faculty, Research Assistants, and PHD students
FROM: Carolyn Tajnai
RE: Sunrise Meeting, Jan. 17, 1988
The next Sunrise Club meeting will be on Tuesday,
January 17, 1989, same place, same time - Tresidder
Union, Oak Lounge West at 7:30 a.m. The speaker
will be Dr. R. Fabian Pease of the Electrical
Engineering Department whose lecture is titled
"The Impact of Micro-miniaturization on Electronics."
Please R.S.V.P. to Bonnie Hiller (3-3051) or Hiller@Score by Friday, Jan. 13.
Since Monday 1/12 is a holiday, it might be harder to remember a 7:30 a.m.
appointment on Tuesday morning. We would like to have more CSD participation
in the Sunrise Club.
-------
∂10-Jan-89 0905 X3J13-mailer FTP access to compiler issues
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 10 Jan 89 09:05:26 PST
Received: from defun.utah.edu by cs.utah.edu (5.59/utah-2.1-cs)
id AA03597; Tue, 10 Jan 89 10:04:18 MST
Received: by defun.utah.edu (5.59/utah-2.0-leaf)
id AA11488; Tue, 10 Jan 89 10:04:15 MST
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8901101704.AA11488@defun.utah.edu>
Date: Tue, 10 Jan 89 10:04:14 MST
Subject: FTP access to compiler issues
To: x3j13@sail.stanford.edu
Copies of the pending issues from the compiler committee are available
for anonymous FTP from cs.utah.edu (128.110.4.21). Look in directory
pub/cl-compiler/pending.
There are also copies of the issues that were passed at the last meeting
in directory pub/cl-compiler/passed.
-Sandra
-------
∂10-Jan-89 0935 X3J13-mailer **DRAFT** issue COMPILED-FUNCTION-REQUIREMENTS, version 2
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 10 Jan 89 09:34:53 PST
Received: from defun.utah.edu by cs.utah.edu (5.59/utah-2.1-cs)
id AA05135; Tue, 10 Jan 89 10:33:45 MST
Received: by defun.utah.edu (5.59/utah-2.0-leaf)
id AA11507; Tue, 10 Jan 89 10:33:41 MST
Date: Tue, 10 Jan 89 10:33:41 MST
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8901101733.AA11507@defun.utah.edu>
To: x3j13@sail.stanford.edu
Subject: **DRAFT** issue COMPILED-FUNCTION-REQUIREMENTS, version 2
Reply-To: cl-compiler@sail.stanford.edu
Forum: Compiler
Issue: COMPILED-FUNCTION-REQUIREMENTS
References: CLtL p. 32, 76, 112, 143, 438-439
Issue FUNCTION-TYPE (passed)
Issue COMPILER-LET-CONFUSION
Issue EVAL-WHEN-NON-TOP-LEVEL
Issue LOAD-TIME-EVAL
Category: CLARIFICATION
Edit History: V1, 3 Jan 1989 Sandra Loosemore
V2, 10 Jan 1989, Sandra Loosemore (additional proposal)
Status: **DRAFT**
Problem Description:
There is confusion about what functions might be or must be of type
COMPILED-FUNCTION, and what attributes must be true of
COMPILED-FUNCTIONs. Is the distinction between COMPILED-FUNCTIONs and
other functions only one of representation, or can user programs infer
anything about COMPILED-FUNCTIONs? Are implementations required to
distinguish between compiled and non-compiled functions?
CLtL defines a COMPILED-FUNCTION as "a compiled code object". (Issue
FUNCTION-TYPE says only that COMPILED-FUNCTION must be a subtype of
FUNCTION.) Although it is not explicitly stated, CLtL implies that
compiled code must conform to certain rules; in particular, it states
that all macros are expanded at compile time, and specifies different
behavior for the COMPILER-LET and the EVAL-WHEN special forms
depending on whether they are interpreted or compiled.
The description of COMPILE in CLtL says that "a compiled-function object
[is] produced". It is not clear to everyone whether this implies that
COMPILED-FUNCTION-P must be true of such functions. CLtL says nothing
about whether functions defined in files compiled with COMPILE-FILE and
subsequently loaded must be of type COMPILED-FUNCTION.
Proposal COMPILED-FUNCTION-REQUIREMENTS:TIGHTEN:
(1) Clarify that if a function is of type COMPILED-FUNCTION, the
following are guaranteed about the function:
- All macro calls within the function have already been expanded
and will not be expanded again when the function is called.
(See CLtL p. 143.)
- Nested COMPILER-LETs will not bind any variables when the function
is called (CLtL p. 112).
- If the function contains nested EVAL-WHENs, only the LOAD (and not
the EVAL) situation is applicable.
- If the function contains nested LOAD-TIME-VALUE forms, these have
already been pre-evaluated and will not be evaluated again when
the function is called.
(2) Implementations are free to classify all functions as
COMPILED-FUNCTIONs, provided that all functions satisfy the criteria
listed in item (1). It is also permissible for interpreted FUNCTIONs
to satisfy the above criteria but not be distinguished as
COMPILED-FUNCTIONs.
(3) Clarify that COMPILE always produces an object of type
COMPILED-FUNCTION. Clarify that when functions are defined in a
file which is compiled with COMPILE-FILE, and the compiled file is
subsequently LOADed, objects of type COMPILED-FUNCTION result.
Rationale:
This proposal assigns some specific properties to compiled functions.
It also states what many people believe to be the minimum functionality
required of a compiler.
Proposal COMPILED-FUNCTION-REQUIREMENTS:FLUSH:
(1) Remove the type specifier COMPILED-FUNCTION and the predicate
COMPILED-FUNCTION-P from the language.
(2) Clarify that functions produced by COMPILE, or defined in a file
that is compiled with COMPILE-FILE and then LOADed must satisfy
the same requirements listed in section (1) of the previous proposal.
Rationale:
Distinguishing between compiled and non-compiled functions is of
little use to portable programs.
This proposal states what many people believe to be the minimum
functionality required of a compiler.
Current Practice:
It appears that most implementations currently distinguish compiled
versus non-compiled functions on the basis of representation, but it
seems unlikely that any existing implementation would have problems
with the requirements in item (1).
A-Lisp uses the same representation for both compiled and interpreted
functions and currently labels them both as COMPILED-FUNCTION, but the
implementation of COMPILED-FUNCTION-P could be easily fixed to
distinguish "real" compiled functions.
On the TI Explorer, the COMPILE function can return an object of
either type COMPILED-FUNCTION or LEXICAL-CLOSURE, where the latter
consists of two components -- an environment and a COMPILED-FUNCTION.
There is confusion about whether microcoded functions should be
considered compiled or not.
Cost to implementors:
Unknown, but probably small for either proposal. Under proposal
FLUSH, implementations could continue to do whatever they do now with
the COMPILED-FUNCTION type as an extension.
Cost to users:
Probably minimal. Since the COMPILED-FUNCTION type specifier is
currently ill-defined, it is hard to imagine that existing programs
can portably rely on any interpretation of what it means that is
inconsistent with what is presented here.
Benefits:
The specification of what the compiler must do is made more explicit.
Discussion:
The FIXNUM and BIGNUM types were also defined in CLtL solely on the
basis of distinguished representations, and that this definition has
proved inadequate for just about all portable usages of these type
specifiers. Defining COMPILED-FUNCTION solely on the basis of
distinguished representation seems like a bad idea.
David Gray notes:
We make good use of the type COMPILED-FUNCTION in our implementation,
but all of the accessor functions for objects of that type are
non-standard, which makes me wonder if it might be best to just remove
this type from the standard along with BIGNUM.
One possible use of the COMPILED-FUNCTION type is in declarations. Are
there any implementations which have a distinguished representation for
COMPILED-FUNCTIONs, that use type declarations to compile calls to these
functions more efficiently?
∂10-Jan-89 1011 @Score.Stanford.EDU:nilsson@Tenaya.stanford.edu [jadams@note.nsf.gov: CISE Newsletter]
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 10 Jan 89 10:11:52 PST
Received: from Tenaya.stanford.edu by SCORE.STANFORD.EDU with TCP; Tue 10 Jan 89 10:09:08-PST
Received: by Tenaya.stanford.edu (5.59/25-eef) id AA10742; Tue, 10 Jan 89 10:07:11 PDT
Date: Tue, 10 Jan 89 10:07:11 PDT
From: Nils Nilsson <nilsson@Tenaya.stanford.edu>
Message-Id: <8901101807.AA10742@Tenaya.stanford.edu>
To: faculty@score
Subject: [jadams@note.nsf.gov: CISE Newsletter]
fyi:
Return-Path: <@Tenaya.stanford.edu,@Score.Stanford.EDU:jadams@note.nsf.gov>
To: cise.news@note.nsf.gov
Cc: wwulf@note.nsf.gov, cbrownst@note.nsf.gov, jdaen@note.nsf.gov,
bchern@note.nsf.gov, ytchien@note.nsf.gov, tweber@note.nsf.gov,
pfreeman@note.nsf.gov, swolff@note.nsf.gov, hhedges@note.nsf.gov,
bbarnes@note.nsf.gov, hgigley@note.nsf.gov, jlehmann@note.nsf.gov,
mciment@note.nsf.gov, dstaudt@note.nsf.gov, jadams@note.nsf.gov
Subject: CISE Newsletter
Date: Tue, 10 Jan 89 07:51:46 -0500
From: "J. Mack Adams" <jadams@note.nsf.gov>
NSF DIRECTORATE FOR
COMPUTER AND INFORMATION SCIENCE AND ENGINEERING (CISE)
NEWSLETTER
January 1989
This is the second CISE newsletter. For those who missed the
first, my intention is to help keep the "CISE community" aware of
developments in the Directorate -- the funding picture, new
initiatives, organizational and personnel changes, etc.
First some new items:
Science and Technology Centers
------------------------------
On Friday, December 2nd, the National Science Board approved 11
Science and Technology Centers, two of which fall into the areas
supported by CISE.
Rice University
Center for Research on Parallel Computation
This project is a multi-institutional, multi-state Center
involving researchers at Rice University, California Institute of
Technology, Argonne National Laboratory and Los Alamos National
Laboratory. The researchers will investigate parallel processing
at all levels including architecture, software and user
interfaces, algorithms and computational mathematics, as well as
applications in many significant areas. The Center Director will
be Ken Kennedy.
Rutgers University
Center for Discrete Mathematics and Theoretical Computer Science
Rutgers, in cooperation with Princeton University, AT&T Bell
Laboratories and Bell Communication Research, will establish a
Center wherein mathematicians and theoretical computer scientists
can share facilities to advance their own disciplines, but may
also ultimately contribute to progress in telecommunications,
transportation and computer design and manufacture. The Center
Director will be Daniel Gorenstein.
The Budget
----------
Since the last newsletter, the FY89 budget has become firm at
about $152 million (this includes 5.9 million for the two STC's),
up from $123 million in FY88. Of this, $84.4 million supports the
research activities of CISE, and is an increase of $11.2 million,
or 15.3%. $67.7 million supports the service activities of CISE (the
supercomputer centers and NSFNET), and is an increase of $17
million or 33.5%.
The large increase in the service component of CISE is related to
two things: (1) we will finally almost meet the cooperative
agreement levels at the supercomputer centers, and (2) NSFNET is
rapidly expanding as well as providing improved T1 (1.5 megabit)
service. The increase in the research budget, while certainly not
as large as we'd like it to be, was one of the highest percentage
increases in the Foundation.
Software Capitalization:
------------------------
CISE is concerned that academic researchers, especially in the
software research area, are under-capitalized -- NOT so much in
hardware, but by not having state-of-the-art software to support
their research and by not being able to build on software
produced on other research projects. To address this issue, I
have made available a modest amount of extra funds for use this
year in the various programs in CISE.
This money, to be matched by funds from the programs, is intended
to (1) fund purchase of off-the-shelf software packages, (2) help
support the distribution, maintenance, and evolution of software
that has resulted from prior research, and (3) provide for the
development of special-purpose software that will be of use to
one of our research communities. It is intended that NSF funds
will be augmented by industrial or university support and/or by
cost-of-distribution fees.
Details on proposals for software capitalization can be obtained
from the individual CISE program directors.
A few items from last time:
--------------------------
(1) NSF Staff Positions: If you or any of your colleagues are
interested in a temporary position, please contact me or my
staff. The following openings are anticipated:
Division Director for the Computer and Computation Division (CCR)
Program Directors in CCR for Computation Theory
and for Software Engineering
Program Director in OCDA for CISE Institutional Infrastructure
Program Directors in MIPS for Systems Architecture
and for Systems Prototyping & Fabrication
Program Director in ASC for Supercomputer Centers
(2) CISE Colloquium Series: If you would like to volunteer to
be a speaker in our 1989 fall colloquium series, please contact:
Y. T. Chien 202-357-9572 ytchien@note.nsf.gov
(3) Let me know if there are other things that you'd like to see
in this newsletter. I prefer to keep it short and informal, but
aside from that, anything's fair game. Distribution is primarily
by electronic mail, so if you get this by ordinary mail, please
send me your email address.
Bill Wulf
Assistant Director, CISE
wwulf@note.nsf.gov
202-357-7936
Editorial Note: After making a big deal out of doing this
electronically, I managed to foul up my email address,
so please note the correct address above. Also, if your
newsletter arrives in a garbled form due to the use of characters
that are incompatible with your host system, please let us know.
=================================================================
DIVISIONAL NEWS
Division of
Advanced Scientific Computing (ASC)
------------------------------------------------------------
Supercomputer Center News
Cornell Theory Center
A second IBM 3090/600VF was installed in early October 1988. This
six-processor supercomputer will be linked at high speed with
Cornell's first 3090/600 to experiment in clustering
supercomputers to provide 12-way parallelism.
John von Neumann Center
In late January 1989, the Center will install its second ETA10
liquid nitrogen cooled supercomputer, an eight processor machine
with 4 million words of local memory per processor, and a shared
memory of 256 million words. The new machine will join a similar
four processor ETA10 which has been available to researchers
since April 1988.
National Center for Supercomputing Applications - U. of Illinois
In November of 1988, NCSA installed its second CRAY
supercomputer, a Cray 2 with four processors and 128 million
words of main memory. This machine will complement the center's
first supercomputer, a Cray XMP48. Also, the center now has a
fifth industrial partner, FMC Corporation, bringing industrial
contributions at the centers to nearly $5M per year.
Pittsburgh Supercomputing Center
In early January 1989, PSC installed a new supercomputer, a Cray
YMP8/32. This is the first YMP delivered outside of a national
laboratory, and the first available to the general academic
community. It is expected to be 2-3 times as powerful as the Cray
XMP/48 which it replaces.
San Diego Supercomputer Center
The State of California has recently approved a grant of $2M
per year for three years to the SDSC to support the development
of an advanced computer graphics center. In combination with its
Cray XMP/48 supercomputer and SCS40 and Supertek mini-
supercomputers, the SDSC is expected to have one of the most
powerful and complete graphics facilities in the world.
------------------------------------------------------------
Personnel News
Dr. Thomas Weber has been appointed Division Director for the Division
of Advanced Scientific Computing. Dr. Weber came to DASC from the
the NSF Chemistry Division where he was Program Director for
Theoretical and Computational Chemistry. Dr. Weber previously was
a long term employee at the AT&T Bell Laboratories, where had strong
research interests in the use of advanced supercomputing.
Dr. Nathaniel Macon has been appointed Program Director for the New
Technologies Program. Dr. Macon came to DASC from the Division of
Computer and Computation Research where he served as Acting Program
Director for Software Engineering and Program Director for
Software Systems.
------------------------------------------------------------
ASC Advisory Panel Meeting Dates
April 1989 at NSF (exact dates not yet available)
===============================================================
Division of
Computer and Computation Research (CCR)
---------------------------------------------------------------
Annual Reports
Annual reports on CCR grants should be a simple statement of no
more than 10 pages, but may be much shorter. They should list
completing students (MS and PhD) including thesis titles and
current position (if known), citations (but not copies) of all
publications and tech reports, patents applied for,
undergraduates involved in project, talks given, and software
distributed; a one to two page narrative should be included that
describes the scientific progress made and the primary focus for
the coming year; especially noteworthy scientific achivements
should be separately described in a form that will facilitate NSF
using the information for internal purposes (i.e. a short
description). Requested budget changes should be clearly stated
and justified.
----------------------------------------------------------------
CCR Advisory Committee Meeting Dates
May 4 & 5, 1989
=================================================================
Division of
Information, Robotics and Intelligent Systems (IRIS)
----------------------------------------------------------------
IRIS Advisory Committee Meeting Dates
Spring, 1989 at NSF (exact dates to be determined)
=================================================================
Division of
Microelectronic Information Processing Systems (MIPS)
----------------------------------------------------------------
Personnel News
Alfred Susskind, Program Director for Systems Prototyping and
Fabrication, passed away last month. He will be sorely missed by
his colleagues within the Foundation and his associates outside
the Foundation.
Dr. P Ramamoorthy was appointed Program Director of the Circuits
and Signal Processing Program.
----------------------------------------------------------------
MIPS Advisory Committee Meeting Dates
January 30 and 31, 1989
=================================================================
Division of
Networking and Communications Research and Infrastructure (NCRI)
-----------------------------------------------------------
Program Announcement
Announcements for the Networking and Communications Research
Program are available. Deadlines for submission of proposals
are Dec. 1, 1988 and May 1, 1989. For announcements contact:
Darleen Fisher 202-357-9717 dfisher@note.nsf.gov
-----------------------------------------------------------
NCRI Advisory Panel Meeting Dates
Spring, 1989 (exact dates to be determined)
=================================================================
Office of
Cross-Disciplinary Activities (CDA)
-----------------------------------------------------------
Program Announcements
Announcements for the Institutional Infrastructure - Small
Scale (IISS) and Institutional Infrastructure - Minority
Institutions (IIMI) expansions of the regular Institutional
Infrastructure Program are available. Deadlines are
May 1, 1989 for the IISS, April 1, 1989 for the IIMI five
year awards, and February 1, 1989 for the IIMI one year
planning grants. For information contact:
J. Mack Adams 202-357-7349 jadams@note.nsf.gov
=================================================================
GENERAL ITEMS
-----------------------------------------------------------
Program Announcements
The new brochure for the 1989 Research Initiation Award program
is available. The guidelines are basically the same as for 1988
with the added provisions of only one proposal from an
investigator and only one investigator per proposal. The
deadline for submission of proposals is January 15, 1989.
The new announcement for the Instrumentation and Laboratory
Improvement Program is now available. For information contact
the Office of Undergraduate Science, Engineering, and
Mathematics Education, 202-357-7051.
---------------------------------------------------------------
REU
Research Experiences for Undergraduates (REU) Program awards
are made in two forms: autonomous awards (REU Sites) and
supplements to ongoing NSF research grants or contracts (REU
Supplements). Proposals for REU Sites are due no later than
October 10 annually, whereas proposals for REU Supplements will
be accepted at any time but should be submitted as early in the
fiscal year as possible. Inquiries about REU Sites may be
directed to CDA, 202-357-7349, and inquiries about REU
Supplements may be directed to the relevant NSF research program.
-----------------------------------------------------------------
Target Dates and Deadlines
In view of the many inquiries and frequent misunderstanding of
the terms "deadlines" and "target dates", an explanation may be
helpful. Deadlines are absolute, and proposals to programs with
deadlines must be in by the specified date or they will not be
considered. Target dates are guidelines and not absolute
requirements. For example, many programs will accept proposals
at any time, but suggest a target date near the beginning of the
fiscal year.
-----------------------------------------------------------------
Continuation Grants and Progress Reports
NSF has a new policy designed to reduce paperwork. The
Foundation will no longer require grantees to submit formal
requests and budgets to initiate continued support of grants
planned for incremental funding. Provided satisfactory
scientific progress is evidenced in the required annual progress
report and funds are available, NSF will award the annual
increment at the level indicated in the original grant letter
without a formal request. In order to obtain a committed funding
increment and ensure continuity of funding, the required progress
report must be forwarded to the cognizant program officer at
least 3 months prior to the expiration of the current support
period. NSF will require formal requests and budgets if specific
incremental amounts are not specified in the grant letter, or
where there are other special conditions in the grant. See NSF
Grant Policy Manual, Section 253 for details of the new policy.
-----------------------------------------------------------------
Educational Supplements to CISE Research Grants
We are planning an experimental program of Educational
Supplements to existing CISE research grants. Please be on the
look out for a dear colleague letter containing the details.
=================================================================
End of Newsletter
∂10-Jan-89 1104 SLOAN@Score.Stanford.EDU Fax Machine
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 10 Jan 89 11:04:05 PST
Date: Tue 10 Jan 89 11:01:30-PST
From: Yvette Sloan <SLOAN@Score.Stanford.EDU>
Subject: Fax Machine
To: Faculty@Score.Stanford.EDU, Staff@Score.Stanford.EDU
Message-ID: <12461484987.25.SLOAN@Score.Stanford.EDU>
The Fax machine has been installed in the xerox room on the second floor.
The telephone number for the FAX line is (415) 725-7411.
The machine is operable, however, training on how to use it will not take
place until Thursday or Friday of this week. If you don't have experience
using one of these things, it might be best if you don't try sending anything
until some of us have had the proper training.
Happy faxing!
--Yvette
-------
∂10-Jan-89 1214 debra@russell.Stanford.EDU REMINDER
Received: from russell.Stanford.EDU by SAIL.Stanford.EDU with TCP; 10 Jan 89 12:14:50 PST
Received: from localhost by russell.Stanford.EDU (4.0/inc-1.0)
id AA09913; Tue, 10 Jan 89 12:16:24 PST
Message-Id: <8901102016.AA09913@russell.Stanford.EDU>
To: evesem@russell.Stanford.EDU
Cc: kuder@russell.Stanford.EDU, debra@russell.Stanford.EDU
Subject: REMINDER
Date: Tue, 10 Jan 89 12:16:22 PST
From: Debra Alty <debra@russell.Stanford.EDU>
REMINDER
The next EVENING SEMINAR will be Wednesday, January 11th @ 7:30pm in
the CSLI Cordura Conference Room.
Professor Jon Barwise, Philosphy Department, will be leading this
evening's discussion.
The following will be served:
Crab spread Cognac
Fruit Wine
Cheese Sparkling Waters
Crackers Coffee
Dessert Tea
Debra
∂10-Jan-89 1238 X3J13-mailer summary of open cl-compiler issues
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 10 Jan 89 12:38:10 PST
Received: from defun.utah.edu by cs.utah.edu (5.59/utah-2.1-cs)
id AA13596; Tue, 10 Jan 89 13:36:57 MST
Received: by defun.utah.edu (5.59/utah-2.0-leaf)
id AA11651; Tue, 10 Jan 89 13:36:53 MST
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8901102036.AA11651@defun.utah.edu>
Date: Tue, 10 Jan 89 13:36:50 MST
Subject: summary of open cl-compiler issues
To: x3j13@sail.stanford.edu
Here is a complete list of all open cl-compiler issues, as of today
(10 Jan 1989).
Non-draft issues distributed prior to January meeting:
ALLOW-LOCAL-INLINE (v4)
Interpretation of INLINE/NOTINLINE declarations.
COMPILE-ENVIRONMENT-CONSISTENCY (v3)
What kinds of things can/must the compiler "wire in" to the code
it compiles?
DEFCONSTANT-SPECIAL (v3)
Does DEFCONSTANT proclaim the variable SPECIAL?
LOAD-TIME-EVAL (v8)
Add a new special form similar to what #, does.
SHARP-COMMA-CONFUSION (v2)
Remove the #, read macro.
COMPILE-FILE-HANDLING-OF-TOP-LEVEL-FORMS (v8)
Clarify compile-time side effects of various defining macros.
CONSTANT-MODIFICATION (v2)
It's an error to destructively modify quoted constants.
Draft issues distributed prior to January meeting:
COMPILER-DIAGNOSTICS (v8)
Clarify status and handling of errors and warnings signalled during
compilation.
COMPILER-VERBOSITY (v5)
Mechanisms for controlling progress messages issued by the compiler.
CONSTANT-COMPILABLE-TYPES (v5)
What types of objects can appear as quoted or self-evaluating constants
in compiled code?
CONSTANT-CIRCULAR-COMPILATION (v5)
Must circular or recursive objects be compiled correctly? Must the
compiler preserve sharing of substructures?
CONSTANT-COLLAPSING (v5)
Should the compiler be allowed to "collapse" or coalesce constants
that satisfy a more general equivalence relationship than EQUAL?
QUOTE-MAY-COPY (v4)
May COMPILE and EVAL construct equivalent copies of quoted or
self-evaluating constants, or must constants share structure with
the source code for the program? Do the constraints on what objects
are valid constants also apply to COMPILE and EVAL, or only to
COMPILE-FILE?
EVAL-WHEN-NON-TOP-LEVEL (v4)
What does EVAL-WHEN mean when it appears in non-top-level locations?
DEFINING-MACROS-NON-TOP-LEVEL (v7)
Are defining macros such as DEFUN meaningful in non-top-level locations?
COMPILED-FUNCTION-REQUIREMENTS (v2)
What does the COMPILED-FUNCTION type imply? Do COMPILE and
COMPILE-FILE construct COMPILED-FUNCTIONs?
Other issues under discussion but not yet distributed:
COMPILER-LET-CONFUSION (v5)
The description of COMPILER-LET in CLtL is broken -- should we fix
it or eliminate it entirely?
MACRO-ENVIRONMENT-EXTENT (v1)
Do environment objects received as the &ENVIRONMENT argument to a
macro have dynamic or indefinite extent?
MACRO-ENVIRONMENT-CREATOR (v1)
How can code-walkers add the macro definitions in a MACROLET to
an environment object suitable for passing to MACROEXPAND?
DEFCONSTANT-NOT-WIRED (v5)
Add a way to declare a constant like DEFCONSTANT, but without giving
the compiler permission to "wire in" the value into compiled code.
Issues where proposals have been submitted but not followed up on:
CONSTANT-ARRAY-ATTRIBUTES
What attributes of constant arrays are preserved by compilation?
Probably subsumed by CONSTANT-COMPILABLE-TYPES.
COMPILE-FILE-ENVIRONMENT
Clarify that macro environment objects contain information about
whether it was built by the compiler or interpreter.
Superseded by issue SYNTACTIC-ENVIRONMENT-ACCESS, unless that issue
has died.
DEFCONSTANT-VALUE
When is the value form to DEFCONSTANT evaluated?
Subsumed by issue COMPILE-FILE-HANDLING-OF-TOP-LEVEL-FORMS.
DEFINE-OPTIMIZER
Provide a macro-like way of specifying source-to-source transformations.
Waiting for revisions (Pitman)
FILE-COMPILATION
same issue as CONSTANT-COMPILABLE-TYPES?
PROCLAIM-ETC-IN-COMPILE-FILE
Are top-level calls to PROCLAIM handled specially by the compiler?
Waiting for resolution of related cleanup issues (DEFPACKAGE,
IN-PACKAGE-FUNCTIONALITY)
SYNTACTIC-ENVIRONMENT-ACCESS
Provide accessors and constructors for lexical environment objects.
Waiting for new writeup (Benson)
WITH-COMPILATION-UNIT
Provide a way to compile a group of files as a unit for the purposes
of error messages.
Waiting for revisions to existing proposal (Pitman)
-------
∂10-Jan-89 1307 barwise@russell.Stanford.EDU Interns
Received: from russell.Stanford.EDU by SAIL.Stanford.EDU with TCP; 10 Jan 89 13:07:30 PST
Received: from localhost by russell.Stanford.EDU (4.0/inc-1.0)
id AA10232; Tue, 10 Jan 89 13:06:57 PST
Message-Id: <8901102106.AA10232@russell.Stanford.EDU>
To: ssp-faculty@russell.Stanford.EDU
Subject: Interns
Date: Tue, 10 Jan 89 13:06:54 PST
From: Jon Barwise <barwise@russell.Stanford.EDU>
Dear Faculty,
Below is an announcement of the SSP Summer Intern program sponsored in
part by CSLI. This year CSLI is providing matching funds (rather than
full funds) to support student researchers on ssp faculty projects.
There will be at most six internships. You will note that the
students are paid 10.15/ hour for 40 hours a week, for 10 weeks, plus
fringe benefits. (I guess I should find out that 1/2 of that total
comes to.)
We are also asking faculty to send Helen short descriptions of research
projects that might fit under this Internship program. We will be
making the formal announcement of the program at the SSP Forum on
the 20th, so please get them in before then. Last summer's program was
such a success, that I expect a lot of student interest this year.
If you have any questions, send Helen or me a message.
Jon
---------
CSLI Summer Internships for SSP Majors
The Center for the Study of Language and Information at Stanford is
pleased to announce its second Summer Internship Program for the
students and faculty of the Symbolic Systems Program. The goal of the
internship program is to promote in students a richer understanding of
the shared interdisciplinary field of the Symbolic Systems Program and
CSLI by supporting student participation in ongoing research projects
in this field.
Description: Student interns work with SSP faculty members assisting
on a research project. Internships are full-time (40 hours a week at
$10.25/ hour) and extend over the ten week period period July 3 -
September 8, 1989. These funds come jointly from CSLI and research
funds of the projects in question. Successful completion of the
internship requires a short written report on the work completed by
the intern or a presentation of the work to the SSP Forum.
Application Materials to include the following: (1) A brief
description of the general research project that the student wishes to
join, including details of the student's proposed role in the project.
(2) A letter of agreement from the proposed faculty supervisor, which
approves the student proposal. (3) A letter of recommendation from a
faculty member who has taught an SSP course completed by the
applicant. (This may be the same letter as in 2, but need not be.)
(4) A copy of student's transcript.
Application Deadline: April 7, 1989
The Symbolic Systems Program office has a list of research projects
and faculty advisors available this summer. Applications to be
submitted to: Symbolic Systems Program, 60:62H, Stanford University,
Stanford CA 94305-2181. For more information contact the program
office at: 723-4091.
∂10-Jan-89 1350 @Score.Stanford.EDU:ungar@self Re: Reminder of Sunrise Club breakfast on Tuesday, 1/17
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 10 Jan 89 13:49:59 PST
Received: from self by SCORE.STANFORD.EDU with TCP; Tue 10 Jan 89 13:44:51-PST
Received: by self (4.0/inc-1.0)
id AA03125; Tue, 10 Jan 89 13:43:13 PST
Date: Tue, 10 Jan 89 13:43:13 PST
From: ungar@self.stanford.edu (David Ungar)
Message-Id: <8901102143.AA03125@self>
To: TAJNAI@Score.Stanford.EDU, faculty@Score.Stanford.EDU,
phd@Score.Stanford.EDU, ras@Score.Stanford.EDU
Subject: Re: Reminder of Sunrise Club breakfast on Tuesday, 1/17
One way to increase participation might be change the meeting time.
David
∂10-Jan-89 1543 X3J13-mailer Issue: APPLYHOOK-ENVIRONMENT (Version 2)
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 10 Jan 89 15:43:41 PST
Received: from Semillon.ms by ArpaGateway.ms ; 10 JAN 89 15:42:31 PST
Date: 10 Jan 89 15:42 PST
From: masinter.pa@Xerox.COM
Subject: Issue: APPLYHOOK-ENVIRONMENT (Version 2)
To: x3j13@sail.stanford.edu
reply-to: cl-cleanup@sail.stanford.edu
line-fold: no
cc: masinter.pa@Xerox.COM
Message-ID: <890110-154231-6930@Xerox>
In addition to the many issues on the ballot, there are
a number of other issues that are in various states of
completion. If we have time, we may be able to consider
some of these.
!
Forum: Cleanup
Issue: APPLYHOOK-ENVIRONMENT
References: APPLYHOOK (CLtL p. 323)
Category: CHANGE
Edit history: Masinter, 6-Jan-89, Version 1
Masinter, 10-Jan-89, Version 2
Problem description:
The function APPLYHOOK is documented to take an optional environment
argument. CLtL says "Furthermore, the env argument is used as the lexical
environment for the operation; env defaults to the null environment."
However, there is no way that the lexical environment can effect the way in
which APPLYHOOK processes its arguments; it merely calls the specified
function, and function call is not affected by lexical environments. (The
"function" argument to APPLYHOOK is a function object.)
This has been regularly a source of confusion for programmers encountering
APPLYHOOK.
The comments also apply to functions bound to *APPLYHOOK*, i.e., under the
description of *APPLYHOOK* on p.322, the following
"The non-NIL value of *APPLYHOOK* should be a function that takes
three arguments, a function, a list of arguments and an
environment..."
Proposal (APPLYHOOK-ENVIRONMENT:REMOVE-ENV):
Remove the optional "ENV" argument to APPLYHOOK. Specify
that the non-NIL value of *APPLYHOOK* should be a function that takes
two arguments, a function and a list of arguments.
Rationale:
Removes a very minor wart.
Current practice:
Most implementations accept an extra argument and then ignore it.
Cost to Implementors:
Remove optional ENV argument from APPLYHOOK and any code that passes one to
APPLYHOOK.
Cost to Users:
Remove any ENV argument passed to APPLYHOOK. Fix any *APPLYHOOK*
functions to only take two arguments (or to make the third argument optional.)
Cost of non-adoption:
Continued confusion.
Performance impact:
None
Benefits:
Removes a wart.
Esthetics:
Minor improvement.
Discussion:
This was discussed on the Common Lisp mailing list several years ago, but
slipped through the cracks.
∂10-Jan-89 1555 X3J13-mailer Issue: COMPLEX-ATAN-BRANCH-CUT, (Version 1)
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 10 Jan 89 15:55:49 PST
Received: from Cabernet.ms by ArpaGateway.ms ; 10 JAN 89 15:53:55 PST
Date: 10 Jan 89 15:53 PST
Sender: masinter.pa@Xerox.COM
Subject: Issue: COMPLEX-ATAN-BRANCH-CUT, (Version 1)
To: X3J13@Sail.Stanford.Edu
Reply-to: cl-cleanup@sail.stanford.edu
From: cl-cleanup@sail.stanford.edu
cc: masinter.pa@Xerox.COM
line-fold: No
Message-ID: <890110-155355-6963@Xerox>
!
Forum: Cleanup
Issue: COMPLEX-ATAN-BRANCH-CUT
References: CLtL p.208, 212
Related issues: IEEE-ATAN-BRANCH-CUT
Category: CHANGE
Edit history: Version 1, 13-Dec-88, Steele
Problem description:
The formula that defines ATAN results in a branch cut that is at
variance with the recommendations of Prof. W. Kahan and with the
implementations of that function in many computing systems and
calculators.
Proposal (COMPLEX-ATAN-BRANCH-CUT:TWEAK):
Replace the formula
arctan z = - i log ((1+iz) sqrt (1/(1+z↑2)))
with the formula
arctan z = (log (1+iz) - log (1-iz)) / (2i)
This leaves the branch cuts pretty much in place; the only change is
that the upper branch cut (on the positive imaginary axis above i)
is continuous with quadrant I, where the old formula has it continuous
with quadrant II.
Examples:
(atan #c(0 2)) => #c(-1.57... 0.549...) ;Current
(atan #c(0 2)) => #c(1.57... -0.549...) ;Proposed
Note: 1.57... = pi/2, and 0.549... = (log 3)/2.
Rationale:
Compatibility with what seems to be becoming standard practice.
Current practice:
(atan #c(0 2)) => #c(-1.57... 0.549...) ;Symbolics CL
(atan #c(0 2)) => #c(-1.57... 0.549...) ;Allegro CL 1.1 (Macintosh)
(atan #c(0 2)) => #c(-1.57... 0.549...) ;Sun-4 CL 2.1.3 of 10-Nov-88
(atan #c(0 2)) => #c(1.57... -0.549...) ;Sun CL 2.0.3 of 30-Jun-87
(atan #c(0 2)) => #c(1.57... 0.549...) ;KCL of 3-Jun-87
Note that in KCL the upper branch cut is thus continuous with
quadrant I, but its lower branch cut is continuous with quadrant III!
Cost to Implementors:
ATAN must be rewritten. It is not a very difficult fix.
Cost to Users:
It is barely conceivable that some user code could depend on this.
Note that the proposed change invalidates the identities
arctan i z = i arctanh z
and arctanh i z = i arctan z
on the upper branch cut.
The compatibility note on p. 210 of CLtL gave users fair warning that
a change of this kind might be adopted.
Cost of non-adoption:
Incompatibility with HP calculators.
Benefits:
Numerical analystsmay find the new definition easier to use.
Esthetics:
A toss-up, except to those who care.
Discussion:
Steele has sent a letter to W. Kahan at Berkeley to get any last
comments he may have on the matter.
Paul Penfield of MIT, after whose article the Common Lisp branch
cuts were originally patterned, endorses this change.
∂10-Jan-89 1710 X3J13-mailer Issue: DEFSTRUCT-ACCESS-FUNCTIONS-INLINE, (Version 2)
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 10 Jan 89 17:09:52 PST
Received: from Cabernet.ms by ArpaGateway.ms ; 10 JAN 89 17:08:39 PST
Date: 10 Jan 89 17:08 PST
Sender: masinter.pa@Xerox.COM
Forum: Cleanup
Subject: Issue: DEFSTRUCT-ACCESS-FUNCTIONS-INLINE, (Version 2)
To: X3J13@Sail.Stanford.Edu
Reply-to: cl-cleanup@sail.stanford.edu
From: cl-cleanup@sail.stanford.edu
cc: masinter.pa@Xerox.COM
line-fold: No
Message-ID: <890110-170839-7158@Xerox>
!
Issue: DEFSTRUCT-ACCESS-FUNCTIONS-INLINE
References: DEFSTRUCT (p. 308)
Category: CHANGE
Edit history: 5-Oct-88, Version 1 by Chapman
6-Jan-89, Version 2 by Masinter
Problem Description:
It is left up to the implementation whether or not the DEFSTRUCT access
function is declared inline. Thus, some programmers write:
(PROCLAIM '(INLINE FOO-A FOO-B FOO-C))
(DEFSTRUCT FOO A B C)
in portable code in case the code is run in an implementation where
the INLINE proclaimation is meaningful but not the default for
DEFSTRUCT accessors.
Proposal (DEFSTRUCT-ACCESS-FUNCTIONS-INLINE:YES)
Make it mandatory that implementations declare access functions inline.
Of course the declaration may or may not mean anything within the
particular implementation.
Rationale:
This requirement resolves user ambiguity.
Current Practice:
We've not surveyed many implementations, but apparently they
differ as to whether INLINE for defstruct accessors is the default.
Cost to implementors:
Minimal.
Cost to users:
Minimal.
Benefits:
This clarification will give users insurance that the inline declaration
has been made for the access function.
Aesthetics:
Specified is simpler than not-specified.
Performance Impact:
Small. Some programs might have different size/space characteristics.
Discussion:
We know of no implementation where such automatic inlining would
be inappropriate, even in cases where INLINE is recognized. Certainly
implementations are free to ignore INLINE proclaimations even
selectively, i.e., ignore INLINE proclaimations only for DEFSTRUCT
accessors. The major impact of this proposal is just to make it clear
that a separate (PROCLAIM '(INLINE ...)) is not necessary.
∂10-Jan-89 1836 @Score.Stanford.EDU:nilsson@Tenaya.stanford.edu [jadams@note.nsf.gov: CISE Newsletter]
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 10 Jan 89 18:36:27 PST
Received: from Tenaya.stanford.edu by SCORE.STANFORD.EDU with TCP; Tue 10 Jan 89 18:33:25-PST
Received: by Tenaya.stanford.edu (5.59/25-eef) id AA10742; Tue, 10 Jan 89 10:07:11 PDT
Date: Tue, 10 Jan 89 10:07:11 PDT
From: Nils Nilsson <nilsson@Tenaya.stanford.edu>
Message-Id: <8901101807.AA10742@Tenaya.stanford.edu>
To: faculty@score
Subject: [jadams@note.nsf.gov: CISE Newsletter]
fyi:
Return-Path: <@Tenaya.stanford.edu,@Score.Stanford.EDU:jadams@note.nsf.gov>
To: cise.news@note.nsf.gov
Cc: wwulf@note.nsf.gov, cbrownst@note.nsf.gov, jdaen@note.nsf.gov,
bchern@note.nsf.gov, ytchien@note.nsf.gov, tweber@note.nsf.gov,
pfreeman@note.nsf.gov, swolff@note.nsf.gov, hhedges@note.nsf.gov,
bbarnes@note.nsf.gov, hgigley@note.nsf.gov, jlehmann@note.nsf.gov,
mciment@note.nsf.gov, dstaudt@note.nsf.gov, jadams@note.nsf.gov
Subject: CISE Newsletter
Date: Tue, 10 Jan 89 07:51:46 -0500
From: "J. Mack Adams" <jadams@note.nsf.gov>
NSF DIRECTORATE FOR
COMPUTER AND INFORMATION SCIENCE AND ENGINEERING (CISE)
NEWSLETTER
January 1989
This is the second CISE newsletter. For those who missed the
first, my intention is to help keep the "CISE community" aware of
developments in the Directorate -- the funding picture, new
initiatives, organizational and personnel changes, etc.
First some new items:
Science and Technology Centers
------------------------------
On Friday, December 2nd, the National Science Board approved 11
Science and Technology Centers, two of which fall into the areas
supported by CISE.
Rice University
Center for Research on Parallel Computation
This project is a multi-institutional, multi-state Center
involving researchers at Rice University, California Institute of
Technology, Argonne National Laboratory and Los Alamos National
Laboratory. The researchers will investigate parallel processing
at all levels including architecture, software and user
interfaces, algorithms and computational mathematics, as well as
applications in many significant areas. The Center Director will
be Ken Kennedy.
Rutgers University
Center for Discrete Mathematics and Theoretical Computer Science
Rutgers, in cooperation with Princeton University, AT&T Bell
Laboratories and Bell Communication Research, will establish a
Center wherein mathematicians and theoretical computer scientists
can share facilities to advance their own disciplines, but may
also ultimately contribute to progress in telecommunications,
transportation and computer design and manufacture. The Center
Director will be Daniel Gorenstein.
The Budget
----------
Since the last newsletter, the FY89 budget has become firm at
about $152 million (this includes 5.9 million for the two STC's),
up from $123 million in FY88. Of this, $84.4 million supports the
research activities of CISE, and is an increase of $11.2 million,
or 15.3%. $67.7 million supports the service activities of CISE (the
supercomputer centers and NSFNET), and is an increase of $17
million or 33.5%.
The large increase in the service component of CISE is related to
two things: (1) we will finally almost meet the cooperative
agreement levels at the supercomputer centers, and (2) NSFNET is
rapidly expanding as well as providing improved T1 (1.5 megabit)
service. The increase in the research budget, while certainly not
as large as we'd like it to be, was one of the highest percentage
increases in the Foundation.
Software Capitalization:
------------------------
CISE is concerned that academic researchers, especially in the
software research area, are under-capitalized -- NOT so much in
hardware, but by not having state-of-the-art software to support
their research and by not being able to build on software
produced on other research projects. To address this issue, I
have made available a modest amount of extra funds for use this
year in the various programs in CISE.
This money, to be matched by funds from the programs, is intended
to (1) fund purchase of off-the-shelf software packages, (2) help
support the distribution, maintenance, and evolution of software
that has resulted from prior research, and (3) provide for the
development of special-purpose software that will be of use to
one of our research communities. It is intended that NSF funds
will be augmented by industrial or university support and/or by
cost-of-distribution fees.
Details on proposals for software capitalization can be obtained
from the individual CISE program directors.
A few items from last time:
--------------------------
(1) NSF Staff Positions: If you or any of your colleagues are
interested in a temporary position, please contact me or my
staff. The following openings are anticipated:
Division Director for the Computer and Computation Division (CCR)
Program Directors in CCR for Computation Theory
and for Software Engineering
Program Director in OCDA for CISE Institutional Infrastructure
Program Directors in MIPS for Systems Architecture
and for Systems Prototyping & Fabrication
Program Director in ASC for Supercomputer Centers
(2) CISE Colloquium Series: If you would like to volunteer to
be a speaker in our 1989 fall colloquium series, please contact:
Y. T. Chien 202-357-9572 ytchien@note.nsf.gov
(3) Let me know if there are other things that you'd like to see
in this newsletter. I prefer to keep it short and informal, but
aside from that, anything's fair game. Distribution is primarily
by electronic mail, so if you get this by ordinary mail, please
send me your email address.
Bill Wulf
Assistant Director, CISE
wwulf@note.nsf.gov
202-357-7936
Editorial Note: After making a big deal out of doing this
electronically, I managed to foul up my email address,
so please note the correct address above. Also, if your
newsletter arrives in a garbled form due to the use of characters
that are incompatible with your host system, please let us know.
=================================================================
DIVISIONAL NEWS
Division of
Advanced Scientific Computing (ASC)
------------------------------------------------------------
Supercomputer Center News
Cornell Theory Center
A second IBM 3090/600VF was installed in early October 1988. This
six-processor supercomputer will be linked at high speed with
Cornell's first 3090/600 to experiment in clustering
supercomputers to provide 12-way parallelism.
John von Neumann Center
In late January 1989, the Center will install its second ETA10
liquid nitrogen cooled supercomputer, an eight processor machine
with 4 million words of local memory per processor, and a shared
memory of 256 million words. The new machine will join a similar
four processor ETA10 which has been available to researchers
since April 1988.
National Center for Supercomputing Applications - U. of Illinois
In November of 1988, NCSA installed its second CRAY
supercomputer, a Cray 2 with four processors and 128 million
words of main memory. This machine will complement the center's
first supercomputer, a Cray XMP48. Also, the center now has a
fifth industrial partner, FMC Corporation, bringing industrial
contributions at the centers to nearly $5M per year.
Pittsburgh Supercomputing Center
In early January 1989, PSC installed a new supercomputer, a Cray
YMP8/32. This is the first YMP delivered outside of a national
laboratory, and the first available to the general academic
community. It is expected to be 2-3 times as powerful as the Cray
XMP/48 which it replaces.
San Diego Supercomputer Center
The State of California has recently approved a grant of $2M
per year for three years to the SDSC to support the development
of an advanced computer graphics center. In combination with its
Cray XMP/48 supercomputer and SCS40 and Supertek mini-
supercomputers, the SDSC is expected to have one of the most
powerful and complete graphics facilities in the world.
------------------------------------------------------------
Personnel News
Dr. Thomas Weber has been appointed Division Director for the Division
of Advanced Scientific Computing. Dr. Weber came to DASC from the
the NSF Chemistry Division where he was Program Director for
Theoretical and Computational Chemistry. Dr. Weber previously was
a long term employee at the AT&T Bell Laboratories, where had strong
research interests in the use of advanced supercomputing.
Dr. Nathaniel Macon has been appointed Program Director for the New
Technologies Program. Dr. Macon came to DASC from the Division of
Computer and Computation Research where he served as Acting Program
Director for Software Engineering and Program Director for
Software Systems.
------------------------------------------------------------
ASC Advisory Panel Meeting Dates
April 1989 at NSF (exact dates not yet available)
===============================================================
Division of
Computer and Computation Research (CCR)
---------------------------------------------------------------
Annual Reports
Annual reports on CCR grants should be a simple statement of no
more than 10 pages, but may be much shorter. They should list
completing students (MS and PhD) including thesis titles and
current position (if known), citations (but not copies) of all
publications and tech reports, patents applied for,
undergraduates involved in project, talks given, and software
distributed; a one to two page narrative should be included that
describes the scientific progress made and the primary focus for
the coming year; especially noteworthy scientific achivements
should be separately described in a form that will facilitate NSF
using the information for internal purposes (i.e. a short
description). Requested budget changes should be clearly stated
and justified.
----------------------------------------------------------------
CCR Advisory Committee Meeting Dates
May 4 & 5, 1989
=================================================================
Division of
Information, Robotics and Intelligent Systems (IRIS)
----------------------------------------------------------------
IRIS Advisory Committee Meeting Dates
Spring, 1989 at NSF (exact dates to be determined)
=================================================================
Division of
Microelectronic Information Processing Systems (MIPS)
----------------------------------------------------------------
Personnel News
Alfred Susskind, Program Director for Systems Prototyping and
Fabrication, passed away last month. He will be sorely missed by
his colleagues within the Foundation and his associates outside
the Foundation.
Dr. P Ramamoorthy was appointed Program Director of the Circuits
and Signal Processing Program.
----------------------------------------------------------------
MIPS Advisory Committee Meeting Dates
January 30 and 31, 1989
=================================================================
Division of
Networking and Communications Research and Infrastructure (NCRI)
-----------------------------------------------------------
Program Announcement
Announcements for the Networking and Communications Research
Program are available. Deadlines for submission of proposals
are Dec. 1, 1988 and May 1, 1989. For announcements contact:
Darleen Fisher 202-357-9717 dfisher@note.nsf.gov
-----------------------------------------------------------
NCRI Advisory Panel Meeting Dates
Spring, 1989 (exact dates to be determined)
=================================================================
Office of
Cross-Disciplinary Activities (CDA)
-----------------------------------------------------------
Program Announcements
Announcements for the Institutional Infrastructure - Small
Scale (IISS) and Institutional Infrastructure - Minority
Institutions (IIMI) expansions of the regular Institutional
Infrastructure Program are available. Deadlines are
May 1, 1989 for the IISS, April 1, 1989 for the IIMI five
year awards, and February 1, 1989 for the IIMI one year
planning grants. For information contact:
J. Mack Adams 202-357-7349 jadams@note.nsf.gov
=================================================================
GENERAL ITEMS
-----------------------------------------------------------
Program Announcements
The new brochure for the 1989 Research Initiation Award program
is available. The guidelines are basically the same as for 1988
with the added provisions of only one proposal from an
investigator and only one investigator per proposal. The
deadline for submission of proposals is January 15, 1989.
The new announcement for the Instrumentation and Laboratory
Improvement Program is now available. For information contact
the Office of Undergraduate Science, Engineering, and
Mathematics Education, 202-357-7051.
---------------------------------------------------------------
REU
Research Experiences for Undergraduates (REU) Program awards
are made in two forms: autonomous awards (REU Sites) and
supplements to ongoing NSF research grants or contracts (REU
Supplements). Proposals for REU Sites are due no later than
October 10 annually, whereas proposals for REU Supplements will
be accepted at any time but should be submitted as early in the
fiscal year as possible. Inquiries about REU Sites may be
directed to CDA, 202-357-7349, and inquiries about REU
Supplements may be directed to the relevant NSF research program.
-----------------------------------------------------------------
Target Dates and Deadlines
In view of the many inquiries and frequent misunderstanding of
the terms "deadlines" and "target dates", an explanation may be
helpful. Deadlines are absolute, and proposals to programs with
deadlines must be in by the specified date or they will not be
considered. Target dates are guidelines and not absolute
requirements. For example, many programs will accept proposals
at any time, but suggest a target date near the beginning of the
fiscal year.
-----------------------------------------------------------------
Continuation Grants and Progress Reports
NSF has a new policy designed to reduce paperwork. The
Foundation will no longer require grantees to submit formal
requests and budgets to initiate continued support of grants
planned for incremental funding. Provided satisfactory
scientific progress is evidenced in the required annual progress
report and funds are available, NSF will award the annual
increment at the level indicated in the original grant letter
without a formal request. In order to obtain a committed funding
increment and ensure continuity of funding, the required progress
report must be forwarded to the cognizant program officer at
least 3 months prior to the expiration of the current support
period. NSF will require formal requests and budgets if specific
incremental amounts are not specified in the grant letter, or
where there are other special conditions in the grant. See NSF
Grant Policy Manual, Section 253 for details of the new policy.
-----------------------------------------------------------------
Educational Supplements to CISE Research Grants
We are planning an experimental program of Educational
Supplements to existing CISE research grants. Please be on the
look out for a dear colleague letter containing the details.
=================================================================
End of Newsletter
∂10-Jan-89 2258 @Score.Stanford.EDU:cheriton@Pescadero.Stanford.EDU Re: [jadams@note.nsf.gov: CISE Newsletter]
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 10 Jan 89 22:58:08 PST
Received: from Pescadero.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Tue 10 Jan 89 22:54:58-PST
Received: by Pescadero.Stanford.EDU (5.59/25-eef) id AA02827; Tue, 10 Jan 89 22:57:49 PDT
Date: Tue, 10 Jan 89 22:57:49 PDT
From: David Cheriton <cheriton@Pescadero.Stanford.EDU>
Message-Id: <8901110657.AA02827@Pescadero.Stanford.EDU>
To: faculty@score, nilsson@Tenaya.stanford.edu
Subject: Re: [jadams@note.nsf.gov: CISE Newsletter]
In-Reply-To: <8901101807.AA10742@Tenaya.stanford.edu> from Nils Nilsson
<nilsson@Tenaya.stanford.edu> on Tue, 10 Jan 89 10:07:11 PDT
The NSF newsletter reads like a victory statement from the physicists.
They have clearly reduced CS to a marketing ploy to drain increasing
amounts of the country's resources into chasing particules of their
imagination which dont even exist with less than 5 levels of subscripts.
The popular opinion seems to be that the military detracts from our
commercial competitiveness, yet even in my narrow little universe
I see it has funded the research that lead to Sun, Silicon Graphics,
MIPS, Protean, etc., etc. I'll shutup when I see something coming out
of these "supercomputer" centers, supercolider other than the discovery
that there must be more useless particles that will cost us even more to find.
I'm sure that the Japanse are very thankful that we are willing to strangel
the applied research in this country to provide them with basic science
so they can concentrate their resources on completely dominating us in
all the major technologies that have any foreseeable payoff.
(flame-off)
∂10-Jan-89 2349 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Urgent: announcement of panel on funding
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 10 Jan 89 23:49:14 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA15190; Tue, 10 Jan 89 23:48:11 PDT
Message-Id: <8901110748.AA15190@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Tue, 10 Jan 89 23:48:15 PST
Received: by BYUADMIN (Mailer R2.01A) id 4000; Wed, 11 Jan 89 00:45:02 MST
Date: Tue, 10 Jan 89 15:47:40 PST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
simons@IBM.COM
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
From: "Barbara B. Simons" <simons@IBM.COM>
Subject: Urgent: announcement of panel on funding
Comments: To: theorynt@vm1.nodak.edu
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
FEDERAL FUNDING OF THE ACADEMIC PHYSICAL SCIENCES
PANELISTS
Prof. Philip Anderson (Nobel Prize)
Physics, Princeton University
Prof. Richard Karp (Turing Award)
Computer science, U.C. Berkeley
Prof. Robert Park
Executive Director, Office of Public Affairs, The American Physical Society
Dr. Burton Richter (Nobel Prize)
Director, SLAC
Dr. Robert M. Rosenzweig
President, Association of American Universities
Prof. William Thurston (Fields Medal)
Mathematics, Princeton University
Moderator: Dr. Barbara Simons
Computer Science, IBM Almaden Research Center
Abstract: Federal funding of science is a major component of science policy.
Which areas are funded, how much funding they receive, which agencies do the
funding, and who makes the decisions are important issues. Fields prosper and
decline according to these decisions. Graduate students' choice of specialty
is influenced by funding. Teaching loads and even tenure decisions can be
affected. Since funding has a profound influence on technology, funding
policy has significant economic repercussions. It also has political
repercussions, as politicians become increasingly involved with the funding
process. Scientific and academic freedom are at issue. Researchers who fear
that their funding may be cut for political reasons, even if the fears are
unfounded, may engage in self-censorship.
What should be national funding priorities?
What has been the effect of the increased emphasis on 'big science' in recent
years?
How have the trends toward mission oriented and defense oriented funding
affected the quality and nature of scientific research?
Is there an imbalance of funding sources for some scientific disciplines, and,
if so, is this a problem?
What impact has science funding policy had on universities, faculty, and
graduate students?
Have government policies with respect to science funding been in the best
interest of science?
Are there ways in which these policies can be improved?
Date: Tuesday Jan. 17, 1989
Time: 8:30 A.M. - 11:30 A.M.
Place: the California East Room of the St. Francis Hotel, San Francisco
Sponsored by: the American Association for the Advancement of Science, the
American Physical Society, and the American Association of Physics Teachers
The panel is a part of several parallel conferences, namely the AAAS, the APS,
and the AAPT. I don't know whether or not one can walk in without having
registered at one of these conferences. It is possible to register at the APS
conference for a single day for $50. There is a student registration fee for
the entire AAAS conference of $50 or $70, for members and non-members
respectively.
∂11-Jan-89 1429 @Score.Stanford.EDU:nilsson@Tenaya.stanford.edu
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 11 Jan 89 12:21:55 PST
Received: from Tenaya.stanford.edu by SCORE.STANFORD.EDU with TCP; Wed 11 Jan 89 12:04:41-PST
Received: by Tenaya.stanford.edu (5.59/25-eef) id AA00245; Wed, 11 Jan 89 12:04:44 PDT
Date: Wed, 11 Jan 89 12:04:44 PDT
From: Nils Nilsson <nilsson@Tenaya.stanford.edu>
Message-Id: <8901112004.AA00245@Tenaya.stanford.edu>
To: phd-prcom@score
Cc: faculty@score
I am encouraged by the discussions and thought now going in to
our PhD program. I believe the step taken by the faculty yesterday,
namely replacing Grey Tuesday by quarterly meetings, deals very well
with the fact that we simply don't have time to consider all of the
students at the Grey Tuesday meetings. My sense is that this change
is non-controversial.
I expect that additional suggestions for changes in the PhD program
will have many pros and cons. As a Department we must make any changes
very carefully---listening to all concerned constituencies. I suggest
the following procedure:
1) Faculty lunch discussion of some of the different points of
view about the PhD program. We are going to be having such a discussion
at our faculty lunch of Jan. 24.
2) Detailed and thorough consideration of various options by the
PhD program committee. During this time, I expect that the program
committee will be keeping the rest of the faculty informed about their
thoughts and will be receiving feedback from the faculty.
3) Preparation by the PhD program committee of a recommendation or
a set of alternative recommendations to be presented to the faculty.
These should be set forth rather formally. If there are differences
of opinion in the committee, then there should be a majority and
a minority report to the faculty. I believe we are dealing with
matters too important to hurry. In particular, I do not think that
the committee report should be prepared hurriedly nor should votes be
taken among the committee members by e-mail (especially, we should not
have a situation in which the committee report is finalized by
any kind of if-I-hear-no-objections-to-the-following-proposal action).
The faculty and future generations of PhD students deserve a more formal
process in this case I think.
4) Final discussions of the formal committee report by the faculty
in a scheduled meeting and a decision by the faculty.
I would rather have us do this right (slowly and carefully) than have
us have to do it over again next year!
-Nils
∂11-Jan-89 1433 X3J13-mailer Another DRAFT Agenda
Received: from lucid.com ([192.26.25.1]) by SAIL.Stanford.EDU with TCP; 11 Jan 89 12:33:01 PST
Received: from challenger ([192.9.200.17]) by heavens-gate.lucid.com id AA03447g; Wed, 11 Jan 89 08:58:23 PST
Received: by challenger id AA02160g; Wed, 11 Jan 89 08:54:16 PST
Date: Wed, 11 Jan 89 08:54:16 PST
From: Jan Zubkoff <jlz@lucid.com>
Message-Id: <8901111654.AA02160@challenger>
To: x3j13@sail.stanford.edu
Subject: Another DRAFT Agenda
After a flurry of mail we have an updated DRAFT Agenda
Monday, January 16
7:30am - ISO discussion, Chart room
We've found copying facilities to be very expensive at hotels. We intend not
to use their facilities. Please mail copies of reports to Liz Anne's
attention at the hotel if you intend to distribute reports to the meeting.
Participants are encouraged to bring copies of reports mailed to them to the
meeting.
X3J13 Committee Meeting Agenda DRAFT
January 16 - 18, 1988
1 Call to Order, January 16, 9:00am Chart Room
2 Opening Remarks and Introductions
- Opening Remarks, Bob Mathis (10 minutes)
- Introduction of attendees
- Future meetings, Jan Zubkoff (5 minutes)
3 Approval of Agenda
4 Approval of Minutes
5 Other Business
6 Chapter 3 CLOS, Gregor Kiczales (1 hour)
7 Coffee Break 10:30
8 Chapter 3 CLOS, Gregor Kiczales (1 hour)
9 LUNCH 12:00 Voyage Room Restaurant
10 Editorial Subcommittee Report, Kathy Chapman (1 hour)
11 Compiler Subcommittee, Sandra Loosemore (2 hours)
12 Recess 3:00
13 Call to Order, 8:00pm
14 Iteration Subcommittee Report, Jonl White (30 minutes) 89-004
15 Other Subcommittee Reports
16 Recess 10:00
17 Call to Order, January 17, 9:00am Chart Room
18 Other Subcommittee Reports
19 Coffee Break 10:30am
20 Cleanup Subcommittee, Larry Masinter
21 Lunch 12:00 Voyage Room Restaurant
22 Cleanup continuation
23 Break 3:00
24 Cleanup continuation
25 Recess 4:30pm
26 Luau 6:45pm
27 Call to Order, January, 18 9:00am Paddle Room
28 Cleanup continuation
29 Coffee Break 10:30
30 Character Subcommittee Report, Thom Linden (1 hour)
31 Lunch, 12:00 Voyage Room Restaurant
32 Cleanup continuation
33 Recess, 3:00pm
34 Call to Order, January, 18 7:00pm
35 Cleanup continuation
36 Adjournment
∂11-Jan-89 1435 @Score.Stanford.EDU:jle@Orange.stanford.edu CS Colloquium
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 11 Jan 89 12:38:29 PST
Received: from Orange.stanford.edu by SCORE.STANFORD.EDU with TCP; Wed 11 Jan 89 09:03:15-PST
Received: by Orange.stanford.edu (5.59/25-eef) id AA00660; Wed, 11 Jan 89 09:03:24 PDT
Date: Wed, 11 Jan 89 09:03:24 PDT
From: Jeffrey Eppinger <jle@Orange.stanford.edu>
Message-Id: <8901111703.AA00660@Orange.stanford.edu>
To: csd-list@score, csd@score
Subject: CS Colloquium
Bernardo Huberman
Xerox Palo Alto Research Center
The Ecology of Computation
Tuesday, January 17, 1989, 4:15pm
Psychology 040
Bernardo Huberman will be the first speaker at this quarter's Computer
Science Colloquium. His abstract is to follow. Dr. Huberman's interests
include theories of computational ecologies and chaos theory.
Please come and initiate this renewed tradition. Refreshments will be
served at 3:45pm in the third floor lounge of Margaret Jacks. If you
would like to meet with Dr. Huberman on Tuesday afternoon, please send
mail to Joyce Chandler (chandler@score).
∂11-Jan-89 1441 @polya.Stanford.EDU:phipps@solitary.Stanford.EDU new meeting time
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 11 Jan 89 12:44:54 PST
Received: from Solitary.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA04425; Wed, 11 Jan 89 11:51:33 PDT
Received: by solitary.Stanford.EDU (5.51/inc-1.01)
id AA04018; Wed, 11 Jan 89 11:50:42 PST
From: Geoff Phipps <phipps@solitary.Stanford.EDU>
Message-Id: <8901111950.AA04018@solitary.Stanford.EDU>
To: nail@polya.stanford.edu
Subject: new meeting time
Date: Wed, 11 Jan 89 11:50:41 PST
I just noticed, it conflicts with the CSD colloquim.
I'd like to go to some of them.
g
∂11-Jan-89 1441 lansky@ai.sri.com Of possible interest....
Received: from Warbucks.AI.SRI.COM ([192.12.5.20]) by SAIL.Stanford.EDU with TCP; 11 Jan 89 12:48:19 PST
Received: from venice.ai.sri.com by Warbucks.AI.SRI.COM with INTERNET ;
Wed, 11 Jan 89 12:31:17 PST
Received: by venice.ai.sri.com (3.2/4.16)
id AA02626 for planlunch@ai.sri.com; Wed, 11 Jan 89 12:31:21 PST
Date: Wed, 11 Jan 89 12:31:21 PST
From: lansky@Warbucks.AI.SRI.COM (Amy Lansky)
Message-Id: <8901112031.AA02626@venice.ai.sri.com>
To: planlunch@Warbucks.AI.SRI.COM
Subject: Of possible interest....
(If you have questions, send a message to Barbara Simons: SIMONS@IBM.COM)
FEDERAL FUNDING OF THE ACADEMIC PHYSICAL SCIENCES
PANELISTS
Prof. Philip Anderson (Nobel Prize)
Physics, Princeton University
Prof. Richard Karp (Turing Award)
Computer science, U.C. Berkeley
Prof. Robert Park
Executive Director, Office of Public Affairs, The American Physical Society
Dr. Burton Richter (Nobel Prize)
Director, SLAC
Dr. Robert M. Rosenzweig
President, Association of American Universities
Prof. William Thurston (Fields Medal)
Mathematics, Princeton University
Moderator: Dr. Barbara Simons
Computer Science, IBM Almaden Research Center
Abstract: Federal funding of science is a major component of science policy.
Which areas are funded, how much funding they receive, which agencies do the
funding, and who makes the decisions are important issues. Fields prosper and
decline according to these decisions. Graduate students' choice of specialty
is influenced by funding. Teaching loads and even tenure decisions can be
affected. Since funding has a profound influence on technology, funding
policy has significant economic repercussions. It also has political
repercussions, as politicians become increasingly involved with the funding
process. Scientific and academic freedom are at issue. Researchers who fear
that their funding may be cut for political reasons, even if the fears are
unfounded, may engage in self-censorship.
What should be national funding priorities?
What has been the effect of the increased emphasis on 'big science' in recent
years?
How have the trends toward mission oriented and defense oriented funding
affected the quality and nature of scientific research?
Is there an imbalance of funding sources for some scientific disciplines, and,
if so, is this a problem?
What impact has science funding policy had on universities, faculty, and
graduate students?
Have government policies with respect to science funding been in the best
interest of science?
Are there ways in which these policies can be improved?
Date: Tuesday Jan. 17, 1989
Time: 8:30 A.M. - 11:30 A.M.
Place: the California East Room of the St. Francis Hotel, San Francisco
Sponsored by: the American Association for the Advancement of Science, the
American Physical Society, and the American Association of Physics Teachers
The panel is a part of several parallel conferences, namely the AAAS, the APS,
and the AAPT. I don't know whether or not one can walk in without having
registered at one of these conferences. It is possible to register at the APS
conference for a single day for $50. There is a student registration fee for
the entire AAAS conference of $50 or $70, for members and non-members
respectively.
∂11-Jan-89 1510 byrd@sumex-aim.stanford.edu Cm* book
Received: from sumex-aim.stanford.edu by SAIL.Stanford.EDU with TCP; 11 Jan 89 15:02:01 PST
Received: by sumex-aim.stanford.edu (4.0/inc-1.0)
id AA06715; Wed, 11 Jan 89 15:00:44 PST
Date: Wed, 11 Jan 1989 15:00:44 PST
From: Greg Byrd <byrd@sumex-aim.stanford.edu>
To: aap@sumex-aim.stanford.edu
Subject: Cm* book
Message-Id: <CMM.0.88.600562844.byrd@sumex-aim.stanford.edu>
I have a book on my desk, "Parallel Processing: The Cm* Experience,"
which was placed on my desk a long time ago -- I was told that it
was circulating through the AAP. I don't know who's seen it, or
who's interested in seeing it. If you'd like to take a look, let
me know -- otherwise, I'll turn it over to Bob.
...Greg
∂11-Jan-89 1516 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Re: Urgent: announcement of panel on funding
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 11 Jan 89 13:55:04 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA12900; Wed, 11 Jan 89 13:54:17 PDT
Message-Id: <8901112154.AA12900@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Wed, 11 Jan 89 13:53:41 PST
Received: by BYUADMIN (Mailer R2.01A) id 8447; Wed, 11 Jan 89 14:52:09 MST
Date: Wed, 11 Jan 89 15:37:21 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Ravindran.Kannan%THEORY.CS.CMU.EDU@Forsythe.Stanford.EDU
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
From: Ravindran.Kannan%THEORY.CS.CMU.EDU@Forsythe.Stanford.EDU
Subject: Re: Urgent: announcement of panel on funding
Comments: To: TheoryNet List <THEORYNT@VM1.NoDak.EDU>, simons@IBM.COM
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
In-Reply-To: TheoryNet List , simons@IBM.COM's mail message of Tue,
10 Jan 89 15:47:40 PST
thanks for the panel discussion announcement. i guess i cannot make it!
Happy new year etc. ravi
∂11-Jan-89 1605 eaf@sumex-aim.stanford.edu Re: Cm* book
Received: from sumex-aim.stanford.edu by SAIL.Stanford.EDU with TCP; 11 Jan 89 16:05:37 PST
Received: by sumex-aim.stanford.edu (4.0/inc-1.0)
id AA08833; Wed, 11 Jan 89 16:04:12 PST
Date: Wed, 11 Jan 1989 16:04:11 PST
From: Edward A. Feigenbaum <eaf@sumex-aim.stanford.edu>
To: Greg Byrd <byrd@sumex-aim.stanford.edu>
Cc: aap@sumex-aim.stanford.edu
Subject: Re: Cm* book
In-Reply-To: Your message of Wed, 11 Jan 1989 15:00:44 PST
Message-Id: <CMM.0.88.600566651.eaf@sumex-aim.stanford.edu>
Greg, when everyone is done with the book, it should be given to
the relevaqnt person (I dont know who that is these days) for
cataloged entry into the Waterman Reading Room collection.
Ed
∂11-Jan-89 1649 X3J13-mailer Issue: IEEE-ATAN-BRANCH-CUT (Version 2)
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 11 Jan 89 16:49:27 PST
Received: from Semillon.ms by ArpaGateway.ms ; 11 JAN 89 16:43:33 PST
Date: 11 Jan 89 16:43 PST
Sender: masinter.pa@Xerox.COM
Subject: Issue: IEEE-ATAN-BRANCH-CUT (Version 2)
To: X3J13@Sail.Stanford.Edu
Reply-to: cl-cleanup@sail.stanford.edu
From: cl-cleanup@sail.stanford.edu
cc: masinter.pa@Xerox.COM
line-fold: No
Message-ID: <890111-164333-11134@Xerox>
!
Forum: Cleanup
Issue: IEEE-ATAN-BRANCH-CUT
References: CLtL p.203-214
Related issues: COMPLEX-ATAN-BRANCH-CUT
Category: CHANGE
Edit history: Version 1, 13-Dec-88, Steele
Version 2, 11-Jan-89, Masinter (1st => 3rd person)
Problem description:
If an implementation provides a floating-point minus zero as well as a
floating-point plus zero, most notably as in IEEE 754 floating-point
arithmetic, then slight adjustments in the branch cuts of transcendental
functions are appropriate.
If there is a minus zero and a plus zero, then *no* complex number
is actually "on the axis" whether real or imaginary. Instead,
numbers of the form x+0i and x-0i straddle the real axis, and those
of the form 0+xi and -0+xi straddle the imginary axis. Branch cuts
that lie on the axes therefore run between such numbers, and directions
of continuity are not an issue.
Proposal (IEEE-ATAN-BRANCH-CUT:SPLIT):
Redefine the branch cut for two-argument ATAN, covering
the cases where there is or is not a minus zero, and then redefine *all*
other functions that have branch cuts in terms of two-argument ATAN.
Specifically, first define PHASE in terms of two-argument ATAN,
and complex ABS in terms of real SQRT (which has no branch cut problems);
then define complex LOG in terms of PHASE, ABS, and real LOG; then define
complex SQRT in terms of LOG; and then define all others in terms of these.
In this propoal Lisp expressions should be taken as mathematical
formulas that actually are implemented in other ways for improved accuracy.
(1) If there is no minus zero, two-argument ATAN behaves as in CLtL.
If there is a minus zero, then some cases are modified:
Condition result
y=+0 x>0 +0
y=-0 x>0 -0
y=+0 x<0 +pi
y=-0 x<0 -pi
y=+0 x=+0 +0
y=-0 x=+0 -0
y=+0 x=-0 +pi
y=-0 x=-0 -pi
The range of two-argument atan therefore includes -pi in this case.
Note that the case y=0 x=0 is an error in the absence of minus zero,
but is defined in the presence of minus zero.
(2) (PHASE X) = (ATAN (IMAGPART X) (REALPART X)), as before, but now
the range of PHASE may include -PI if there is a minus zero.
(3) (ABS X) = (SQRT (+ (* (REALPART X) (REALPART X))
(* (IMAGPART X) (IMAGPART X)))), as before
(4) (LOG X) = (COMPLEX (LOG (ABS X)) (PHASE X))
(5) (SQRT X) = (EXP (/ (LOG X) 2))
(6) For EXPT, ASIN, ACOS, ATAN, ASINH, ACOSH, ATANH use the formulas
in CLtL pp. 211-213, but use the formulas (1-5) above as the
definitions of LOG and SQRT in order to determine the branch cuts
properly.
Examples:
(LOG #c(-1.0 +0.0)) => #c(0.0 3.14159...) ;Current
(LOG #c(-1.0 -0.0)) => #c(0.0 3.14159...) ;Current
(LOG #c(-1.0 +0.0)) => #c(0.0 3.14159...) ;Proposed (= current)
(LOG #c(-1.0 -0.0)) => #c(0.0 -3.14159...) ;Proposed (conjugate)
Rationale:
The current specification ignores some natural consequences of IEEE
floating-point arithmetic. The proposed specification produces results
more natural to that arithmetic.
Current practice:
Of implementations that support a minus zero that I have checked,
such as Sun-4 CL 2.1.3 of 10-Nov-88 and Symbolics CL, all follow
the current CLtL specification.
The IEEE trig library atan2 routine written by K.C. Ng (with the advice
or supervision of W. Kahan, I believe), and distributed with BSD UNIX
(it is file /usr/src/usr.lib/libm/IEEE/atan2.c on my machine) follows
this proposal for treatment of minus zero.
Cost to Implementors:
Some of the trig routines will require some rewriting. Probably certain
tests that are now written using ZEROP need to be rewritten to use
FLOAT-SIGN instead.
Cost to Users:
It is barely conceivable that some user code could depend on this.
Probably there is no cost.
The compatibility note on p. 210 of CLtL gave users fair warning that
a change of this kind might be adopted.
Cost of non-adoption:
Unnatural treatment of some functions on machines supporting IEEE
floating-point arithmetic.
Benefits:
Natural treatment, etc.
Esthetics:
A toss-up, except to those who care.
Discussion:
Steele has sent a letter to W. Kahan at Berkeley to get any last
comments he may have on the matter.
∂11-Jan-89 1703 X3J13-mailer Issue: LISP-PACKAGE-NAME, (Version 1)
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 11 Jan 89 17:03:01 PST
Received: from Semillon.ms by ArpaGateway.ms ; 11 JAN 89 16:52:58 PST
Date: 11 Jan 89 16:52 PST
Sender: masinter.pa@Xerox.COM
Subject: Issue: LISP-PACKAGE-NAME, (Version 1)
To: X3J13@Sail.Stanford.Edu
Reply-to: cl-cleanup@sail.stanford.edu
From: cl-cleanup@sail.stanford.edu
cc: masinter.pa@Xerox.COM
line-fold: No
Message-ID: <890111-165258-11168@Xerox>
!
Issue: LISP-PACKAGE-NAME
References: 11.6 Built-in Packages (pp181-182)
Category: CHANGE
Edit history: 22-Dec-88, Version 1 by Pitman
Problem Description:
Since ANSI Common Lisp will differ from the Common Lisp described by CLtL,
it will not be possible to have support for both in the same Lisp image
if ANSI Common Lisp insists on placing its functionality in the package
named LISP.
Further, use of the name unqualified name LISP by the ANSI Common Lisp
community is inconsistent with ANSI's expressed position to ISO that
the term "LISP" names a language family rather than a specific dialect
within that family.
Proposal (LISP-PACKAGE-NAME:COMMON-LISP):
Define that ANSI Common Lisp uses the package name COMMON-LISP, not LISP.
Define that the COMMON-LISP package has nickname CL.
Since some symbols (e.g., T, NIL, and LAMBDA) might have to be shared
between COMMON-LISP and LISP in implementations simultaneously supporting
both, clarify that the initial symbols specified by ANSI Common Lisp as
belonging in the COMMON-LISP package need not have a home package of
Common-Lisp.
Test Case:
In an implementation supporting CLtL's LISP package and
the ANSI Common Lisp CL package proposed here:
(EQ 'LISP:T 'CL:T)
=> not specified, due to this proposal, but probably T
(EQ 'LISP:CAR 'CL:CAR)
=> not specified, due to this proposal, but probably T
(EQ 'LISP:FUNCTIONP 'CL:FUNCTIONP)
=> not specified, due to this proposal, but since FUNCTIONP is
changed incompatibly between CLtL (LISP) and CL (ANSI), there
are good reasons why this might return NIL.
(SYMBOL-PACKAGE 'CL:T)
=> not specified, due to this proposal. Perhaps #<Package CL>,
perhaps #<Package LISP>, or perhaps something implementation-specific.
(SYMBOL-PACKAGE 'LISP:T)
=> not specified, not due to this proposal, but because CLtL didn't
specify this explicitly.
Rationale:
In practice, some implementations will have very legitimate reasons for
wanting to Lisp dialects to be coresident. As it stands, they will have
little other choice than to make the two use different packages, and so
will be forced to be incompatible with one or the other dialect unless
we choose a different package name for the one dialect for which there
is currently no existing code.
Not only is this important the CLtL and ANSI Common Lisp communities, but
also, if we continue to use the name LISP, it sends a signal to the ISO
Lisp community that the "latest and greatest" Lisp should use the generic
name LISP, and they may try to use it as well. If ISO Lisp turns out to
be very different than ANSI Common Lisp, there may be motivation down the
line for having ISO Lisp and ANSI Common Lisp co-resident, and conflicts
will inevitably arise if both want to use the name LISP. This will almost
certainly lead to a confrontation where one Lisp dialect tries to force
the other out by the artificial means of asserting its right to this
generic name. Choosing a name which compatibly admits the option of
introducing other dialects into the environment at a later date without
conflict is a good way to avoid a class of potential problems.
Although there are a few problems which could come up due to the symbol
package of initial symbols being unspecified, experience with
implementations that do this suggests that they are very few.
Problems occur only in the rare circumstance that all of the following
conditions are met:
- A symbol S on the LISP package but with home package H (that is not "LISP")
is shadowed in some package P of implementation A.
- A program F in package P uses the shadowed symbol H:S by an explicit
LISP: or H: package qualification. (Only the case of using "LISP:" is
interesting, of course, since if H were named explicitly, we would be
outside the bounds of portable code).
- The program F, referring to H:S, is printed out in implementation A
while using package P (or some other package that shadows S, so that
the H package qualifier appears explicitly) and an attempt is made to
re-read it in implementation B.
- Implementation B has no package named H, has a package named H but no
external symbol named S, or has a package named H with external symbol
S but the symbol H:S has different semantics in implementation B than
it did in implementation A.
In practice, this hardly ever happens. It would happen even less if
programmers were explicitly alerted that it was a potential problem they
needed to guard against.
Current Practice:
Symbolics Genera already has a package named COMMON-LISP with nicknames
CL and LISP. As such, this would be an incompatible change for Genera.
Cost to Implementors:
Small.
In some cases, this may even have `negative cost' because it will provide
implementors a way of avoiding incompatible changes to released operators.
Cost to Users:
Small.
In some cases, this may even have `negative cost' because existing code
would be able to continue to run in implementations which chose to support
both CLtL's LISP and ANSI Common Lisp's CL packages, thereby allowing
developers to put off a massover changeover, perhaps doing the transition
more incrementally.
Cost of Non-Adoption:
Implementations trying to support multiple dialects in the same environment
would be forced to violate one or the other spec.
Worse, different implementations faced with the same set of hard choices
about which spec to violate in order to concurrently support two dialects
might not make the same choices, leading to even more gratuitous
incompatibility.
ANSI's position in ISO that we are not trying to legislate the meaning of
-the- LISP dialect would be weakened.
Benefits:
Needless incompatibility would be avoided in a variety of situations.
Aesthetics:
Failing to specify the home package of symbols in the LISP and CL packages
seems unaesthetic because it appears to diminish print/read invertability,
but as observed above, that case is rare.
Failiing to specify a way in which lisp dialects can be co-resident is also
unaesthetic because in practice implementors with a need to do this will do
so whether the standard allows them or not, and it will be a source of
severe divergence among implementations.
Discussion:
Symbolics Genera offers two co-resident dialects of Lisp: Zetalisp and
Symbolics Common Lisp. The Symbolics Cloe development environment adds
a third co-resident dialect, making an environment in which two differing
Common Lisp dialects (Symbolics Common Lisp and Cloe) must cooperate.
Already in Cloe it is not possible for the home package to contain
package "LISP" since Cloe's concept of what the "LISP" package is differs
from Genera's concept of what the "LISP" package is, yet they are forced
by efficiency constraints to share the same symbol. It is Pitman's belief,
based on extensive experience with Cloe, that failure to pass this proposal
(or something very like it) will lead to all sorts of trouble for Common
Lisp users and implementors down the road.
Pitman strongly supports this proposal.
Additional comments:
Is it permissible for implementations to define
"LISP" as a nickname for this package, for the
sake of backward compatibility?
Anyone wanting to make LISP a nickname could just as well create a LISP
package which simply imported the appropriate symbols from the CL package.
With only modest additional effort, they could try to make new symbols where
feasable (especially for most functions) and put borrowed functions plopped
in their function cells. The amount of additional storage is small (compared
to implementing a whole new lisp), but it would leave open the possibility for
users upgrading the level of compatibility without hurting the core
system. eg, if I wanted APPEND to signal an error on dotted lists, I
would not consider redefining the system's APPEND for fear of breaking
the world, but if they told me that nothing depended on LISP other than
compatibility code, I might feel ok about redefining (or doing
SHADOWING-IMPORT of LISP:APPEND on a per-implementation basis (with
appropriate sharp conditionals)) in order to up the level of
compatibility.
In fact, though, my guess is that implementations which are not going to
do a serious compatibility effort are better off leaving the package
missing. My experience has been that customers are often happier growing
their own compatibility [or getting it from a public library] than being
stuck with something which really doesn't do what they want but which
seals off the place in the namespace which they needed in order to do
their own thing.
∂11-Jan-89 1731 hoffman@csli.Stanford.EDU the Symbolic Systems Forum Schedule Winter 89
Received: from csli.Stanford.EDU by SAIL.Stanford.EDU with TCP; 11 Jan 89 17:31:25 PST
Received: by csli.Stanford.EDU (4.0/inc-1.0)
id AA22112; Wed, 11 Jan 89 17:14:47 PST
Date: Wed 11 Jan 89 17:14:46-PST
From: Reid Hoffman <HOFFMAN@CSLI.Stanford.EDU>
Subject: the Symbolic Systems Forum Schedule Winter 89
To: AboutTheForum@CSLI.Stanford.EDU
Message-Id: <600570886.0.HOFFMAN@CSLI.Stanford.EDU>
Mail-System-Version: <SUN-MM(242)+TOPSLIB(128)@CSLI.Stanford.EDU>
Here is the Finalized Schedule for the Symbolic Systems Forum for
Winter Quarter
Jan. 20th: Professor Stan Rosenschein, "The Prospects in and of Artificial
Intelligence
Jan. 27th: Professor Peter Sells, "Quantification in Natural Language"
Feb. 3rd: Professor Jerry Feldman, "The different flavors of
Connectionism"
Feb. 10th: Professor Bernardo Huberman, "The Ecology of Computation"
Feb. 17th: Professor David Wellbery, "Semiotics"
Feb. 24th: Professor Solomon Feferman, "Turing's Oracle"
Mar. 3rd: Doctor Jeffry Shrager, undecided
Mar. 10th: Doctor Ruben Kleiman, "Ontology and Computer Science"
-------
∂11-Jan-89 1815 emma@csli.Stanford.EDU CSLI Calendar, January 12, 4:11
Received: from csli.Stanford.EDU by SAIL.Stanford.EDU with TCP; 11 Jan 89 18:14:56 PST
Received: by csli.Stanford.EDU (4.0/inc-1.0)
id AA22126; Wed, 11 Jan 89 17:15:11 PST
Date: Wed, 11 Jan 89 17:15:11 PST
From: emma@csli.Stanford.EDU (Emma Pease)
Message-Id: <8901120115.AA22126@csli.Stanford.EDU>
To: friends@csli.Stanford.EDU
Subject: CSLI Calendar, January 12, 4:11
C S L I C A L E N D A R O F P U B L I C E V E N T S
_____________________________________________________________________________
12 January 1989 Stanford Vol. 4, No. 11
_____________________________________________________________________________
A weekly publication of The Center for the Study of Language and
Information, Ventura Hall, Stanford University, Stanford, CA 94305
____________
ANNOUNCEMENT
TINLunches will be scheduled irregularly during winter quarter; watch
the Calendar for announcements. The 2:15 seminar will not meet during
winter quarter, but will resume spring and fall quarters as follows:
Thursday 2:15 Seminar, Spring 1989
Varieties of Context
led by
Jim Greeno, Brian Smith, Susan Stucky
Everyone talks about context these days -- and about the "contextual
dependence" of language, information, and action. But are they
getting at the same thing? This seminar will survey various different
kinds of context (physical, cognitive, linguistic, processing), and
examine what people are saying about each. We'll be looking for
similarities among them, but also for differences.
Thursday 2:15 Seminar, Fall 1989
Models of Rational Agency
led by
Michael Bratman, Martha Pollack, Stan Rosenschein
This seminar will survey models of intelligent, rational agents
situated in dynamic, multi-agent environments.
____________
STASS SEMINAR
Thursday, January 12, 4pm
Cordura Conference Room
This quarter the STASS seminar will work through papers accepted for a
forthcoming STASS Conference. The papers vary in topic from
linguistics, to philosophy, to logic and mathematics. The seminar is
open to anyone who wants to attend, though some familiarity with
situation theory and situation semantics is presumed. The meetings
will be held on Thursdays at 4 pm in the Cordura Conference Room. The
first meeting will be on January 12, where we will set up a schedule
for the quarter. Participants are expected to present at least one
paper to the group.
____________
STANFORD UNIVERSITY INTERDISCIPLINARY COLLOQUIUM SERIES:
Adaptive Networks and their Applications
Connectionism and the Facts of Human Language
Steven Pinker
Department of Brain & Cognitive Sciences
Massachusetts Institute of Technology
(steve@psyche.mit.edu)
(with commentary by David Rumelhart)
Thursday, 12 January, 3:30pm
Room 380-380F
Connectionist modeling holds the promise of making important
contributions to our understanding of human language. For example,
such models can explore the role of parallel processing, constraint
satisfaction, neurologically realistic architectures, and efficient
pattern-matching in linguistic processes.
However, the current connectionist program of language modeling
seems to be motivated by a different set of goals: reviving classical
associationism, eliminating levels of linguistic representation, and
maximizing the role of top-down, knowledge-driven processing.
I present evidence (developed in collaboration with Alan Prince)
that these goals are ill-advised, because the empirical assumptions
they make about human language are simply false. Specifically,
evidence from adults' and children's abilities with morphology,
semantics, and syntax suggests that people possess formal linguistic
rules and autonomous linguistic representations, which are not based
on the statistical correlations among microfeatures that current
connectionist models rely on so heavily.
Moreover, I suggest that treating the existence of
mentally-represented rules and representations as an empirical
question will lead to greater progress than rejecting them on a priori
methodological grounds. The data suggest that some linguistic
processes are saliently rule-like, and call for a suitable
symbol-processing architecture, whereas others are associative, and
can be insightfully modeled using connectionist mechanisms. Thus
taking the facts of human language seriously can lead to an
interesting rapprochement between standard psycholinguistics and
connectionist modeling.
Technical Level: These talks will be technically oriented and are
intended for persons actively working in related areas. They are not
intended for the newcomer seeking general introductory material.
Mailing lists: To be added to the network mailing list, netmail to
netlist@psych.stanford.edu. For additional information, or contact
Mark Gluck (gluck@psych.stanford.edu).
Co-Sponsored by: Departments of Electrical Engineering (B. Widrow) and
Psychology (D. Rumelhart, M. Pavel, M. Gluck), Stanford Univ.
____________
NEW PUBLICATIONS
The following reports have recently been published. They may be
obtained, or a full list acquired by writing to Trudy Vizmanos,
CSLI, Ventura Hall, Stanford, CA 94305-4115, or
publications@csli.stanford.edu.
133. Relating Models of Polymorphism
Jose Meseguer $4.50
134. Fregean Thoughts and Indexicals
Patricia Blanchette $3.50
∂11-Jan-89 2008 X3J13-mailer Ballot (finally)
Received: from NSS.Cs.Ucl.AC.UK by SAIL.Stanford.EDU with TCP; 11 Jan 89 20:04:05 PST
Received: from aiai.edinburgh.ac.uk by NSS.Cs.Ucl.AC.UK via Janet with NIFTP
id aa01484; 12 Jan 89 3:54 GMT
Date: Thu, 12 Jan 89 03:57:03 GMT
Message-Id: <18811.8901120357@subnode.aiai.ed.ac.uk>
From: Jeff Dalton <jeff%aiai.edinburgh.ac.uk@NSS.Cs.Ucl.AC.UK>
Subject: Ballot (finally)
To: masinter.pa@xerox.com, x3J13@sail.stanford.edu
In-Reply-To: masinter.pa@com.xerox's message of 12 Dec 88 18:16 PST
Cc: richard%aiai.edinburgh.ac.uk@NSS.Cs.Ucl.AC.UK,
rhr%aiai.edinburgh.ac.uk@NSS.Cs.Ucl.AC.UK
This is the official vote for the University of Edinburgh.
Y ARGUMENTS-UNDERSPECIFIED:SPECIFY
Version 4, 21-Sep-88, Mailed 4 Dec 88
Y ARRAY-TYPE-ELEMENT-TYPE-SEMANTICS:UNIFY-UPGRADING
Version 9, 31-Oct-88, Mailed 5 Dec 88
Y CLOSED-STREAM-OPERATIONS:ALLOW-INQUIRY
Version 5, 5-Dec-88, Mailed 5 Dec 88
Y CONTAGION-ON-NUMERICAL-COMPARISONS:TRANSITIVE
Version 1, 14-Sep-88, Mailed 6 Oct 88
Y DECLARATION-SCOPE:NO-HOISTING
N DECLARATION-SCOPE:LIMITED-HOISTING
Version 4, 15-Nov-88, Mailed 9-Dec-88
NO brings LET closer to application of LAMBDA-expressions.
The "en passant" capture in LIMITED is a bit too stange.
A DECLARE-FUNCTION-AMBIGUITY:DELETE-FTYPE-ABBREVIATION
Version 4, 5-Dec-88, Mailed 5-Dec-88
N DECLARE-TYPE-FREE:ALLOW
Y DECLARE-TYPE-FREE:LEXICAL (v 9)
Version 8, 7-Dec-88, Mailed 9-Dec-88
LEXICAL is consistent with SYMBOL-MACROLET-DECLARE:ALLOW.
A DECODE-UNIVERSAL-TIME-DAYLIGHT:LIKE-ENCODE
Version 2, 30-Sep-88, Mailed 6 Oct 88
Y DEFPACKAGE:ADDITION
Version 7, 2-Nov-88, Mailed 5 Dec 88
I DEFSTRUCT-CONSTRUCTOR-KEY-MIXTURE:ALLOW-KEY
Version 2, 21-Sep-88, Mailed 6 Oct 88
If ammended as suggested by Kim Barrett.
Y DEFSTRUCT-PRINT-FUNCTION-INHERITANCE:YES
Version 3, 7 Dec 88, Mailed 12-Dec-88
Y DEFSTRUCT-SLOTS-CONSTRAINTS-NAME:DUPLICATES-ERROR
Version 4, 31-Oct-88, Mailed 12-Dec-88
A DESCRIBE-INTERACTIVE:EXPLICITLY-VAGUE
A DESCRIBE-INTERACTIVE:NO
Version 4, 15-Nov-88 , Mailed 7-Dec-88
Y DOTTED-MACRO-FORMS:ALLOW
Version 3, 15-Nov-88, Mailed 7-Dec-88
I voted yes beacuse subforms can be dotted, but I don't really like it.
I EQUAL-STRUCTURE:STATUS-QUO
Version 5, 1-Oct-88, Mailed 8 Oct 88
If the EQUALP problems are cleared up.
N EXIT-EXTENT:MINIMAL
Y EXIT-EXTENT:MEDIUM
Version 5, 12-Dec-88, Mailed 12-Dec-88
Y EXPT-RATIO:P.211
Version 3, 31-Oct-88, Mailed 7 Dec 88
Y FIXNUM-NON-PORTABLE:TIGHTEN-DEFINITION
N FIXNUM-NON-PORTABLE:TIGHTEN-FIXNUM-TOSS-BIGNUM
Version 4, 7-Dec-88, Mailed 12-Dec-88
I prefer to retain a name for the non-fixnums.
I favor retaining FIXNUM because it allows me to do a useful thing
(request integers that can be handled with a certain degree of
efficiency) in the same way in all implementations that provide it.
Note that there is a large class of implementations in which fixnums
are large enough to contain the address part of a pointer and so
can be used in every case where I count objects or index structures.
Again, I prefer to be able to use the same declaration in all of these
implementations.
Not all code is meant to be portable to all Common Lisps.
Moreover, if efficiency is my concern, an explicit subrange is
actually less portable, because I cannot specify its representation.
Y FORMAT-E-EXPONENT-SIGN:FORCE-SIGN
Version 2, 2 Oct 88, Mailed 6 Oct 88
Y FORMAT-PRETTY-PRINT:YES
Version 7, 15 Dec 88, Mailed 7 Dec 88
Y FUNCTION-COMPOSITION:NEW-FUNCTIONS
I FUNCTION-COMPOSITION:COMPLEMENT-AND-ALWAYS
Version 4, 12 Dec 88, Mailed 12 Dec 88
C-AND-A if NEW-FUNCTIONS fails.
Y FUNCTION-DEFINITION:FUNCTION-SOURCE
Version 2, 09-Dec-88 , Mailed 9 Dec 88
Y FUNCTION-TYPE-ARGUMENT-TYPE-SEMANTICS:RESTRICTIVE
Version 3, 7-Dec-88, Mailed 12-Dec-88
I think the explanation of exactly what changes could be clearer,
and I am not completely sure I understand it.
Y FUNCTION-TYPE-REST-LIST-ELEMENT:USE-ACTUAL-ARGUMENT-TYPE
Version 5, 14-Nov-88 , Mailed 8-Dec-88
Y GET-MACRO-CHARACTER-READTABLE:NIL-STANDARD
Version 2, 8 Dec 88, Mailed 8 Dec 88
I agree with the remark that the tests imply EQ will hold
when that is not actually guaranteed.
N HASH-TABLE-PACKAGE-GENERATORS:ADD-WITH-WRAPPER
Version 7, 8-Dec-88, Mailed 9-Dec-88
I might be convinced to change my mind, but right now I think this
proposal is premature. There is nothing very like it in the rest
of CL, and it would make more sense to wait until the need for it
has been more firmly established. I am also bothered by the use
of MACROLET. Is it really the case that functions declared INLINE
would not be enough for optimization?
Y HASH-TABLE-STABILITY:KEY-TRANSFORM-RESTRICTIONS
Version 1, 11-Nov-88 , Mailed 12 Dec 88
I think this is an important clarification even though it may
not lead to extensive changes in practice. I disagree with the
suggestions that the proposal be shortened; but if it cannot
gather enought support as-is, it might be rearranged so as to
stress issues of correct use, such as the effects of destructive
operations on keys.
Moreover, an explanation at this level of detail removes one of
the most common objections to allowing :test arguments outside
the standard set, if accompanied by appropriate key transformation
functions, namely that the necessary constraints must first be
understood. It may therefore encourage implementors to provide
that extension, something I would like to see.
Y HASH-TABLE-TESTS:ADD-EQUALP
Version 2, 8-Dec-88, Mailed 8 Dec 88
It seems to me that SXHASH is not quite suitable for use with
EQUALP, and so I would like the key transformation function that
is used with EQUALP to made available to the user.
Y IN-PACKAGE-FUNCTIONALITY:SELECT-ONLY
Version 4, 12-Dec-88, Mailed 12-Dec-88
At first I thought I'd make this conditional on DEFPACKAGE passing;
then I decided MAKE-PACKAGE would suffice.
Y LAMBDA-FORM:NEW-MACRO
Version 4, 22-Nov-88, Mailed 8-Dec-88
Y LCM-NO-ARGUMENTS:1
Version 1, 17 Oct 88, Mailed 8 Dec 88
Y LISP-SYMBOL-REDEFINITION:DISALLOW
Version 5, 22-Nov-88, Mailed 8 Dec 88
N MAKE-PACKAGE-USE-DEFAULT:IMPLEMENTATION-DEPENDENT
Version 2, 8 Oct 88, Mailed 12-Dec-88
I would like any dependency on implementation-specific extensions
to be explicit.
Y MAPPING-DESTRUCTIVE-INTERACTION:EXPLICITLY-VAGUE
Version 2, 09-Jun-88, Mailed 8 Oct 88
A NTH-VALUE:ADD
Version 4, 8-Dec-88, Mailed 8 Dec 88
NTH-VALUE does not complete the set of operations on multiple values
because it extracts only one value, so I do not think it is needed
for the sake of completeness.
Y PACKAGE-CLUTTER:REDUCE
Version 6, 12-Dec-88, Mailed 12-Dec-881
A PACKAGE-DELETION:NEW-FUNCTION
Version 5, 21 nov 88, Mailed 8 Dec 88
Y PATHNAME-TYPE-UNSPECIFIC:NEW-TOKEN
Version 1 27-Jun-88, Mailed 7 Oct 88
I can understand why someone might find the need for :UNSPECIFIC
in Unix unclear, but I think that is because it is not clear what
filenames would be parsed as pathnames with :UNSPECIFIC type [*];
:UNSPECIFIC is nonetheless useful for building pathnames directly
when you know which case you want and need a way to specify it.
[*] Does a name without "." parse as type NIL or :UNSPECIFIC?
Different Unix programs use different conventions. Some are
willing to merge in a type field, others, such as the C compiler,
leave names as-is. So the "right" answer may vary.
Y PEEK-CHAR-READ-CHAR-ECHO:FIRST-READ-CHAR
Version 3, 8-Oct-88, Mailed 8 Oct 88
Y PRINT-CIRCLE-STRUCTURE:USER-FUNCTIONS-WORK
Version 3, 20 Sep 88, Mailed 8 Oct 88
Y PROCLAIM-LEXICAL:LG
Version 9, 8-Dec-88, Mailed 12-Dec-88
Under this proposal, special proclamations establish a default for
a name but, because of the lexical declaration, no longer force it
to be special everywhere. It also allows the programmer to say
that a global name is intended as a variable (i.e., references to
it are not spelling mistakes) without proclaiming it special. I
think these are important changes that should be preserved even if
this proposal fails. Another important feature is that LG references
to global variables can be fast in deep-bound implementations (since
L "searches" can be compiled away) while DG references (the only
global variables we have now) first have to look in D. Finally,
the current semantics are subtly confusing, because the specialness
of global variables occasionally shows through. For all of these
reasons, I support this proposal.
I think the most controversial change is the introduction of a
separate global environment, where before the only globals were
effectively just the global end of the dynamic env. Most of the
implementation complexity stems from this change, and it is likely
that it lies behind most objections.
A reasonable fallback, if this proposal does not pass, would be
to say that variables that are proclaimed lexical can never by
given dynamic bindings. That is, the global value would be taken
after searching L or D but not both and so would effectively be
an extension of the L or D env, case by case. This would be
somewhat unfortunate, because local lexical bindings for names
proclaimed special would still make sense (because they could be
declared lexical) but we wouldn't allow local special declarations
for names proclaimed lexical. The full proposal is better.
Y RANGE-OF-COUNT-KEYWORD:NIL-OR-INTEGER
Version 3, 9-Oct-88, Mailed 14-Oct-88
Y RANGE-OF-START-AND-END-PARAMETERS:INTEGER-AND-INTEGER-NIL
Version 1, 14-Sep-88, Mailed 7 Oct 88
A REQUIRE-PATHNAME-DEFAULTS:ELIMINATE
Version 6, 9 Dec 88, mailed 09 Dec 88
N REST-LIST-ALLOCATION:NEWLY-ALLOCATED
Y REST-LIST-ALLOCATION:MAY-SHARE
N REST-LIST-ALLOCATION:MUST-SHARE
Version 3, 12-Dec-88, mailed 12-Dec-88
NEWLY-ALLOCATED is cleanest, but may be too disruptive.
Y RETURN-VALUES-UNSPECIFIED:SPECIFY
Version 6, 9 Dec 88 mailed 9-Dec-88
Y ROOM-DEFAULT-ARGUMENT:NEW-VALUE
Version 1 12-Sep-88 mailed 8 Oct 88
I suppose we might, instead, allow anything other than T or NIL.
That has a bit of a ternary feel to it.
[The following are mutually exclusive]
N SETF-FUNCTION-VS-MACRO:SETF-FUNCTIONS
Version 3, 4-Nov-87, mailed Nov 87
N SETF-PLACES:ADD-SETF-FUNCTIONS
Version 1, 11-Nov-88, mailed 9-Dec-88
I am not yet happy with either proposal. The first seems nicer
but complicates the semantics of CL at a rather central point
and introduces nonorthogonality by allowing (SETF name) in
FUNCTION but not as the car of a form. The second looks like
a rather desperate attempt to avoid the first. Is there some
way to avoid writing names like setf:3.bar.middle.ref in the
"local function" example? (It's the 3 that looks worst.)
Y SETF-SUB-METHODS:DELAYED-ACCESS-STORES
Version 5, 12-Feb-88 mailed 8 Oct 88
Y STANDARD-INPUT-INITIAL-BINDING:DEFINED-CONTRACTS
Version 8, 8 Jul 88, Mailed 7 Oct 88
Y STEP-ENVIRONMENT:CURRENT
Version 3, 20-Jun-88, mailed 7 Oct 88
Y STREAM-ACCESS:ADD-TYPES-PREDICATES-ACCESSORS
version 2, 30-Nov-88 mailed 9 Dec 88
(expect amendment T ="true")
How many type names do not have corresponding predicates?
Y STREAM-INFO:ONE-DIMENSIONAL-FUNCTIONS
Version 6, 30-Nov-88, mailed 9 dec 88
expect amendment:
LINE-WIDTH ==STREAM-LINE-WIDTH
LINE-POSITION ==STREAM-LINE-POSITION
PRINTED-WIDTH ==STREAM-STRING-WIDTH
Y SUBTYPEP-TOO-VAGUE:CLARIFY
Version 4, 7-Oct-88, mailed 7 Oct 88
If MEMBER, AND, OR, and NOT can be handled, I'd be happier if they
were handled. This proposal is nonetheless better than the status quo.
Y SYMBOL-MACROLET-DECLARE:ALLOW
Version 2, 9-Dec-88, mailed 9 Dec 88
Goes best with DECLARE-TYPE-FREE:LEXICAL (rather than no DECLARE-
TYPE-FREE or :ALLOW). It would be unreasonable to pass this and
reject the other.
Y SYMBOL-MACROLET-SEMANTICS:SPECIAL-FORM
Version 5, 30-Nov-88, mailed 9 Dec 88
I TAGBODY-CONTENTS:FORBID-EXTENSION
Version 5, 9-Dec-88 mailed 9 Dec 88
Contents should be valid forms (including self-evaluating) or valid
tags. Duplicate tags should be an error (as in the proposal).
Y TAILP-NIL:T
Version 5, 9-Dec-88, mailed 12-Dec-88
Y TEST-NOT-IF-NOT:FLUSH-ALL
Y TEST-NOT-IF-NOT:FLUSH-TEST-NOT
Version 3, 1 Dec 88 mailed 9 dec
I don't oppose "depreciation" instead of deletion.
The functionality of REMOVE-IF-NOT should be preserved under
another name. Perhaps DELETE-IF-NOT too.
Y TYPE-OF-UNDERCONSTRAINED:ADD-CONSTRAINTS
Version 3, 12-Dec-88, mailed 12 Dec 88
(some "bugs" in the proposal)
Y UNREAD-CHAR-AFTER-PEEK-CHAR:DONT-ALLOW
Version 2, 2-Dec-88, mailed 12-Dec-88
Y VARIABLE-LIST-ASYMMETRY:SYMMETRIZE
Version 3, 08-Oct-88, mailed 9 Dec 88
Jeff Dalton, JANET: J.Dalton@uk.ac.ed
AI Applications Institute, ARPA: J.Dalton%uk.ac.ed@nss.cs.ucl.ac.uk
Edinburgh University. UUCP: ...!ukc!ed.ac.uk!J.Dalton
∂11-Jan-89 2233 X3J13-mailer Issue: SEQUENCE-FUNCTIONS-EXCLUDE-ARRAYS (Version 6)
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 11 Jan 89 22:33:48 PST
Received: from Semillon.ms by ArpaGateway.ms ; 11 JAN 89 22:32:40 PST
Date: 11 Jan 89 22:30 PST
Sender: masinter.pa@Xerox.COM
Subject: Issue: SEQUENCE-FUNCTIONS-EXCLUDE-ARRAYS (Version 6)
To: X3J13@Sail.Stanford.Edu
Reply-to: cl-cleanup@sail.stanford.edu
From: cl-cleanup@sail.stanford.edu
cc: masinter.pa@Xerox.COM
line-fold: No
Message-ID: <890111-223240-11606@Xerox>
A more general version of this was introduced by Touretzky but
it was rejected by X3J13. This has much more restricted proposal.
!
Issue: SEQUENCE-FUNCTIONS-EXCLUDE-ARRAYS
References: Sequences (pp245-261), COERCE (p51)
Category: ENHANCEMENT
Edit history: 05-Feb-87, Version 1 by Touretzky (option GENERALIZED)
28-Apr-87, Version 2 by Pitman (add option MODIFIED)
26-Oct-87, Version 3 by Masinter (remove MODIFIED)
11-Nov-87, Version 4 by Masinter (respond to comments)
05-Feb-88, Version 5 by Masinter
06-Oct-88, Version 6 by Pitman
(revert to version 2, flush GENERALIZED option
-- which was rejected by X3J13 -- and resurrect MODIFIED)
Description:
Common Lisp provides many useful operations on lists and vectors which
don't apply to arrays.
For example, one can FILL a vector with 0's, but not an array. One can
REPLACE the contents of one vector with another, but one can't do this
for arrays. One can verify that EVERY element of a vector has some
property, but one can't do this for arrays. And so on.
The programmer who wishes to use arrays instead of vectors must give up
most of the useful tools CLtL provides for manipulating sequences, even
though there is no intuitive reason why operations like FILL, REPLACE,
and EVERY shouldn't work on arrays.
Proposal (SEQUENCE-FUNCTIONS-EXCLUDE-ARRAYS:MODIFIED):
Common Lisp already provides a facility called "displaced arrays"
which can be used to overlay one array on top of a portion of another,
even if the two are of different ranks, so that the two share storage.
Emphasize this as a way of explaining the behavior of sequence
functions on certain arrays.
Modify the definition of COERCE to allow the coercion of an array to
a vector and vice versa. In keeping with p51 of CLtL, it should be an
error if the result type has a different number of elements than the
object being coerced.
Extend the definitions of sequence functions that either return their
argument sequences, return sequences which are the same shape as their
argument, or return non-sequences so that they also allow arrays iff
their action is conceptually independent of the shape of the array.
The affected functions are COUNT, SOME, EVERY, NOTANY, NOTEVERY,
FILL, REPLACE, SUBSTITUTE, NSUBSTITUTE, and MAP.
Expressly forbid arrays as arguments to other sequence functions.
These other functions are LENGTH, ELT, FIND, POSITION, REDUCE, SEARCH,
MISMATCH, REVERSE, NREVERSE, SORT, MAP, SUBSEQ, COPY-SEQ, CONCATENATE,
MERGE, REMOVE, REMOVE-DUPLICATES, DELETE, DELETE-DUPLICATES.
Rationale:
This proposal would expand rather than interfere with existing practice.
Since displaced arrays are already part of Common Lisp, the cost of the
proposed changes would be very low.
If the change is not adopted, Common Lisp programmers who wish to use
arrays will have two choices. Either they must write nested DO loops
every time they want to perform an array operation equivalent to FILL,
REPLACE, etc., or else they can build displaced vectors by hand and
pass them to the sequence functions when necessary.
This proposal extends certain sequence functions in some interesting
ways without committing us to a theory of how arrays and sequences
relate that everyone may not be happy with right now.
Cost to Implementors:
This would involve a lot of changes to functions, but all of them
presumably minor. The presence of displaced arrays in the language
already guarantees that the internal storage format needed to back
up these proposed changes is already in place.
Benefits:
Users of arrays do not have to use home-grown utilities to duplicate
functionality already primitively provided to users of arrays. The
sequence functions become useful in a variety of new situations.
Cost to Users:
This change is `upward compatible.' User code should run unmodified.
Aesthetics:
This extends certain existing sequence functions to allow arrays
as arguments in a fairly non-controversial way, leaving aside the
larger issue of whether and how to generalize the other sequence
functions.
Current Practice:
Probably no one implements this now.
Discussion:
A more general version of this was introduced by Touretzky but
it was rejected by X3J13.
The members of the Cleanup committee expressed interest in the ideas
behind this proposal but weren't sure they could accept it in the
proposed form. A rewrite to separate some of the issues more clearly
was solicited. Rees suggested this subset of Tourtezky's proposal
might be interesting.
Note that the function REDUCE is in a gray area. Many of its uses
are not position-dependent, but some are. The same argument might
be made about FIND. If people felt strongly, these too could be
extended either by fudging the conservative rule or by explicit
special case(s), but they have been omitted to be conservative.
∂11-Jan-89 2237 X3J13-mailer Issue: SPECIAL-TYPE-SHADOWING (Version 1)
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 11 Jan 89 22:37:36 PST
Received: from Semillon.ms by ArpaGateway.ms ; 11 JAN 89 22:36:27 PST
Date: 11 Jan 89 22:35 PST
Sender: masinter.pa@Xerox.COM
Subject: Issue: SPECIAL-TYPE-SHADOWING (Version 1)
To: X3J13@Sail.Stanford.Edu
Reply-to: cl-cleanup@sail.stanford.edu
From: cl-cleanup@sail.stanford.edu
cc: masinter.pa@Xerox.COM
line-fold: No
Message-ID: <890111-223627-11614@Xerox>
!
Issue: SPECIAL-TYPE-SHADOWING
References: CLtL pages 156, 158
Related issues: DECLARE-TYPE-FREE
Category: CLARIFICATION
Edit history: Version 1, 04-Nov-88 by David Gray
Problem description:
A Common Lisp user raised the question of whether something like the
following is legal:
(PROCLAIM '(TYPE NUMBER *X*))
(DEFVAR *X*)
(DEFUN FOO ()
(LET ((*X* T))
(DECLARE (TYPE SYMBOL *X*))
(BAR)))
Page 156 of CLtL says that a proclamation is "always in force unless
locally shadowed" and page 158 says type declarations "only affect
variable bindings", which might be interpreted to mean that the DECLARE
locally shadows the PROCLAIM. However, that interpretation would make
the global type proclamation useless because it could not be relied on
when compiling a function such as BAR.
Proposal SPECIAL-TYPE-SHADOWING:CLARIFY
Clarify that if there is a local type declaration for a special
variable, and there is also a global type proclamation for that same
variable, then the value of the variable within the scope of the local
declaration must be a member of the intersection of the two declared
types.
Rationale:
Some restriction on local type declarations for special variables is
needed in order for type proclamations to be meaningful. The wording
used here was chosen for consistency with proposal DECLARE-TYPE-FREE.
Current practice:
The TI, Symbolics, and Lucid implementations do not report any error
on the example above, but it isn't clear that they really do anything
with type declarations for special variables anyway.
Cost to Implementors:
This is unlikely to require a change in any current implementation.
Cost to Users:
Anyone who has written code like the example above would have to
modify it if compilers started enforcing this restriction.
Cost of non-adoption:
A minor ambiguity in the language specification that could confuse
users.
Performance impact:
None.
Benefits:
A clearer definition of the meaning of type declarations for special
variables.
Discussion:
This is obviously very closely related to issue DECLARE-TYPE-FREE, but
this is an ambiguity in the existing language that should be resolved
even if the language extension of proposal DECLARE-TYPE-FREE is not
accepted. Note also that DECLARE-TYPE-FREE makes no mention of type
proclamations.
Other possible resolutions of the ambiguity would be to either rule
out use of local type declarations for special variables, or to say
that the local type must be a subtype of the global type.
∂11-Jan-89 2316 X3J13-mailer Issue: THE-AMBIGUITY (Version 2)
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 11 Jan 89 23:16:17 PST
Received: from Cabernet.ms by ArpaGateway.ms ; 11 JAN 89 23:14:58 PST
Date: 11 Jan 89 23:14 PST
Sender: masinter.pa@Xerox.COM
Subject: Issue: THE-AMBIGUITY (Version 2)
To: X3J13@Sail.Stanford.Edu
Reply-to: cl-cleanup@sail.stanford.edu
From: cl-cleanup@sail.stanford.edu
cc: masinter.pa@Xerox.COM
line-fold: No
Message-ID: <890111-231458-11647@Xerox>
This issue has two proposals.
!
Forum: cleanup
Issue: THE-AMBIGUITY
References: THE (page 161)
Category: CLARIFICATION
Edit history: 21-Oct-88, version 1 by Rees
11-Jan-89, version 2 by Masinter (fix typos)
Problem description:
CLtL does not explicitly say whether the type specifier in a THE
form may be any type specifier or must be a type specifier suitable
for discrimination. Although THE is decsribed as a "declaration"
form, some CL implementations have assumed that the specifier must
be for discrimination, and disallow e.g.,
(THE (FUNCTION (T T) CONS) #'CONS)
We should either say that the implementations are right, or
explicitly say that they are wrong, since this case is easily
overlooked.
Proposal (THE-AMBIGUITY:FOR-DECLARATION):
Clarify that the type specifier in
(THE type exp)
may be any valid type specifier. In the case that exp returns one
value and type is not a VALUES type specifier, (THE type exp) is
equivalent to
(LET ((g exp))
(DECLARE (TYPE type g))
g)
where "g" is a gensym.
Proposal (THE-AMBIGUITY:FOR-DISCRIMINATION):
Clarify that the type specifier in
(THE type exp)
must be a valid type for discrimination, as for TYPEP, or it must
be of the form (VALUES type*) where type* are all valid for discrimination.
Current practice:
The Symbolics Genera and VAX LISP V2.2 interpreters signal errors for
(THE (FUNCTION (T T) CONS) #'CONS),
but this may not be intentional. CLtL would seem to allow it.
Test case:
(THE (FUNCTION (T T) CONS) #'CONS),
should return the CONS function under FOR-DECLARATION,
and should be an error under FOR-DISCRIMINATION.
Cost to implementors:
Trivial cost for THE-AMBIGUITY:FOR-DISCRIMINATION; this is a compatible
restriction.
For THE-AMBIGUITY:FOR-DECLARATION, implementations that do not
already allow arbitrary type specifiers but which want to check that
the type in a THE is satisfied would have to create an internal
version of TYPEP which could manage not to signal invalid-type-specifier
errors in those situations where TYPEP would because the type is a
declaration-only one.
Cost to users:
Users of implementations that support THE-AMBIGUITY:FOR-DECLARATION
might have to remove or change some uses of THE in their code if the
opposing alternative is adopted.
Benefits:
Either way, an ambiguity in the language specification would be clarified.
Aesthetics:
THE-AMBIGUITY:FOR-DECLARATION would seem to be more consistent with
DECLARE and with the intent of THE, which is supposed to be a way to
provide information for documentation and for the benefit of compilation.
Discussion:
Rees supports THE-AMBIGUITY:FOR-DECLARATION.
Appropriate error situation terminology must be chosen for the
situation that a THE declaration (or other declaration) is
unsatisfied, but that must be done regardless of this proposal.
This proposal would suggest that a function should be added to CL to
do the checking that THE would want to do:
(PROBABLY-TYPEP object type-spec)
[terrible name of course] returns multiple values a la SUBTYPEP: T T
if the object definitely has the type, NIL T if it definitely
doesn't, and T NIL (or NIL NIL?) otherwise. Assuming that an
interpreted THE-expression actually checks types, you could almost
define this function using the condition system and EVAL. (Ugh!)
Without PROBABLY-TYPEP, a meta-circular interpreter is more
difficult to write.
If a suitable name was found for this function, the additional
functionality could be suggested as an independent proposal, since
regardless of the outcome of this issue, the functionality is still
useful for checking DECLARE's.
Various implementation mechanisms were discussed for dealing
with THE checking.
Are there any remaining type specifiers beyond the list form
of the FUNCTION type that differ between "declaration" and
"discrimination"?
"I support FOR-DECLARATION. Lucid CL has the same bug in
the interpreter as the others (a "bug" assuming FOR-DECLARATION).
TYPEP is used to check the legality of the type specifier in THE."
In considering possible ways in which the type-checking logic
for THE and DECLARE might work, don't forget things like
(the (not (function (t t) integer)) 7),
which you would want to signal an error. I don't think this can be
done with only TYPEP and conditions.
∂11-Jan-89 2346 X3J13-mailer Issue: UNDEFINED-VARIABLES-AND-FUNCTIONS (Version 1)
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 11 Jan 89 23:46:43 PST
Received: from Semillon.ms by ArpaGateway.ms ; 11 JAN 89 23:45:32 PST
Date: 11 Jan 89 23:45 PST
Sender: masinter.pa@Xerox.COM
Subject: Issue: UNDEFINED-VARIABLES-AND-FUNCTIONS (Version 1)
To: X3J13@Sail.Stanford.Edu
Reply-to: cl-cleanup@sail.stanford.edu
From: cl-cleanup@sail.stanford.edu
cc: masinter.pa@Xerox.COM
line-fold: No
Message-ID: <890111-234532-11838@Xerox>
It was believed that this issue might be controversial.
!
Issue: UNDEFINED-VARIABLES-AND-FUNCTIONS
References: 5.1.2 Variables (CLtL pp55-56),
Slots (88-002R, p1-10)
Category: CHANGE
Edit history: 29-Nov-88, Version 1 by Pitman
Problem Description:
CLtL does not specify what happens if you attempt to call a named function
which is in fact undefined. In most implementations, it would be devastating to
actually jump to code which you had not verified to be a function, so this error
should be easily caught -- yet, CLtL does not guarantee that an error will be
signalled even in the safest, least fast OPTIMIZE settings.
CLtL (p56) specifies that "it is an error to refer to a variable that is unbound."
CLOS (p1-10) specifies that "when an unbound slot is read, the generic function
SLOT-UNBOUND is invoked. The system-supplied primary method for SLOT-UNBOUND
signals an error."
CLOS and CLtL are not in agreement on their treatment of unbound variables.
CLtL is very weak in that it guarantees no support for reliably detecting
and signalling an error when the error situation occurs, even in the safest,
least fast OPTIMIZE setting.
CLOS is very strong in that it forces detection of the error in all
situations -- even in the fastest, least safe OPTIMIZE setting.
The disparate positions for treatment of variables and slots should be
reconciled, either by finding a compromise or by justifying the apparent
inconsistency. The final story should explain function references as well.
Proposal (UNDEFINED-VARIABLES-AND-FUNCTIONS:COMPROMISE):
Define that reading an undefined function, an unbound variable, or
an unbound slot must be detected in the highest safety setting,
but the effect is undefined in any other safety setting. That is,
- Reading an undefined function should signal an error.
- Reading an an unbound variable should signal an error.
- Reading an unbound slot should invoke the function SLOT-UNBOUND.
By ``reading an undefined function'' in the above, we mean to
include both references to the function using the FUNCTION
special form, such as F in (FUNCTION F) and references to the
function in a call, such as F in (F X).
For the case of INLINE functions (in implementations where they are
supported), it is permissible to consider that performing the inlining
constitutes the read, so that an FBOUNDP check need not be done at
execution time. Put another way, the effect of FMAKUNBOUND of a function
on potentially inlined references to that function is undefined.
Specify that the type of error signalled when an undefined function
is detected is UNDEFINED-FUNCTION, and that the NAME slot of the
UNDEFINED-FUNCTION condition is initialized to the name of the
offending function.
Specify that the type of error signalled when a unbound variable
is detected is UNBOUND-VARIABLE, and that the NAME slot of the
UNBOUND-VARIABLE condition is initialized to the name of the
offending variable.
Introduce a new condition type, UNBOUND-SLOT, which inherits from
CELL-ERROR. This new type has an additional slot, INSTANCE, which
can be initialized using the :INSTANCE keyword to MAKE-CONDITION.
Introdue a new function UNBOUND-SLOT-INSTANCE to access INSTANCE slot.
Specify that the type of error signalled by the default primary
method for the SLOT-UNBOUND generic function is UNBOUND-SLOT,
and that the NAME slot of the UNBOUND-SLOT condition is initialized
to the name of the offending variable, and that the INSTANCE slot
of the UNBOUND-SLOT condition is initialized to the offending instance.
Test Case:
(PROCLAIM '(OPTIMIZE (SAFETY 3) (SPEED 0)))
(DEFUN FOO () X)
(FOO)
>>Error: The variable X is not bound.
...
Rationale:
This makes it easier to treat slots like variables.
This makes it possible to better rely on an unbound variable error being
signalled when one has occurred.
This makes it possible to compile out useless error checking in CLOS
code where the code is debugged and the checking is redundant.
For the case of undefined functions, blindly jumping to an undefined
function is an incredibly dangerous thing to do. Every implementation
should guarantee at least some way to get error checking of undefined
functions.
Current Practice:
Until recently, Symbolics Cloe did not ever signal an error on unbound
variable, even in the safest case. The excuse was that this was a CLtL
didn't require it, but it was sometimes an impediment to debugging.
Some benchmarks for Symbolics Cloe (which currently only claims to
implement New Flavors, not CLOS) could be faster if checking for unbound
instance variables could be optimized away.
Symbolics Genera doesn't care about safety issues in variable access
because the check can be done by microcode.
Cost to Implementors:
This change does not force a change to any current implementation, except
those which do not yet signal unbound variable or undefined function errors
even in the safest setting.
Cost to Users:
This checking might slow down some code which is written for the safest
setting yet does not need this check.
Any implementation-specific code which depended on these references not
signalling would be broken. Such code was not portable, of course.
Any CLOS code which depends on SLOT-UNBOUND being called even in low safety
settings would be broken. The amount of such code at this point is likely
to be little or none. If such cases did exist, local or global changes to
safety settings would correct the problem (at some cost in speed).
Cost of Non-Adoption:
Some important error checking would not occur.
Some important optimizations could not be done.
The language would seem internally less consistent.
Benefits:
The costs of non-adoption would be avoided.
Aesthetics:
This would regularize things a little.
Discussion:
Pitman thinks this would be a good idea.
∂11-Jan-89 2357 X3J13-mailer Issue: DEFSTRUCT-CONSTRUCTOR-KEY-MIXTURE (Version 3)
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 11 Jan 89 23:57:24 PST
Received: from Cabernet.ms by ArpaGateway.ms ; 11 JAN 89 23:55:59 PST
Date: 11 Jan 89 23:55 PST
Sender: masinter.pa@Xerox.COM
Subject: Issue: DEFSTRUCT-CONSTRUCTOR-KEY-MIXTURE (Version 3)
To: X3J13@Sail.Stanford.Edu
Reply-to: cl-cleanup@sail.stanford.edu
From: cl-cleanup@sail.stanford.edu
cc: masinter.pa@Xerox.COM
line-fold: No
Message-ID: <890111-235559-11843@Xerox>
Several people endorsed a proposed change from Kim Barrett
to add &ALLOW-OTHER-KEY.
This version does that, and also adds a possibly controversial
feature of allowing arguments that don't name slots but
are only used in the computation of other (default or &AUX)
values.
For discussion.
!
Forum: Cleanup
Issue: DEFSTRUCT-CONSTRUCTOR-KEY-MIXTURE
References: CLtL page 316
Category: CHANGE
Edit history: 20-Sep-88, Version 1, Peck
21-Sep-88, Version 2, Masinter, minor revisions
8-Jan-89, Version 3, Masinter
Problem description:
Currently, DEFSTRUCT constructor functions can be either the default
constructor function, with *only* keyword arguments, or it can be a
so-called "By Order of Arguments" constructor function with explicitly
*no* keyword arguments. Other functions in Common Lisp allow a free
mix of required, optional, and keyword arguments.
With the current restriction, it is necessary to hand code a function that
will accept optional and keyword arguments and parse the supplied-p
variables explicitly. Even so, it is not obvious to the casual programmer
how to provide the same semantics as defstruct does with respect to default
values and the defstruct init-forms.
Proposal: DEFSTRUCT-CONSTRUCTOR-KEY-MIXTURE:ALLOW-KEY
Allow &KEY keyword arguments in constructor forms of DEFSTRUCTs
and the &ALLOW-OTHER-KEYS token in addition to the &OPTIONAL,
&REST and &AUX arguments already allowed. Keyword arguments default
in a manner similar to that of &OPTIONAL arguments: if no default
is supplied in the lambda-list then the slot initform is used;
otherwise the slot is not initialized -- its initial value is
undefined.
If keyword arguments of the form ((key var) [default [svar]])
are specified, the "slot name" is matched with VAR (and not KEY).
Additional arguments that do not correspond to slot names but
are merely present to supply values used in subsequent initialization
computations are allowed.
Examples:
It should be possible to write forms like this:
(defstruct (foo (:constructor CREATE-FOO (a &optional b (c 'sea)
&key (d 2)
&aux e (f 'eff))))
(a 1) (b 2) (c 3) (d 4) (e 5) (f 6))
(create-foo 10) => #S(foo a 10 b 2 c sea d 2 e nil f eff)
(create-foo 10 'bee 'see :d 'dee) => #S(foo a 10 b bee c see d dee e nil f eff)
In the definition:
(defstruct (frob (:constructor create-frob
(a &key (b 3 have-b) (c-token 'c)
(c (list c-token (if have-b 7 2))))))
a b c)
the c-token argument is used merely to supply a value used in the
initialization of the c slot. The "supplied-p" arguments of
keyword arguments might be of this form.
Rationale:
This is a logical extension of the specification which makes some
programming easier.
Current practice:
Many implementations signal an error if given &KEY arguments or
arguments that are not slot names. The latest version of IIM Common
Lisp allows &KEY arguments in this manner. Envos Medley
(Xerox Common Lisp) implements the proposal.
Cost to Implementors:
The modifications to allow intermixed keywords and optionals in implementations
that don't already are likely simple.
Cost to Users:
No cost, this is upward compatible.
Cost of non-adoption:
The current situation is non-intuitive and needless restrictive.
Benefits:
Much easier for users to write the constructor function they want.
Probably implementation code would be reduced, since this would no
longer be an error.
Esthetics:
Minor improvement since it removes a needless restriction.
Discussion:
Possibly references to "By-position", "positional", and "By Order of
Arguments" constructor function might need to be changed to something else in
the standard. (They can still be called BOA-constructors, though, right? :-)
Version 2 of this proposal was on the January 1989 ballot.
----- End Forwarded Messages -----
∂12-Jan-89 0015 X3J13-mailer Issue: EQUAL-STRUCTURE, (Version 6)
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 12 Jan 89 00:14:59 PST
Received: from Semillon.ms by ArpaGateway.ms ; 12 JAN 89 00:12:56 PST
Date: 12 Jan 89 00:12 PST
Sender: masinter.pa@Xerox.COM
Subject: Issue: EQUAL-STRUCTURE, (Version 6)
To: X3J13@Sail.Stanford.Edu
Reply-to: cl-cleanup@sail.stanford.edu
From: cl-cleanup@sail.stanford.edu
cc: masinter.pa@Xerox.COM
line-fold: No
Message-ID: <890112-001256-11866@Xerox>
Please see the Additional Comments at the end. Several people
noted problems with Version 5.
!
Issue: EQUAL-STRUCTURE
References: EQUAL (p80), EQUALP (p81)
Category: CLARIFICATION/CHANGE
Edit history: 18-Mar-88, Version 1 by Pitman
08-Jun-88, Version 2 by Masinter (add Benson's proposal)
23-Sep-88, Version 3 by Masinter (remove all but STATUS-QUO)
01-Oct-88, Version 4 by Masinter (fix description)
01-Oct-88, Version 5 by Pitman (correct wording, add discussion)
11-Jan-89, Version 6 by Pitman (attempt EQUALP correction)
Problem Description:
The behavior of EQUAL and EQUALP on structures is a subject of controversy.
At issue are whether these functions should descend the slots of structures
or use simply the structure's primitive identity (i.e., EQ) to test for
equivalence.
Proposal (EQUAL-STRUCTURE:MAYBE-STATUS-QUO):
Clarify that EQUAL and EQUALP do not descend any structures or data types
other than the ones explicitly specified in CLtL.
Type EQUAL Behavior EQUALP Behavior
Number uses EQL uses =
Character uses EQL uses CHAR-EQUAL
Cons descends descends
Bit-Vector descends descends
String descends descends
Pathname magic per CLtL same as EQUAL
Structure uses EQ descends
other Array uses EQ descends
Instance (Standard-Object) uses EQ descends
Hash-Table uses EQ uses EQ
Other uses EQ uses EQ
Note that the order of this table is in some cases important, with upper
entries taking priority over lower ones.
Rationale:
There seem to be as many different equality primitives as there
are applications for them. None of the possible ways of changing
EQUAL or EQUALP are flawless. Given the inability to "fix" them,
it is better to leave them alone.
Current Practice:
We are unaware of any extensions to CLtL's set of operations,
although frequently users request them.
Cost to Implementors:
Since this seems to be compatible with the status quo, none.
Cost to Users:
Same
Cost of Non-Adoption:
Ongoing controversy about whether EQUAL and EQUALP "do the right thing".
Benefits:
A feeling that EQUAL and EQUALP exist and/or do what they do because serious
consideration was given and we consciously decided on a particular resolution
to the numerous questions that have come up about them.
Aesthetics:
There seems to be wide debate about what the proper aesthetics for
how equality should work in Common Lisp. While the status quo is not
aesthetically more pleasing than the various alternatives, aesthetic
considerations vary widely. Different people model structures
differently. Sometimes the same person models structures differently in
different situations. The question of which should be descended and which
should not is a very personal one, and the aesthetic attractiveness of any
of these options will vary from person to person or application to
application.
Discussion:
An earlier version of this issue with various alternatives was distributed
at the June 1988 X3J13 meeting. Since
this is a frequently raised issue, we thought we should submit it
as a clarification although there is no change to CLtL.
Options for which we considered proposals were:
- removing EQUAL and EQUALP from the standard.
- changing EQUALP to descend structures.
- changing EQUALP to be case sensitive.
- adding a :TEST keyword to EQUAL.
- making EQUAL a generic function
All of these had some serious problems.
The cleanup committee supports option STATUS-QUO.
It would be useful if descriptions of EQUAL and EQUALP contained some sort
of additional commentary alluding to the complex issues discussed here.
The following is offered to the Editorial staff as a starting point:
Object equality is not a concept for which there is a uniquely
determined correct algorithm. The appropriateness of an equality
predicate can be judged only in the context of the needs of some
particular program. Although these functions take any type of
argument and their names sound very generic, EQUAL and EQUALP are
not appropriate for every application. Any decision to use or not
use them should be determined by what they are documented to do
rather than any abstract characterization of their function. If
neither EQUAL nor EQUALP is found to be appropriate in a particular
situation, programmers are encouraged to create another operator
that is appropriate rather than blame EQUAL or EQUALP for ``doing
the wrong thing.''
!
Additional Comments to Version 6:
Version 6 attempts to fix some of the problems noted in Version 5.
There are still some open questions. Only the "Proposal"
part has been changed since Version 5; some of the costs,
benefits & other discussion is now incorrect.
Kent says:
Please read this very carefully before voting in favor of it.
There were a lot of Yes votes for the last version, which I think
had some serious bugs in it. This would be a very bad issue for
us to screw up.
Things that might need special attention:
- Moon contends that standard practice in Symbolics Lisp is
for instances to be compared using EQ under EQUALP, not by
descending. There may be performance issues involved here.
Some agreement needs to be reached.
- Neither the previous version of the proposal nor CLtL was
clear on what happens to pathnames under EQUALP. This showed
up when I converted the presentation below. That issue should
be addressed as well.
Hopefully if this version of the proposal isn't something you want to
vote yes for, at least it's in a suitable form for easy line-item
changes interactively in the meeting.
∂12-Jan-89 0104 X3J13-mailer Issue: ADJUST-ARRAY-NOT-ADJUSTABLE (Version 4)
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 12 Jan 89 01:04:15 PST
Received: from Cabernet.ms by ArpaGateway.ms ; 12 JAN 89 01:02:45 PST
Date: 12 Jan 89 01:02 PST
Sender: masinter.pa@Xerox.COM
Subject: Issue: ADJUST-ARRAY-NOT-ADJUSTABLE (Version 4)
To: X3J13@Sail.Stanford.Edu
Reply-to: cl-cleanup@sail.stanford.edu
From: cl-cleanup@sail.stanford.edu
cc: masinter.pa@Xerox.COM
line-fold: No
Message-ID: <890112-010245-11915@Xerox>
There was debate over the meaning of the phrase
"status quo" an whether this proposal reflected it.
It wasn't a very useful debate. I hope we can avoid more
of it.
!
Issue: ADJUST-ARRAY-NOT-ADJUSTABLE
References: ADJUST-ARRAY (p297), ADJUSTABLE-ARRAY-P (p293),
MAKE-ARRAY (pp286-289)
Category: CLARIFICATION/CHANGE
Edit history: 22-Apr-87, Version 1 by Pitman
15-Nov-88, Versions 2a,2b,2c by Pitman
02-Dec-88, Version 3 by Pitman
11-Jan-89, Version 4 by Pitman
Problem Description:
The description of the :ADJUSTABLE option to MAKE-ARRAY on p288
says that ``the argument, if specified and not NIL, indicates that
it must be possible to alter the array's size dynamically after
it is created. This argument defaults to NIL.''
The description of the :ADJUSTABLE option does not say what
MAKE-ARRAY will do if the argument is unsupplied or explicitly NIL.
Some of the original Common Lisp designers assert that the
:ADJUSTABLE option exists in order to allow a user to select
between getting adjustable and non-adjustable arrays.
Others of the original Common Lisp designers assert that the
:ADJUSTABLE option existed to permit implementations in which
making all arrays adjustable was very expensive to make some
arrays not adjustable.
The former camp therefore believes that :ADJUSTABLE NIL means
that the array MUST be non-adjustable. The latter camp believes
that :ADJUSTABLE NIL means that the array MIGHT be non-adjustable.
The description of ADJUSTABLE-ARRAY-P on p293 says that it is
true ``if the argument (which must be an array) is adjustable, and
otherwise false.'' However, the description of MAKE-ARRAY makes
it clear that this is not necessarily the same as asking if
the array was created with :ADJUSTABLE T. If ADJUSTABLE-ARRAY-P
returns NIL, you know that :ADJUSTABLE NIL was supplied (or no
:ADJUSTABLE option was supplied), but if ADJUSTABLE-ARRAY-P returns
T, then there is no information about whether :ADJUSTABLE was used.
The description of ADJUST-ARRAY on pp297-298 says that it is
``not permitted to call ADJUST-ARRAY on an array that was not
created with the :ADJUSTABLE option.'' Although this sentence
is slightly ambiguous (one might argue that :ADJUSTABLE NIL
involves supplying the :ADJUSTABLE option), it is generally
interpreted to mean that ``... with :ADJUSTABLE T.''
One problem is that since ADJUSTABLE-ARRAY-P does not predicate
whether the :ADJUSTABLE option was provided, then
ADJUSTABLE-ARRAY-P is not an appropriate predicate in all
implementations to determine whether an array is adjustable.
Technically, :ADJUSTABLE NIL could create and adjustable array
(one for which ADJUSTABLE-ARRAY-P returns true), and yet
ADJUST-ARRAY might refuse to adjust it (if it had recorded a
separate bit saying whether :ADJUSTABLE T had been specified
and used that bit for ADJUST-ARRAY). Fortunately, this problem
has not been observed to occur in practice, but it is present
in principle.
A problem which comes up in practice is that some programmers
expect runtime error checking if they have done
(MAKE-ARRAY ... :ADJUSTABLE NIL) and they later try to adjust
the array using ADJUST-ARRAY. That expectation is violated by
legitimate implementations, since it is permissible for an
implementation to create an adjustable array even though it has
not been asked for, and since calling adjust array on such an
array "is an error" (and hence the behavior can be extended).
This perceived lack of error checking may become a legitimate
portability error to someone who has debugged his code in a
an implementation where :ADJUSTABLE NIL arrays might still be
adjustable and then tried ported his code to an implementation
which is more conservative in its interpretation.
Proposal (ADJUST-ARRAY-NOT-ADJUSTABLE:DONKEY):
Define that omitting the :ADJUSTABLE option to MAKE-ARRAY or
explicitly supplying :ADJUSTABLE NIL may not guarantee a
non-adjustable array.
Define that ADJUSTABLE-ARRAY-P -must- be true of an array created
using :ADJUSTABLE T.
Define that ADJUSTABLE-ARRAY-P -might- be true of an array created
with no :ADJUSTABLE option or with :ADJUSTABLE NIL, but that it
-might- return false.
Clarify that the implication of the above is that saying that an
array A "is adjustable" means that (ADJUSTABLE-ARRAY-P A) => true.
Further clarify that the adjustability of an array has no necessary
relation to any value was given (or not given) as the :ADJUSTABLE
option in the call to MAKE-ARRAY which created the array A.
Clarify that there is no portable way to create a non-adjustable
array (that is, an array for which ADJUSTABLE-ARRAY-P is
guaranteed to return false).
Change the description of ADJUST-ARRAY to say that if an attempt
is made to adjust an array which is not adjustable (that is, an
array for which ADJUSTABLE-ARRAY-P would return false), an error
will be signalled.
Clarify that this legitimizes ADJUSTABLE-ARRAY-P as an appropriate
predicate to determine whether ADJUST-ARRAY will reliably succeed.
Rationale:
This effectively makes the status quo explicit.
While changing this to a tighter interpretation would be desirable, some
implementations have suggested that such a change might be very expensive
or impossible given their existing data storage layouts.
Although technically the changes to ADJUST-ARRAY are incompatible changes
from the spec, it's not believed that there are any implementations which
deviate, so we're still categorizing this as a clarification.
Current Practice:
Probably everyone is compatible with this proposal.
Symbolics Genera makes :ADJUSTABLE NIL arrays adjustable in most cases,
and is compatible with this proposal.
Lucid, IIM, and Symbolics Cloe make :ADJUSTABLE NIL arrays non-adjustable
in all cases, and are compatible with this proposal.
Cost to Implementors:
It's in principle possible that some implementation would have to change,
but in practice there are no known implementations that would have to change.
Cost to Users:
None. This is a fully compatible change from the user's standpoint.
Benefits:
Users would know what to expect.
Non-Benefits:
Users who expect adjusting arrays created with :ADJUSTABLE NIL to signal
an error would not get the desired error checking.
Aesthetics:
Most people believe the status quo is unaesthetic.
Discussion:
MACSYMA ran into portability problems due to the status quo.
If the issue had been documented, that would have helped.
Encouraging implementations that are able to at least make
(MAKE-ARRAY ... :ADJUSTABLE NIL) create non-adjustable arrays
where possible would help, too.
We considered proposals to incompatibly change this primitive in a
variety of ways, but the community was very split with strong proponents
and opponents of each alternate proposal.
The overriding concern driving this proposal is that Symbolics
has asserted that most of the other really interesting proposals would
likely involve a sizable cost to implementors (and their installed bases)
to implement what were judged by some as gratuitous changes from the
status quo.
Pitman wishes some of the other proposals were economically feasible to
pursue but reluctantly agrees that maintaining (and clearly documenting)
the status quo is probably the most reasonable avenue left to us.
∂12-Jan-89 0117 X3J13-mailer Issue: APPEND-ATOM (Version 1)
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 12 Jan 89 01:16:56 PST
Received: from Semillon.ms by ArpaGateway.ms ; 12 JAN 89 01:15:28 PST
Date: 12 Jan 89 01:09 PST
Sender: masinter.pa@Xerox.COM
Subject: Issue: APPEND-ATOM (Version 1)
To: X3J13@Sail.Stanford.Edu
Reply-to: cl-cleanup@sail.stanford.edu
From: cl-cleanup@sail.stanford.edu
cc: masinter.pa@Xerox.COM
line-fold: No
Message-ID: <890112-011528-11925@Xerox>
!
Issue: APPEND-ATOM
References: APPEND (p268)
Issue APPEND-DOTTED
Category: CHANGE/CLARIFICATION
Edit history: Version 1 06-Dec-88 by Steele
Problem Description:
The issue APPEND-DOTTED, as passed by X3J13, contains a minor technical
flaw: it can be construed as leaving undefined the case where an argument
to APPEND other than the last is an atom. The relevant paragraph of that
issue proposal is:
In the degenerate case where there is no last cons (i.e., the argument is
NIL) in any but the last list argument, clarify that the entire argument is
effectively ignored. Point out that in this situation, if the last argument
is a non-list, the result of APPEND or NCONC can be a non-list.
Here is the nit: the use of "i.e." leads one to believe that the
only degenerate case defined is that where the argument is NIL.
I suspect that "e.g." was intended, so as to make all atomic objects
ignored in other than the last argument.
Proposal (APPEND-ATOM:IGNORE):
In the degenerate case where there is no last cons (i.e., the argument
is an atom) in any but the last list argument, clarify that the entire
argument is effectively ignored. Point out that in this situation, if
the last argument is a non-list, the result of APPEND or NCONC can be
a non-list.
Proposal (APPEND-ATOM:ERROR)
In the degenerate case where there is no last cons (i.e., the argument
is an atom) in any but the last list argument, clarify that a value of
NIL is treated as an empty list and therefore effectively ignored, and
any other atom is an error. Point out that in this situation, if the
last argument is a non-list, the result of APPEND or NCONC can be a
non-list.
Examples:
Under APPEND-ATOM:IGNORE:
(APPEND '(a b) 'MOOSE '(c . d)) => (a b c . d) ;Proposed
(NCONC '(a b) 'MOUSSE '(c . d)) => (a b c . d) ;Proposed
(APPEND 'GUACAMOLE 17) => 17 ;Proposed
(NCONC 'SAUERKRAUT 17) => 17 ;Proposed
Under APPEND-ATOM:ERROR these cases would all be errors.
Rationale:
APPEND-ATOM:IGNORE makes a boundary case (a "zero-length dotted list")
consistent with other cases handled by the proposal APPEND-DOTTED:REPLACE.
APPEND-ATOM:ERROR would at least resolve a possible ambiguity.
Current Practice:
Lucid Lisp, KCL, and Symbolics Common Lisp all signal an error in both
interpreted and compiled code.
Cost to implementors:
Technically, the change for APPEND-ATOM:IGNORE should be relatively
small for those implementations which don't already implement it.
However, implementations which have microcoded APPEND or NCONC
incompatibly may find the small change somewhat painful.
Some implementations may have optimized their APPEND or NCONC to expect only
NIL when SAFETY is 0. In this case, depending on implementation details,
requiring an ATOM check rather than a NULL check may slow things down.
Cost to users:
Each proposal is upward compatible.
Benefits:
Since dotted lists are allowed as a non-last argument, readers will
probably assume that the boundary case of a zero-length dotted list
(that is, an atom) also works, something that doesn't appear to be
guaranteed by a strict reading. Proposal APPEND-ATOM:IGNORE would
happen to legitimize such assumptions.
Aesthetics:
Whether or not users will think this improves the aesthetics of the language
will depend largely on how they view the relation between lists and dotted
lists. Those who view dotted lists as a special kind of list may feel
differently than those who view lists as a special kind of dotted list.
The downside of APPEND-ATOM:IGNORE is that APPEND is supposed to
operate on lists, and it is mildly offensive to let it accept atoms,
and worse yet to ignore them. Furthermore, a certain amount of useful
error checking may be lost.
Discussion:
Guy Steele supports proposal APPEND-ATOM:IGNORE, but with some qualms.
He raises it mainly because of the possibility that
APPEND-DOTTED:REPLACE was not worded exactly as intended.
∂12-Jan-89 0121 X3J13-mailer Issue: BACKQUOTE-COMMA-ATSIGN-DOT-COMMA (Version 1)
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 12 Jan 89 01:21:36 PST
Received: from Cabernet.ms by ArpaGateway.ms ; 12 JAN 89 01:20:02 PST
Date: 12 Jan 89 01:19 PST
Sender: masinter.pa@Xerox.COM
Subject: Issue: BACKQUOTE-COMMA-ATSIGN-DOT-COMMA (Version 1)
To: X3J13@Sail.Stanford.Edu
Reply-to: cl-cleanup@sail.stanford.edu
From: cl-cleanup@sail.stanford.edu
cc: masinter.pa@Xerox.COM
line-fold: No
Message-ID: <890112-012002-11939@Xerox>
There has been discussion on this issue not reflected in the
writeup. Some of the cost/benefit analysis misses some of the
Costs to Users, for example.
!
Status: DRAFT
Issue: BACKQUOTE-COMMA-ATSIGN-DOT-COMMA
Forum: Cleanup
References: Back quote (pp349-351)
Category: CLARIFICATION/CHANGE
Edit history: 22-Dec-88, Version 1 by Pitman
Problem Description:
The consistent description of backquote has been disrupted by
recent changes in the semantics of APPEND.
The description at the bottom of p350 suggests that
`(foo ,@bar) can be legitimately interpreted as any of
#1: (list* 'foo bar)
#2: (append (list 'foo) bar)
#3: (append (list 'foo) bar '())
Unfortunately, issue APPEND-DOTTED has disrupted the equivalences
here because if BAR holds a dotted list, #1 and #2 are the same (they
preserve the `dotted cdr'), but #3 is different (it replaces the
`dotted cdr' with NIL). Under CLtL, a dotted list given to APPEND was
an error, so this case did not come up. But since ANSI CL will not make
this an error, this ambiguity must be resolved.
Proposal (BACKQUOTE-COMMA-ATSIGN-DOT-COMMA:DIVERGENT):
Define that `(x1 ... xM . ,xN) is equivalent to (LIST* x1 ... xN).
The actual (EQL) object xN will be used without copying in the result.
The result itself might not be a proper list (e.g., if xN is an
atom or dotted list).
Define that `(x1 ... xM ,@xN) is equivalent to
(APPEND (LIST 'x1) ... (list 'xM) xN '()).
Any top-level list structure of the object xN will be copied in the
result, replacing (CDR (LAST xN)) with NIL (or replacing xN itself
with NIL if xN is an atom and issue APPEND-ATOM passes).
Proposal (BACKQUOTE-COMMA-ATSIGN-DOT-COMMA:INTERCHANGEABLE):
Define that `(x1 ... xM . ,xN) is equivalent to (LIST* x1 ... xN).
The actual (EQL) object xN will be used without copying in the result.
The result itself might not be a proper list (e.g., if xN is an
atom or dotted list).
Define that `(x1 ... xM ,@xN) is equivalent to
(APPEND (LIST 'x1) ... (list 'xM) xN).
The actual (EQL) object xN will be used without copying in the result.
The result itself might not be a proper list (e.g., if xN is an
atom or dotted list).
Notes:
Note well that this has implications which go beyond dotted lists.
Currently, `(FOO ,@X) may be implemented by either
(LIST* 'FOO X)
or (APPEND (LIST 'FOO) X '())
or (APPEND (LIST 'FOO) X)
A consequence of the proposals above is to distinguish between
the two APPEND cases, forcing changes in the side-effect behavior
of backquoted structures currently exhibited by some implementations.
Test Cases:
;; Issue #1: Non-side-effect treatment of dotted lists.
(LET ((DOTTED (LIST* 'A 'B 'C)))
(VALUES `(FOO ,@DOTTED)
`(FOO . ,DOTTED)))
=> (FOO A B), (FOO A B . C) ;under proposal DIVERGENT
=> (FOO A B . C), (FOO A B . C) ;under proposal INTERCHANGEABLE
;; Issue #2a: Side-effects
;; Sometimes called the ``Standard Backquote Screw''
;; Structure is unintentionally shared.
(LET ((TAIL1 (LIST 'A 'B 'C))
(TAIL2 (LIST 'A 'B 'C)))
(FLET ((GET-XABC-COMMA-ATSIGN () `(X ,@TAIL1))
(GET-XABC-DOT-COMMA () `(X . ,TAIL2)))
(LET ((TEMP1 (GET-XABC-COMMA-ATSIGN))
(TEMP2 (GET-XABC-DOT-COMMA)))
(SETF (CADDR TEMP1) 'Z)
(SETF (CADDR TEMP2) 'Z)
(VALUES TEMP1 (GET-XABC-COMMA-ATSIGN)
TEMP2 (GET-XABC-DOT-COMMA)))))
=> (X A Z C), (X A B C), (X A Z C), (X A Z C) ;under proposal DIVERGENT
=> (X A Z C), (X A Z C), (X A Z C), (X A Z C) ;under proposal INTERCHANGEABLE
;; Issue #2b: Side-effects
;; Sometimes called ``Inverse Backquote Screw''
;; Structure is unintentionally copied.
(LET ((VAR 'X)
(VAL '7)
(THE-SETQ-TAIL (LIST NIL NIL)))
(LET ((COMMA-ATSIGN `(SETQ ,@THE-SETQ-TAIL))
(DOT-COMMA `(SETQ . ,THE-SETQ-TAIL)))
(SETF (CAR SETQ-TAIL) VAR)
(SETF (CADR SETQ-TAIL) VAL)
(VALUES COMMA-ATSIGN DOT-COMMA)
=> (SETQ NIL NIL), (SETQ X 7) ; under proposal DIVERGENT
=> (SETQ X 7), (SETQ X 7) ; under proposal INTERCHANGEABLE
Rationale:
This clarifies an ambiguity in the description of the language which was caused
by issue APPEND-DOTTED and APPEND-ATOM.
Although CLtL tries not to specify the sharing and side-effect implications
of backquote, there is no really principled reason for its failure to do so.
In practice, the failure to do so leads to gratuitous portability barriers.
Current Practice:
Currently, the definition of APPEND is such that it would be an error
to pass it a dotted list, so there is no possibility of discrepancy
because the interesting case is an "is an error" case.
Cost to Implementors:
Very small. Some implementations would need to change how they implement
backquote. Presumably this is a very isolated change.
Cost to Users:
Technically, none. Existing code is not supposed to rely on the distinctions
discussed here. The distinction will only be meaningful when ANSI CL goes into
effect.
In practice, since some implementations will have to change incompatibly,
some code which accidentally relies on the current behavior will break.
However, once such code is fixed, it will be more portable because
implementations will not gratuitously diverge.
Cost of Non-Adoption:
An ambiguity would exist in the language, confusing both users and
implementors.
Benefits:
An ambiguity would be removed.
Some gratuitous barriers to portability would be removed.
Aesthetics:
Proposal DIVERGENT makes things slightly harder to learn.
Both proposals make things more predictably portable, which presumably
has some aesthetic appeal.
Discussion:
Pitman thinks that either of these choices will be better than the status quo.
Given that some people already think of ., and ,@ as interchangeable and merely
a matter of personal style, it would be better to go with option INTERCHANGEABLE.
∂12-Jan-89 1004 @Score.Stanford.EDU:laudon@Portia.stanford.edu Jan 17 federal funding panel
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 12 Jan 89 10:03:56 PST
Received: from Portia.stanford.edu by SCORE.STANFORD.EDU with TCP; Thu 12 Jan 89 10:01:03-PST
Received: by Portia.stanford.edu (5.59/25-eef) id AA17756; Thu, 12 Jan 89 10:00:32 PDT
Date: Thu, 12 Jan 89 10:00:32 PDT
From: James Laudon <laudon@Portia.stanford.edu>
Message-Id: <8901121800.AA17756@Portia.stanford.edu>
To: csl-students@shasta, ee-faculty@sierra, faculty@score, su-events@polya
Subject: Jan 17 federal funding panel
Cc: laudon@portia
A reminder of the panel on federal funding to be held on January 17. Note
that Prof. Richard Karp has been added to the panel.
FEDERAL FUNDING OF THE ACADEMIC PHYSICAL SCIENCES
PANELISTS
Prof. Philip Anderson (Nobel Prize)
Physics, Princeton University
Prof. Richard Karp (Turing Award)
Computer science, U.C. Berkeley
Prof. Robert Park
Executive Director, Office of Public Affairs, The American Physical Society
Dr. Burton Richter (Nobel Prize)
Director, SLAC
Dr. Robert M. Rosenzweig
President, Association of American Universities
Prof. William Thurston (Fields Medal)
Mathematics, Princeton University
Moderator: Dr. Barbara Simons
Computer Science, IBM Almaden Research Center
Abstract: Federal funding of science is a major component of science policy.
Which areas are funded, how much funding they receive, which agencies do the
funding, and who makes the decisions are important issues. Fields prosper and
decline according to these decisions. Graduate students' choice of specialty
is influenced by funding. Teaching loads and even tenure decisions can be
affected. Since funding has a profound influence on technology, funding
policy has significant economic repercussions. It also has political
repercussions, as politicians become increasingly involved with the funding
process. Scientific and academic freedom are at issue. Researchers who fear
that their funding may be cut for political reasons, even if the fears are
unfounded, may engage in self-censorship.
What should be national funding priorities?
What has been the effect of the increased emphasis on 'big science' in recent
years?
How have the trends toward mission oriented and defense oriented funding
affected the quality and nature of scientific research?
Is there an imbalance of funding sources for some scientific disciplines, and,
if so, is this a problem?
What impact has science funding policy had on universities, faculty, and
graduate students?
Have government policies with respect to science funding been in the best
interest of science?
Are there ways in which these policies can be improved?
Date: Tuesday Jan. 17, 1989
Time: 8:30 A.M. - 11:30 A.M.
Place: the California East Room of the St. Francis Hotel, San Francisco
Sponsored by: the American Association for the Advancement of Science, the
American Physical Society, and the American Association of Physics Teachers
∂12-Jan-89 1413 X3J13-mailer Issue: CLOSE-CONSTRUCTED-STREAM (Version 2)
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 12 Jan 89 14:13:17 PST
Received: from Cabernet.ms by ArpaGateway.ms ; 12 JAN 89 13:58:56 PST
Date: 12 Jan 89 13:58 PST
Sender: masinter.pa@Xerox.COM
Subject: Issue: CLOSE-CONSTRUCTED-STREAM (Version 2)
To: X3J13@Sail.Stanford.Edu
Reply-to: cl-cleanup@sail.stanford.edu
From: cl-cleanup@sail.stanford.edu
cc: masinter.pa@Xerox.COM
line-fold: No
Message-ID: <890112-135856-13358@Xerox>
This Issue has too many Proposals. We've not had the
time to narrow them down.
!
Status: DRAFT
Forum: Cleanup
Issue: CLOSE-CONSTRUCTED-STREAM
References: Close (CLtL p. 332), WITH-OPEN-STREAM
(CLtL p 330), make-synonym-stream, make-broadcast-stream,
make-concatenated-stream, make-two-way-stream,
make-echo-stream, make-string-input-stream,
make-string-output-stream, with-input-from-string,
with-output-from-string
Related issues: CLOSED-STREAM-OPERATIONS
Category: Clarification/Change
Edit history: Masinter, 6-Jan-89, Version 1
Masinter, 12-Jan-89, Version 2
Problem description:
First some terminology:
A "composite" stream is one created with MAKE-SYNONYM-STREAM,
MAKE-BROADCAST-STREAM, MAKE-CONCATENATED-STREAM, MAKE-TWO-WAY-STREAM,
MAKE-ECHO-STREAM.
The "constituents" of a composite stream are the streams it points to:
the SYMBOL-VALUE of the symbol given to MAKE-SYNONYM-STREAM
the streams given to MAKE-BROADCAST-STREAM or MAKE-CONCATENATED-STREAM
the input-stream and output-stream given to MAKE-TWO-WAY-STREAM or MAKE-ECHO-STREAM.
A "constructed" stream is either a composite stream or one created with
MAKE-STRING-INPUT-STREAM, MAKE-STRING-OUTPUT-STREAM, WITH-INPUT-FROM-STRING,
WITH-OUTPUT-FROM-STRING.
The function "CLOSE" is currently described in 21.3, which starts "This
section contains discussion of only those operations that are common to all
streams." This would seem to imply that they apply to constructed streams.
The definition of CLOSE "The argument must be a stream. No further input/output
operations may be performed on it. ... " It further states "... and it is
permissible to close an already closed stream."
However, the behavior on the constructed streams is not well defined, and
implementations (apparently) differ.
Proposal (CLOSE-CONSTRUCTED-STREAM:IS-ERROR):
It "is an error" to call CLOSE on a constructed stream. CLOSE might signal an
error, or the result of CLOSE could cause the constituent streams to be closed,
etc, but the effect is implementation-dependent.
Proposal: (CLOSE-CONSTRUCTED-STREAM:SIGNALS-ERROR)
Calling CLOSE on a constructed stream signals an error.
Proposal (CLOSE-CONSTRUCTED-STREAM:ARGUMENT-STREAM-ONLY):
The effect of CLOSE on a constructed stream is to close the "argument" stream
only. No i/o operations are permitted after the call to CLOSE on the stream
given to CLOSE; There is no effect on the constituents of composite streams.
For streams created with MAKE-STRING-OUTPUT-STREAM, the result of
GET-OUTPUT-STREAM-STRING is unspecified after CLOS. For composite streams,
the call to CLOSE has no effect on any of the constituent streams.
The "links" to the constituents may be broken; if the proposal in STREAM-ACCESS
passes, the results of the accessor functions there are unspecified after the
call to CLOSE.)
Proposal: (CLOSE-CONSTRUCTED-STREAM:CLOSE-CONSTITUENTS)
CLOSE first closes its argument; it then operates recursively on the constituents
of composite streams.
Examples:
>>not written; sorry<<
Rationale:
Specifying seems better than not saying what happens, even if it is
"implementation-dependent".
Current practice:
Implementations seem to vary widely.
Cost to Implementors:
Varying, depending on the current level of conformance. Making the changes
themselves is probably trivial (to the "close" method for each kind of
constructed stream type) but it is possible that system code might depend
on the behavior.
Cost to Users:
Likely small; we've not found any good uses for CLOSE on composite streams.
Cost of non-adoption:
Continued minor ambiguity
Performance impact:
near zero
Benefits:
The language would be more well specified.
Esthetics:
Well-specified languages are usually easier to deal with.
Discussion:
Signalling an error is reasonable if no Common Lisp program ever needs to
call CLOSE on a composite stream. We could not come up with a legitimate
case where you wouldn't instead close the underlying stream if that's what
you wanted.
Allowing the result to be implementation dependent is the "status quo".
ARGUMENT-STREAM-ONLY is probably the "safest" in that it makes it
harder to accidentally close a stream that wasn't intended. It
seems counterintuitive and yet it probably wouldn't be harmful
if it were well-defined that this was what it did.
CLOSE-CONSTITUENTS could be an incompatible change for some
implementations. It makes more sense for things like broadcast streams
(which are usually non-interactive) than it does for echo streams
(which are sometimes interactive).
∂12-Jan-89 1445 @Score.Stanford.EDU:weening@Gang-of-Four.Stanford.EDU USENET newsgroups for classes
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 12 Jan 89 14:45:34 PST
Received: from Gang-of-Four.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Thu 12 Jan 89 14:40:59-PST
Received: by Gang-of-Four.Stanford.EDU (5.59/25-eef) id AA03659; Thu, 12 Jan 89 14:39:07 PST
Date: Thu, 12 Jan 89 14:39:07 PST
From: Joe Weening <weening@Gang-of-Four.Stanford.EDU>
Message-Id: <8901122239.AA03659@Gang-of-Four.Stanford.EDU>
To: instructors@score, tas@score
Subject: USENET newsgroups for classes
Last quarter several classes used USENET newsgroups for announcements,
discussions, etc. These newsgroups are available on Unix systems
(including Portia and Polya) with the programs "readnews" and "rn",
among others, and have names such as "su.class.cs306".
If any winter quarter class would like to set up such a newsgroup,
send me a message and I will create it.
Joe
∂12-Jan-89 1526 X3J13-mailer Issue: REMF-MULTIPLE (Version 2)
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 12 Jan 89 15:24:48 PST
Received: from Semillon.ms by ArpaGateway.ms ; 12 JAN 89 15:11:46 PST
Date: 12 Jan 89 15:05 PST
Sender: masinter.pa@Xerox.COM
Subject: Issue: REMF-MULTIPLE (Version 2)
To: X3J13@Sail.Stanford.Edu
Reply-to: cl-cleanup@sail.stanford.edu
From: cl-cleanup@sail.stanford.edu
cc: masinter.pa@Xerox.COM
line-fold: No
Message-ID: <890112-151146-1173@Xerox>
!
Status: DRAFT
Issue: REMF-MULTIPLE
References: REMPROP (p166), REMF (p167)
Category: CLARIFICATION/CHANGE
Edit history: 26-Jan-88, Version 1 by Pitman
12-Jan-89, Version 2 by Masinter (add IS-ERROR per Moon)
Problem Description:
The descriptions of REMF and REMPROP are not explicit about what happens in
the case that a duplicated indicator occurs on the plist. One or both indicators
might be removed.
Proposal (REMF-MULITPLE:REMOVE-ONE):
Clarify that REMF and REMPROP at most one indicator/value pair from the designated plist.
Rationale:
In a property list maintained by the normal property list operations, there will
only be one property by each name. This approach won't waste time trying to remove
other properties which are not present in the first place.
Proposal (REMF-MULTIPLE:REMOVE-ALL):
Clarify that REMF and REMPROP remove all matching indicator/value pairs from the
designated plist.
Rationale:
In a property list maintained by other operations than the standard ones,
this might be useful. Also, since the return value of REMF and REMPROP is
not well-defined, iterating to remove more than one property is expensive
because you have to start over from the head of the list.
Proposal (REMF-MULTIPLE:IS-AN-ERROR):
Clarify that it "is an error" to pass a list with a duplicated
indicator to REMF or any other function that takes a
property list (including GETF); it "is an error" for a
symbol to have duplicated properties on its property list.
Rationale:
The only thing that CLtL pp 163-167 says about
duplicated indicators on plists is that there aren't any
(first line on page 164). It does not even gurantee
that GETF returns the first occurrence.
Test Case:
;; Case #1 - removing symbol properties,etc. using REMPROP
(DEFUN REMF-MULTIPLE-TEST-1 ()
(LET ((SYMBOL (GENSYM)))
(SETF (SYMBOL-PLIST SYMBOL) (LIST 'A 'B 'C 'D 'A 'B 'C 'D))
(FORMAT T "~&Before: ~S~%" (SYMBOL-PLIST SYMBOL))
(REMPROP SYMBOL 'A)
(FORMAT T "~&After: ~S~%" (SYMBOL-PLIST SYMBOL))
(FORMAT T "~&This implementation uses REMF-MULTIPLE:~:[REMOVE-ALL~;REMOVE-ONE~] ~
for REMPROP.~%"
(GET SYMBOL 'A))))
;; Case #2 - removing keywords,etc. using REMF
(DEFUN REMF-MULTIPLE-TEST-2 ()
(LABELS ((HELPER (&REST ARGUMENTS &KEY (A 1) (B 2))
(FORMAT T "~&Helper received: ~S~%" ARGUMENTS)
(LIST A B))
(DRIVER (&REST ARGUMENTS)
(FORMAT T "~&Helper received: ~S~%" ARGUMENTS)
(SETQ ARGUMENTS (COPY-LIST ARGUMENTS))
(REMF ARGUMENTS ':A)
(APPLY #'HELPER ARGUMENTS)))
(LET ((RESULT (DRIVER :A 3 :B 4 :A 5 :B 6)))
(FORMAT T "~&Returned: ~S~%" RESULT)
(FORMAT T "~&This implementation uses REMF-MULTIPLE:~:[REMOVE-ALL~;REMOVE-ONE~] ~
for REMF.~%"
(= (CAR RESULT) 5)))))
Current Practice:
Symbolics implements REMF-MULTIPLE:REMOVE-ONE.
Cost to Implementors:
For implementations needing to change, the cost of a change is probably very
small in most cases. Implementations needing change which do REMPROP and/or REMF
in microcode might have a slightly harder time, but any change should still be
very localized.
Cost to Users:
None. Users must tread lightly on this issue right now because it is not well-defined.
Cost of Non-Adoption:
The language description would continue to be vague for no particularly good reason.
Benefits:
IS-ERROR at least makes the situation more explicit. For the other proposals,
users who want to use REMPROP or REMF in situations which involve lists that might
have duplicated elements would be able to do so more reliably.
Aesthetics:
There is probably no particular aesthetic reason to think one of these solutions
is better than the other, but having the issue nailed down is probably an aesthetic
improvement.
Discussion:
This issue, first brought up in Cleanup almost a year ago, got lost.
Pitman is agnostic on this for now. There are advantages to both.
If everybody already implements REMOVE-ONE, that would seem the way to go.
"If we're going to extend Common Lisp to allow duplicated indicators on
plists, we should do it for all the property list functions, not
just REMF and REMPROP."
∂12-Jan-89 1642 X3J13-mailer Issue: REMF-DESTRUCTION-UNSPECIFIED (Version 4)
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 12 Jan 89 16:42:06 PST
Received: from Semillon.ms by ArpaGateway.ms ; 12 JAN 89 16:27:25 PST
Date: 12 Jan 89 16:26 PST
Sender: masinter.pa@Xerox.COM
Subject: Issue: REMF-DESTRUCTION-UNSPECIFIED (Version 4)
To: X3J13@Sail.Stanford.Edu
Reply-to: cl-cleanup@sail.stanford.edu
From: cl-cleanup@sail.stanford.edu
cc: masinter.pa@Xerox.COM
line-fold: No
Message-ID: <890112-162725-1374@Xerox>
This issue has a number of additional comments at the end.
!
Status: DRAFT
Forum: Cleanup
Issue: REMF-DESTRUCTION-UNSPECIFIED
References: (SETF (GET ...) ...), REMPROP, (SETF (GETF ...) ...),
REMF (pp165-167); NREVERSE (p248); DELETE, DELETE-IF,
DELETE-IF-NOT, DELETE-DUPLICATES, NSUBSTITUTE,
NSUBSTITUTE-IF, NSUBSTITUTE-IF-NOT (pp254-256); NCONC,
NRECONC (p269); NBUTLAST (p271); NSUBST, NSUBST-IF,
NSUBST-IF-NOT (p274); NUNION, NINTERSECTION,
NSET-EXCLUSIVE-OR (pp276-279).
Category: CLARIFICATION/CHANGE
Edit history: 11-Feb-87, Version 1 by Dave Andre (DLA@Symbolics.COM)
29-Oct-87, Version 2 by Pitman (flesh out proposals)
28-Nov-88, Version 3 by Pitman (revised presentation)
29-Nov-88, Version 4 by Pitman (slight editing per DLA)
Problem Description:
Currently, the exact nature of the side-effect performed by list
modification routines is not specified.
Either the specific modifications allowed should be specified so that
programmers can rely on them and implementors can avoid accidentally
causing problems by introducing well-meaning optimizations, or else
the documentation should explicitly state that the effects are
unspecified so that programmers will not depend on them and
implementors will feel comfortable about doing interesting optimizations.
Proposal (REMF-DESTRUCTION-UNSPECIFIED:EXPLICITLY-VAGUE):
Clarify that the way in which the destructive behavior of the
operators below is achieved is explicitly vague in a number of ways,
in order to provide individual implementations the necessary
flexibility to do useful optimizations.
(SETF (GETF place indicator) value)
is permitted to either SETF place or to SETF any part, CAR or
CDR, of the top-level list structure held by that place.
(REMF place indicator)
is permitted to either SETF place or to SETF any part, CAR or
CDR, of the top-level list structure held by that place.
(SETF (GET symbol indicator) value)
is constrained to behave exactly the same as
(SETF (GETF (SYMBOL-PLIST symbol) indicator) value).
(REMPROP symbol indicator)
is constrained to behave exactly the same as
(REMF (SYMBOL-PLIST symbol) indicator).
(NREVERSE sequence)
when sequence is a list, is permitted to SETF any part, CAR or
CDR, of the top-level list structure in that sequence.
when sequence is an array is permitted to re-order the elements
of the given sequence in order to produce the resulting array.
(DELETE object sequence ...)
when sequence is a list, is permitted to SETF any part, CAR or
CDR, of the top-level list structure held in that sequence.
when sequence is an array is permitted to change the dimensions
of the array and to slide its elements into new positions without
permuting them to produce the resulting array.
(DELETE-IF test sequence ...)
is constrained to behave exactly like
(DELETE NIL sequence
:TEST #'(LAMBDA (IGNORE ITEM) (FUNCALL test ITEM))
...).
(DELETE-IF-NOT test sequence ...)
is constrained to behave exactly like
(DELETE NIL sequence
:TEST #'(LAMBDA (IGNORE ITEM) (NOT (FUNCALL test ITEM)))
...).
(DELETE-DUPLICATES sequence ...)
when sequence is a list, is permitted to SETF any part, CAR or
CDR, of the top-level list structure held in that sequence.
when sequence is an array is permitted to change the dimensions
of the array and to slide its elements into new positions without
permuting them to produce the resulting array.
(NSUBSTITUTE new-object old-object sequence ...)
(NSUBSTITUTE-IF new-object test sequence ...)
(NSUBSTITUTE-IF-NOT new-object test sequence ...)
when sequence is a list, is permitted to SETF any part, CAR or
CDR, of the top-level list structure in that sequence.
when sequence is an array is permitted to SETF the contents of
any cell in that array which must be replaced by NEW-OBJECT.
Note, however, that since this side-effect is not required,
these functions should still not be used in for-effect-only
positions in portable code.
(NCONC . lists)
is permitted to SETF any part, CAR or CDR, of the top-level of
any of the given lists (except the last, which is not required to
be a list and must not be modified).
(NRECONC list tail)
is constrained to have side-effect behavior equivalent to:
(NCONC (NREVERSE list) tail).
(NBUTLAST list ...)
is permitted to SETF any part, CAR or CDR, of the top-level of
any of the given list.
(NSUBST new-object old-object tree)
(NSUBST-IF new-object test tree)
(NSUBST-IF-NOT new-object test tree)
is permitted to SETF any part of the TREE of conses which must
be replaced by NEW-OBJECT.
Note, however, that since the tree might be a degenerate tree
containing no conses and since the side-effect is not required,
these functions should still not be used in for-effect-only
positions in portable code.
(NUNION list1 list2 ...)
(NINTERSECTION list1 list2 ...)
(NSET-EXCLUSIVE-OR list1 list2 ...)
is permitted to SETF any part, CAR or CDR, of the top-level of
any of the given lists.
Note, however, that since this side-effect is not required,
these functions should still not be used in for-effect-only
positions in portable code.
Note: The above clarifications are not intended as complete functional
descriptions. They are intended to augment (rather than to replace)
other descriptions already in effect.
Test Cases:
For GETF...
(SETQ FOO (LIST 'A 'B 'C 'D 'E 'F)) ==> (A B C D E F)
(SETQ BAR (CDDR FOO)) ==> (C D E F)
(REMF FOO 'C)
BAR ==> ??
In Symbolics Common Lisp, BAR holds (C D E F).
CLtL allows other interpretations. eg, BAR might hold
(C), (NIL), (C NIL) or (C D).
Under this proposal, any of these interpretations (and others as well)
would still be valid
For DELETE...
(SETQ FOO (LIST 'A 'B 'C)) ==> (A B C)
(SETQ BAR (CDR FOO)) ==> (B C)
(SETQ FOO (DELETE 'B FOO)) ==> (A C)
BAR ==> ??
(EQ (CDR FOO) (CAR BAR)) ==> ??
In Symbolics Common Lisp, these last two expressions return ((C)) and T.
Under this proposal, either of these interpretations (and others
as well) would be valid.
Rationale:
Implementations already vary widely on their implementation techniques
for these functions. This effectively clarifies the status quo, making
it more clear to programmers what they may rely upon in portable code.
Current Practice:
All valid implementations are believed to comply.
Cost to Implementors:
None. This is the status quo for implementors.
Cost to Users:
This change would not affect programs coded with "good programming
practice". That is, only programs which rely on currently undocumented
features would be in any danger of breaking. In fact, those programs
are already in such danger, and this change to the documentation would
just publicize it. The clarification would -encourage- good programming
practice by warning people to only obey the published contract of the
above-mentioned functions.
There is, however, no automatic technique for making this check for
programs already in error. Bugs due to unexpected side-effects are in
general among the hardest to reckon with.
Cost of Non-Adoption:
Programmers may naively believe there is only one possible or reasonable
implementation of these functions. Some implementors may shy away from
reasonable optimizations out of a paranoid belief that deviating from
some vague, unspoken rules will lead to programmer unrest. Making these
things explicitly vague clarifies the implementor's rights in a way that
permits numerous useful optimizations.
Benefits:
Users would be discouraged from taking advantage of subtle details
of these destructive operations because such details would be explicitly
not guaranteed to be portable.
Implementations can improve performance of many of the above-mentioned
functions when they are not under the constraint to implement them
in a highly constrained fashion. For example, in Symbolics systems,
DELETE of a cdr-coded list could use the implementation primitive
%CHANGE-LIST-TO-CONS rather than RPLACD to avoid creating forwarding
pointers.
Garbage collection effectiveness can also be improved. For example,
all of the destructive operations which remove objects (eg, REMF)
could remove CAR pointers to removed objects which are more volatile
than the list itself, assisting the garbage collector and thereby
improving memory usage and paging performance.
Non-Benefits:
Users who inadvertently depend on side-effect behavior may be rudely
surprised when moving between implementations.
Compatibility with older Lisp dialects is diminished.
Performance Impact:
Metering in Symbolics test systems have shown that there are substantial
performance gains to be had by allowing implementations flexibility in
these areas.
Aesthetics:
Most of these functions implement abstract operations. For example,
REMPROP implements an abstract operation on a "property list".
Proper language design should not encourage people to delve below the
level of abstraction into the nitty gritty.
Discussion:
Andre's original version of this proposal pushed for explicitly vague
descriptions of these functions' side-effect behavior. He believes
that if users want more predictability from these functions, they
should write private variants that implement whatever predictability
they require.
Pitman originally opposed this position because he weighed portability
a higher concern. Since the original discussion, however, his views on
how to resolve this priority have been refined, and he now believes
that leaving things vague is appropriate. As such, he now supports what
is effectively Andre's original proposal.
Pitman and Andre support this proposal.
!
Additional Comments:
"...I'd like to see a section in the spec that concerns these
"destructive" operations to say explicity that it is perfectly
all right for them _not_ to destroy anything but instead to
"cons" new results. ...
Change "the destructive behavior of the operators" to say
"if any".
Change the proposal by...
- striking the three or so places that it explicitly reminds you
to use SETQ in case a side-effect doesn't occur
- adding some general purpose verbiage that says something like
that the purpose of these operators is to provide you the most
efficient algorithm, and that in some situations or some
implementations, there may be some reasons why the most
efficient thing is to copy rather than to side-effect. As such
none of these operators are actually required to side-effect,
but the user should assume that, whatever the implementation, it
will have speed competitive with or surpassing a side-effecting
implementation.
SORT, STABLE-SORT, and MERGE are conspicuously
absent from the list. They should be added in as well.
Should NCONC and NBUTLAST be explicitly vague?
Whereas it seems less
useful to maintain the actual list substructure in (SETF (GETF ...) ...),
DELETE, NREVERSE, NSUBSTITUTE, etc, I can see a very useful role for the
specific semantics of these few -- that they change the cdr of a particular
cons cell -- and would question very highly the value of striving for speed
at the cost of correct semantics.
NSUBLIS seems to be missing; but I would classify it in with NSUBST,
NCONC and NBUTLAST of the previous paragraph.
- - - - -
SETF of GETF, REMF should be specified.
NCONC, NBUTLAST, NSUBLIS, NSUBST, NSUBST-IF, NSUBST-IF-NOT
should be specified.
Since the argument for explicitly-defined is portability and the utility of
reliable definitions, and the argument for explicitly-vague is performance,
we should leave things explicitly vague only where
a) it matters for performance and
b) reasonable programs would not rely on the
"defined" behavior
I believe the things I say should be explicitly-vague are the ones where
good style would avoid depending on side-effect behavior and where
performance matters, while the ones I say should be explicitly-defined,
there are reasonable applications which might rely on the explicit
definition, and no strong claims that "explicitly-vague" can make a
difference in performance.
- - - - - - - - -
The NSUBSTITUTE functions seem so "obvious" in implementation that it
seems hard to justify not explicitly specifying them. Seems to me
thatclassifying the sequence functions as a group is not of any
significance. There really are only three basic sequence functions
listed there and they are all quite different, and for different
reasons: NREVERSE wants to be explicitly-vague primarily because of the
list reversal, and for that primarily because of optimizations needed
for cdr-coded implementations; DELETE because of
cdr-deleted-element-off-front-of-list for lists and
we've-got-to-copy-the-non-adjustable-array for vectors; NSUBSTITUTE I
can only imagine so that an implementation could "cheat" and use
SUBSTITUTE, or just because it is a destructive sequence function.
- - - - - - - - - - -
Where you say
(REMF place indicator)
is permitted to either SETF place or to SETF any part, CAR or
CDR, of the top-level list structure held by that place.
you also need to say that it is an error after this operation to
reference any CONS that was formerly part of the top-level list
structure and is no longer part of it. Of course this applies not
just to REMF, but also to SETF of GETF, NREVERSE, DELETE,
DELETE-DUPLICATES, NCONC, NUNION, NINTERSECTION, NSET-EXCLUSIVE-OR,
SORT, STABLE-SORT, and MERGE and to the ones that are defined to be
equivalent to these; these are all the ones that might change
list structure rather than just replacing CAR elements.
You see, not only are these destructive functions allowed to change
the components of the conses that make up the top-level list structure
of the argument, they are also allowed to reuse the storage of those
conses for something else that isn't a cons at all. You may recall
that this was DLA's original motivation for bringing up the issue.
I strongly disagree with Larry's contention that SETF of GETF, REMF,
SETF of GET, and REMPROP are not reasonable to include in this proposal.
If anything, the property list operators have less justification for the
user to depend on the representation than (for example) DELETE, not more
justification.
I disagree with JonL's and Larry's contention that NBUTLAST is not
reasonable to include in this proposal. I think it would be reasonable
to implement NBUTLAST by sliding all the list elements to the right n
positions and then returning NTHCDR n of the original list. However,
CLtL p.271 could be interpreted as -requiring- NBUTLAST to be
implemented in terms of RPLACD of a specific cons, rather than just
mentioning that as an example; if so, I would change my mind and
agree that NBUTLAST should be excluded from this proposal.
I also believe that NCONC (and hence by implication NRECONC) is
reasonable to optimize, but on that point I could easily be swayed to
change my mind since I can't think of any really plausible
optimizations. However, CLtL doesn't offer much evidence that a
specific implementation of NCONC is required.
For the others Larry listed (NSUBST, NSUBST-IF, and NSUBST-IF-NOT), what
the proposal actually says ("is permitted to SETF any part of the TREE
of conses which must be replaced by NEW-OBJECT.") is not proposing to
allow an implementation to modify any portion of a cons other than what
CLtL requires it to modify. Perhaps that means there is no reason to
include these in the proposal because the proposal says exactly the same
thing about these that CLtL says. BTW CLtL appears to -require- a
side-effect for these rather than merely -allowing- a side-effect.
∂12-Jan-89 1647 @Score.Stanford.EDU:eyal@coyote.stanford.edu Broadcast of courses on SUNet
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 12 Jan 89 16:47:06 PST
Received: from coyote.stanford.edu by SCORE.STANFORD.EDU with TCP; Thu 12 Jan 89 16:44:41-PST
Received: by coyote.stanford.edu; Thu, 12 Jan 89 16:41:08 PST
Date: Thu, 12 Jan 89 16:41:08 PST
From: Eyal Mozes <eyal@coyote.stanford.edu>
Subject: Broadcast of courses on SUNet
To: csd@score.Stanford.EDU, faculty@score.Stanford.EDU
I want to bring to your attention a matter that, I think, should
concern many people.
Up to last quarter, televised courses were broadcast on the SUNet video
network. This made it possible for students who live in student
housing, if they have a TV, to watch their classes at home, and, if
they have a VCR, to tape their class and then watch it without standing
in line for a machine at the library. This was a very convenient
arrangement which, as far as I can see, had no drawbacks at all.
However, some professors did object to this. As a result, the broadcast
of courses was suspended, and the School of Engineering is supposed to
make a policy decision on this question soon.
If they hear favorable opinions from faculty who teach televised
courses, this may affect their decision. Also, I talked to the person
in charge at SUNet, and he said they may soon start broadcasting only
the courses taught by faculty who say they're in favor. So, I'd like to
ask all faculty who teach, or plan to teach, televised courses: if you
approve of having your courses broadcast on SUNet, please make your
opinion known both to the School of Engineering and to SUNet.
Also, maybe the Computer Science department can make its own policy
decision, independently of the rest of the School of Engineering, in
favor of having Computer Science televised courses broadcast on SUNet?
Eyal Mozes (eyal@coyote)
∂12-Jan-89 1711 X3J13-mailer Issue: PATHNAME-UNSPECIFIC-COMPONENT (Version 1)
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 12 Jan 89 17:11:34 PST
Received: from Semillon.ms by ArpaGateway.ms ; 12 JAN 89 17:04:55 PST
Date: 12 Jan 89 17:04 PST
Sender: masinter.pa@Xerox.COM
Subject: Issue: PATHNAME-UNSPECIFIC-COMPONENT (Version 1)
To: X3J13@Sail.Stanford.Edu
Reply-to: cl-cleanup@sail.stanford.edu
From: cl-cleanup@sail.stanford.edu
cc: masinter.pa@Xerox.COM
line-fold: No
Message-ID: <890112-170455-1498@Xerox>
This issue is a generalization of PATHNAME-TYPE-UNSPECIFIC,
which it subsumes.
!
Forum: Cleanup
Issue: PATHNAME-UNSPECIFIC-COMPONENT
Forum: Cleanup
References: File System Interface (pp409-427)
Category: CHANGE
Edit history: 27-Dec-88, Version 1 by Pitman
Subsumes: Issue PATHNAME-TYPE-UNSPECIFIC
Problem Description:
In some file systems, it is inappropriate to represent particular
pathname components, either all the time or in some specialized
circumstance.
- Unix pathnames never have a version field.
- In some file systems, specifying a device and a directory means
something very different than specifying the device alone,
particularly when the device is a "logical device" that may
already imply a directory.
- Some Unix pathnames have types and others do not. For example,
it is possible to make files named "foo." and "foo" which are
distinct. CLtL (p412) specifies that the type is ``always a
string, NIL, or :WILD.'' This description is too restrictive
to be practical in this case. One of these (usually the former)
can get a type of "" but it is not clear how to represent the
other. If NIL is used, merging primitives cannot detect that the
field is filled and should not be merged against.
- ITS pathnames have either a version or a type, but never both.
"JOE;FILE 32" has a directory, a name, and a version.
"JOE;FILE TEXT" has a directory, a name, and a type.
"JOE;FILE TEXT 32" is not a possible ITS filename.
Proposal (PATHNAME-UNSPECIFIC-COMPONENT:NEW-TOKEN):
Permit :UNSPECIFIC as a value of the DEVICE, DIRECTORY, TYPE, or
VERSION field of a pathname for file systems in which it makes sense.
When a pathname is converted to a namestring, NIL and :UNSPECIFIC
are treated as if the field were empty. That is, they both cause the
component not to appear in the string.
When merging, however, only a NIL value for a component will be
replaced with the default for that component, while :UNSPECIFIC
will be left alone as if the field were filled.
Portable programs should expect to find :UNSPECIFIC in the device,
directory, type, or version field in some implementations.
Portable programs should not explicitly place :UNSPECIFIC in any
field, since that it might not be permitted in some situations,
but portable programs may sometimes do so implicitly.
Test Case:
;; #1: Non-portable code. This may signal an error in some
;; implementations where an unspecific type makes no sense.
(MAKE-PATHNAME :TYPE :UNSPECIFIC) ;not portable
;; #2: In this example, assume a Unix file system.
(PATHNAME-TYPE (PARSE-NAMESTRING "foo."))
=> ""
(PATHNAME-TYPE (PARSE-NAMESTRING "foo"))
=> :UNSPECIFIC
(PATHNAME-TYPE (MERGE-PATHNAMES (PARSE-NAMESTRING "foo")
(MAKE-PATHNAME :TYPE "BAR")))
=> :UNSPECIFIC
;; #3: In this example, assume an ITS file system.
(LET ((P (PARSE-NAMESTRING "FOO 32")))
(LIST (PATHNAME-TYPE P) (PATHNAME-VERSION P)))
=> (:UNSPECIFIC 32)
(LET ((P (PARSE-NAMESTRING "FOO TEXT")))
(LIST (PATHNAME-TYPE P) (PATHNAME-VERSION P)))
=> ("TEXT" :UNSPECIFIC)
(LET ((P (MERGE-PATHNAMES (PARSE-NAMESTRING "FOO 32")
(PARSE-NAMESTRING "FOO TEXT"))))
(LIST (PATHNAME-TYPE P) (PATHNAME-VERSION P)))
=> (:UNSPECIFIC 32)
;; Note: It is not the intent of this proposal to actually legislate
;; the canonical representation of Unix pathnames "foo." and "foo",
;; nor of ITS pathnames "FOO 32" and "FOO TEXT". That should probably
;; be done, but under separate cover. The above examples are intended
;; only to demonstrate how this proposal will permit the representation
;; of pathnames not usefully representable under CLtL.
Rationale:
This is, by necessity, current practice in some implementations
already.
Current Practice:
Symbolics Genera uses a file types and versions of :UNSPECIFIC on
Unix and ITS file systems, for example.
Cost to Implementors:
None. No change to any implementation is forced.
Some implementations which already do this are legitimized.
Some implementations which use a non-standard token other than
:UNSPECIFIC to implement this functionality would want to switch
to use :UNSPECIFIC so that portable programs could expect it.
Cost to Users:
Some programs which manipulate pathnames should be updated to expect
:UNSPECIFIC in the type fields in some situations.
Any program which doesn't already expect :UNSPECIFIC is already not really
portable, however, given that some implementations have been forced to
go beyond the standard in order to represent all possible pathnames.
Cost of Non-Adoption:
Some implementations would be unable to both represent all possible
pathnames in a rational way and at the same time to conform to the
standard. Such an inability would seriously jeopardize the usefulness
of Common Lisp in the design of serious programs.
Benefits:
Some programs involving pathnames would be more portable.
Aesthetics:
Sweeping a hairy situation under the rug doesn't make it go away.
This change makes things appear less simple, but since in reality
they were less simple, it is effectively a simplification of the
correspondence between the CL model and reality.
Discussion:
Pitman and Moon support PATHNAME-TYPE-UNSPECIFIC:NEW-TOKEN.
This feature existed (for types) in the Colander draft edition of
CLtL, but was removed for the Laser edition. The following text is
excerpted from the Colander edition, p259:
``??? Query: Is :unspecific really needed over and above nil?
``A component of a pathname can also be the keyword
:UNSPECIFIC. This means that the component has been explicitly
determined not to be there, as opposed to be missing. One way
this can occur is with generic pathnames, which refer not to
a file but to a whole family of files. The version, and usually
the type, of a generic pathname are :unspecific. Another way
:unspecific is used to represent components that are not simply
supported by a file system. When a pathname is converted to a
namestring, nil and :unspecific both cause the component not to
appear in the string. When merging, however, a nil value for
a component will be replaced with the default for that
component, while :unspecific will be left alone.''
"The stuff about generic pathnames in the discussion section
was brain damage and may have lead to the confusion that caused
:unspecific to be dropped from Common Lisp. Only the stuff about
components not supported by a file system makes sense."
∂12-Jan-89 1731 X3J13-mailer Issue: PACKAGE-FUNCTION-CONSISTENCY (Version 2)
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 12 Jan 89 17:31:09 PST
Received: from Semillon.ms by ArpaGateway.ms ; 12 JAN 89 17:20:59 PST
Date: 12 Jan 89 17:20 PST
Sender: masinter.pa@Xerox.COM
Subject: Issue: PACKAGE-FUNCTION-CONSISTENCY (Version 2)
To: X3J13@Sail.Stanford.Edu
Reply-to: cl-cleanup@sail.stanford.edu
From: cl-cleanup@sail.stanford.edu
cc: masinter.pa@Xerox.COM
line-fold: No
Message-ID: <890112-172059-1554@Xerox>
!
Issue: PACKAGE-FUNCTION-CONSISTENCY
References: 11.7 Package System Functions and Variables (pp182-188)
Category: CLARIFICATION/CHANGE
Edit history: 21-Oct-88, Version 1 by Pitman
12-Jan-89, Version 2 by Masinter (add MORE-PERMISSIVE option)
Problem Description:
CLtL is vague about whether either or both of package or package name
are permissible in some cases.
Proposal (PACKAGE-FUNCTION-CONSISTENCY:PERMISSIVE):
Clarify that it is permissible to pass either a package object
or a package name (symbol or string) in the following situations:
- the :USE argument to MAKE-PACKAGE or IN-PACKAGE
- the first argument to IN-PACKAGE, FIND-PACKAGE, and RENAME-PACKAGE
- the second argument to INTERN, FIND-SYMBOL, UNINTERN
- the second argument to EXPORT, UNEXPORT, IMPORT,
SHADOWING-IMPORT, and SHADOW
- the first argument (or a member of the list which is the first
argument) to USE-PACKAGE or UNUSE-PACKAGE.
- the PACKAGE argument to DO-SYMBOLS.
- the PACKAGE argument to DO-EXTERNAL-SYMBOLS.
- the PACKAGE argument to DO-ALL-SYMBOLS.
If FIND-PACKAGE is given a package object as an argument, it simply
returns it.
If IN-PACKAGE is given a package object as an argument, that package
is selected. It is an error if, when a package object is given as a
first argument to IN-PACKAGE, a :USE list is explicitly specified and
does not exactly match the package or :NICKNAMES is explicitly supplied
and does not exactly match the package.
Clarify that the functions PACKAGE-NAME, PACKAGE-NICKNAMES,
PACKAGE-USE-LIST, and PACKAGE-USED-BY-LIST are (at least conceptually)
accessors to package data structures and permit only package objects
as arguments.
Clarify that the function MAKE-PACKAGE permits only a package name
as an argument since it does not make sense to create an existing
package.
Clarify that package nicknames must always be expressed as package
names (symbols or strings) and may never be actual package objects.
Proposal: (PACKAGE-FUNCTION-CONSISTENCY:MORE-PERMISSIVE)
In addition, require that PACKAGE-NAME, PACKAGE-NICKNAMES,
PACKAGE-USE-LIST, and PACKAGE-USED-BY-LIST to accept names,
too.
Examples:
(INTERN "FOO" "KEYWORD") => :FOO
(DEFVAR *FOO-PACKAGE* (MAKE-PACKAGE "FOO"))
(RENAME-PACKAGE "FOO" "FOO0")
(PACKAGE-NAME *FOO-PACKAGE*) => "FOO0"
Under MORE-PERMISSIVE,
(PACKAGE-NAME "SYS") might return "SYSTEM".
Rationale:
This makes things more consistent.
MORE-PERMISSIVE adds a generally useful capability.
Current Practice:
Symbolics Genera & Lucid permits strings as package names.
Symbolics Cloe does not permit strings as package names.
In Lucid FIND-PACKAGE and IN-PACKAGE require names.
Cost to Implementors:
Small. A tiny bit more for MORE-PERMISSIVE.
Cost to Users:
None. This change is upward compatible.
Cost of Non-Adoption:
Implementations would continue to vary gratuitously, leaving a potential
for portability problems.
Benefits:
The cost of non-adoption is avoided.
Aesthetics:
This makes things more regular, and so presumably more aesthetic.
Discussion:
Pitman ran across this problem while trying to port Macsyma to various
implementations. Discussion with other maintainers of portable programs
shows this is a common source of aggravation in portable code.
Since the pathname accessors all take namestrings or streams, one might
easily argue that it would be more consistent for PACKAGE-NAME,
PACKAGE-NICKNAMES, etc. to also take arguments of package names. After
all,
(PACKAGE-NAME "FOO") => "FOO"
is no stranger than
(NAMESTRING "JOE:fred.lisp") => "JOE:fred.lisp".
It would be possible to say that MAKE-PACKAGE took package objects as
arguments and just returned that package. That might have limited
usefulness on rare occassions, but mostly seemed too far out in left
field to bother suggesting it.
∂12-Jan-89 1836 @Score.Stanford.EDU:allison@shasta.stanford.edu Re: Broadcast of courses on SUNet
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 12 Jan 89 18:36:43 PST
Received: from shasta.stanford.edu by SCORE.STANFORD.EDU with TCP; Thu 12 Jan 89 17:57:15-PST
Received: by shasta.stanford.edu; Thu, 12 Jan 89 17:54:50 PST
Date: Thu, 12 Jan 89 17:54:50 PST
From: Dennis Allison <allison@shasta.stanford.edu>
Subject: Re: Broadcast of courses on SUNet
To: csd@score.stanford.edu, eyal@coyote.stanford.edu,
faculty@score.stanford.edu
Cc: tajnai@score.stanford.edu
My immediate concern is EE380, the Computer Systems Lab Colloquium. The
class format is simple: invited speakers give a talk on some aspect of
computer systems every Wednesday afternoon. The class is videotaped, broadcast
on the instructional TV network, and available for live viewing. Over the
years there has been a substantial shift towards more video viewing and less
live participation. For those students who could attend live but choose the
video route, I think there is a loss of immediacy and excitement. For the
speaker it is sometimes embarassing because the live audience is so much smaller
than the enrollment. Sometime a speaker must conclude to himself that his
topic must be unpopular because so few folks turned up for the live show.
Classes are as much a social experience as transfer of information. The
video option changes the class structure and changes the social interaction.
In the case of EE380, I think the video option is detrimental to the
social goals of the course. I would oppose expanding the distribution of the
video to people who could easily attend in person on those grounds.
∂12-Jan-89 1928 @Score.Stanford.EDU:JMC@SAIL.Stanford.EDU re: Broadcast of courses on SUNet
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 12 Jan 89 19:24:23 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Thu 12 Jan 89 19:22:27-PST
Message-ID: <v#a2N@SAIL.Stanford.EDU>
Date: 12 Jan 89 1923 PST
From: John McCarthy <JMC@SAIL.Stanford.EDU>
Subject: re: Broadcast of courses on SUNet
To: allison@SHASTA.STANFORD.EDU, csd@SCORE.STANFORD.EDU, eyal@COYOTE.STANFORD.EDU,
faculty@SCORE.STANFORD.EDU
CC: tajnai@SCORE.STANFORD.EDU
[In reply to message from allison@shasta.stanford.edu sent Thu, 12 Jan 89 17:54:50 PST.]
I have no objection to having my course broadcast and am somewhat dismayed
at Dennis Allison's objections. In general I oppose the paternalism of
restricting people's options ``for their own good'' or just to put on a
better show. It would require very strong evidence of actual harm to
convince me.
∂12-Jan-89 2125 @Score.Stanford.EDU:dill@amadeus.Stanford.EDU re: Broadcast of courses on SUNet
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 12 Jan 89 21:25:20 PST
Received: from amadeus.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Thu 12 Jan 89 21:22:13-PST
Received: by amadeus.Stanford.EDU (5.59/inc-1.0)
id AA06865; Thu, 12 Jan 89 21:22:33 PDT
Date: Thu, 12 Jan 89 21:22:33 PDT
From: dill@amadeus.Stanford.EDU (David Dill)
Message-Id: <8901130522.AA06865@amadeus.Stanford.EDU>
To: JMC@SAIL.Stanford.EDU, allison@SHASTA.STANFORD.EDU, csd@SCORE.STANFORD.EDU,
eyal@COYOTE.STANFORD.EDU, faculty@SCORE.STANFORD.EDU
Subject: re: Broadcast of courses on SUNet
Cc: tajnai@SCORE.STANFORD.EDU
I vehemently oppose live on-campus broadcasts of my lectures. It seems
to me that the reasonable thing is for SITN to respect the preferences
of the individual lecturers. If my classes were broadcast last year
on campus, no one asked me about it, or even told me about it. I
would resent this if it were true.
∂12-Jan-89 2245 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Re: Broadcast of courses on SUNet
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 12 Jan 89 22:45:19 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Thu 12 Jan 89 22:42:54-PST
Message-ID: <v#cnV@SAIL.Stanford.EDU>
Date: 12 Jan 89 2243 PST
From: Arthur Keller <ARK@SAIL.Stanford.EDU>
Subject: Re: Broadcast of courses on SUNet
To: faculty@SCORE.STANFORD.EDU, csd@SCORE.STANFORD.EDU, eyal@COYOTE.STANFORD.EDU
I have a problem with students videotaping my classes, or having their own
videotape copies of my lectures. I think Stanford may have a licensing
problem there too. I think that if people can listen to me live, and they
are on campus, they should come to class. If they can't listen to me
live, I don't want them having their own videotapes of my lectures; they
are available to be viewed in the library.
Arthur
∂13-Jan-89 0102 @Score.Stanford.EDU:eaf@sumex-aim.stanford.edu Re: Broadcast of courses on SUNet
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 13 Jan 89 01:01:55 PST
Received: from sumex-aim.stanford.edu by SCORE.STANFORD.EDU with TCP; Fri 13 Jan 89 00:59:14-PST
Received: by sumex-aim.stanford.edu (4.0/inc-1.0)
id AA09720; Fri, 13 Jan 89 00:58:05 PST
Date: Fri, 13 Jan 1989 0:58:05 PST
From: Edward A. Feigenbaum <eaf@sumex-aim.stanford.edu>
To: Dennis Allison <allison@shasta.stanford.edu>
Cc: csd@score.stanford.edu, eyal@coyote.stanford.edu,
faculty@score.stanford.edu, tajnai@score.stanford.edu
Subject: Re: Broadcast of courses on SUNet
In-Reply-To: Your message of Thu, 12 Jan 89 17:54:50 PST
Message-Id: <CMM.0.88.600685085.eaf@sumex-aim.stanford.edu>
I've had the same experience that Dennis reports, and would rather have the
students in the lecture room.
Ed F.
∂13-Jan-89 0833 @Score.Stanford.EDU:chandler@polya.Stanford.EDU Tuesday's Facutly Lunch
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 13 Jan 89 08:33:14 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Fri 13 Jan 89 08:30:50-PST
Received: by polya.Stanford.EDU (5.59/25-eef) id AA08726; Fri, 13 Jan 89 08:31:32 PDT
Date: Fri, 13 Jan 1989 8:31:19 PST
From: "Joyce R. Chandler" <chandler@polya.stanford.edu>
To: faculty@score, bureaucrats@score
Subject: Tuesday's Facutly Lunch
Message-Id: <CMM.0.87.600712279.chandler@polya.stanford.edu>
Don't forget to mark your calendar for the next Faculty Lunch...Tuesday, 1/17
at 12:15 in MJH-146. Ed Feigenbaum, Bob Floyd and Mike Genesereth will lead
a discussion about how the Stanford CS Department ought to train PhD
students. See you there!
∂13-Jan-89 0851 @Score.Stanford.EDU:RPG@SAIL.Stanford.EDU Broadcast of courses on SUNet
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 13 Jan 89 08:51:03 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Fri 13 Jan 89 08:48:34-PST
Message-ID: <$$7$L@SAIL.Stanford.EDU>
Date: 13 Jan 89 0849 PST
From: Dick Gabriel <RPG@SAIL.Stanford.EDU>
Subject: Broadcast of courses on SUNet
To: faculty@SCORE.STANFORD.EDU
Since someone vehemently opposes broadcast, let me put in my opinion that
I like broadcast situations. I haven't had to teach courses that were
broadcast, but I have given many lectures that way. As with haiku, I find
that a restricted medium causes me to think more carefully about what I
will say and how I say it. I think that students in the live audience in
overhead camera situations might suffer a little, but I think no one else
does. It takes some concentration to be able to look at the monitors to
make sure the camera is looking at the right things. The fact that I might
be taped by students doesn't bother me except insofar as I hope they are
able to have whatever understanding problems they have cleared up by
multiple view.
-rpg-
∂13-Jan-89 0900 @Score.Stanford.EDU:cleron@polya.Stanford.EDU Re: Broadcast of courses on SUNet
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 13 Jan 89 09:00:40 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Fri 13 Jan 89 08:53:29-PST
Received: by polya.Stanford.EDU (5.59/25-eef) id AA09598; Fri, 13 Jan 89 08:53:59 PDT
Date: Fri, 13 Jan 1989 8:53:58 PST
Sender: "Michael A. Cleron" <cleron@polya.stanford.edu>
From: "Michael A. Cleron" <cleron@polya.stanford.edu>
To: Eyal Mozes <eyal@coyote.stanford.edu>
Cc: csd@score.Stanford.EDU, faculty@score.Stanford.EDU
Subject: Re: Broadcast of courses on SUNet
In-Reply-To: Your message of Thu, 12 Jan 89 16:41:08 PST
Message-Id: <CMM.0.87.600713638.cleron@polya.stanford.edu>
Having taught several classes on TV, I prefer my students to watch my
lectures live. I think they learn more, and I don't like talking to
empty chairs. However, back when I was a student, I had an alter-ego
named Captain Video who haunted the math library waiting for VCR's to
become free. This was usually pretty unpleasant. I would have been
deliriously happy if I could have made my own taped copies of the
lectures I missed.
We ought to remember that we teach classes for the benefit of our
students; they do not exist to serve our needs. By now, they should
be able to determine their own study habits. We should not force them
to attend classes live just because we think it is good for them. The
key, of course, is to make lectures sufficiently interesting that
students *want* to participate live.
Local blackouts of televised courses is a bad idea.
∂13-Jan-89 0909 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Re: Broadcast of courses on SUNet
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 13 Jan 89 09:09:14 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Fri 13 Jan 89 09:01:08-PST
Message-ID: <D$7lr@SAIL.Stanford.EDU>
Date: 13 Jan 89 0902 PST
From: Arthur Keller <ARK@SAIL.Stanford.EDU>
Subject: Re: Broadcast of courses on SUNet
To: RPG@SAIL.Stanford.EDU
CC: faculty@SCORE.STANFORD.EDU
I taught on TV for the first time this fall quarter. I made an effort to
ensure that the camera was pointing where I wanted, often by giving
appropriate instructions to the camera operator. I happen to prefer using
the blackboard to using the desk.
I like having students in the classroom and don't want to encourage
students to watch it remotely (except with talkback). I get a fair amount
of feedback from expressions on students' faces and from their questions.
When I videotaped a few lectures in advance, there were only a few
students and I realized how important their physical presence is for my
sense of timing in covering the lecture (how fast to go, when to pause,
etc.). I don't like lecturing to an empty classroom and believe I do a
better job for the students when I can get adequate visual feedback from
the students.
Arthur
∂13-Jan-89 0918 TAJNAI@Score.Stanford.EDU Broadcast of courses on SUNet
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 13 Jan 89 09:17:56 PST
Date: Fri 13 Jan 89 09:04:41-PST
From: Carolyn Tajnai <TAJNAI@Score.Stanford.EDU>
Subject: Broadcast of courses on SUNet
To: faculty@Score.Stanford.EDU
cc: allison@Sierra.Stanford.EDU, na.adp@forsythe.Stanford.EDU
Message-ID: <12462250155.11.TAJNAI@Score.Stanford.EDU>
I believe that seminars and courses that feature visiting speakers --
particularly industry speakers -- should be considered separately from
courses taught by Stanford people.
Visiting industrial speakers sign an agreement allowing their talk to
be broadcast on SITN. SITN has an agreement with its member companies that
if they tape a course, the tape will be destroyed within a stated period
of time.
Frequently, the visitors cannot sign the Computer Forum Agreement (release)
without first getting approval from company lawyers. And occasionally, they
have to decline because approval is not forthcoming.
If the broadcast is over SUNet and lectures can be taped randomly
with no controls, then we will run into the problem of speakers refusing to
come, or at the last minute refusing to speak. Not to tell them that the
lecture is being broadcast over SUNet would be a breach of ethics.
Carolyn
-------
∂13-Jan-89 0928 @Score.Stanford.EDU:chandler@polya.Stanford.EDU Tuesday's Faculty Lunch
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 13 Jan 89 09:28:02 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Fri 13 Jan 89 09:15:37-PST
Received: by polya.Stanford.EDU (5.59/25-eef) id AA10698; Fri, 13 Jan 89 09:16:16 PDT
Date: Fri, 13 Jan 1989 9:16:03 PST
From: "Joyce R. Chandler" <chandler@polya.stanford.edu>
To: faculty@score, bureaucrats@score
Subject: Tuesday's Faculty Lunch
Message-Id: <CMM.0.87.600714963.chandler@polya.stanford.edu>
To correct my earlier message, the Feigenbaum/Floyd/Genesereth discussion is
scheduled for 1/24. January 17th topic Bill Yundt, SDtanford Networking and
Mike Roberts (Educom) talking about "Networks of the Future". Sorry for the
mixup.
∂13-Jan-89 1013 @Score.Stanford.EDU:tom@polya.Stanford.EDU SITN
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 13 Jan 89 10:12:54 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Fri 13 Jan 89 10:08:55-PST
Received: by polya.Stanford.EDU (5.59/25-eef) id AA13301; Fri, 13 Jan 89 10:09:37 PDT
Date: Fri, 13 Jan 89 10:09:37 PDT
From: Tom Dienstbier <tom@polya.Stanford.EDU>
Message-Id: <8901131809.AA13301@polya.Stanford.EDU>
To: faculty@score
Subject: SITN
My two cents worth from a different angle. About two years ago CSDCF in-
stalled a broadband system in Margaret Jacks for mainly one reason.
If individuals wanted to they could view the Stanford televised classes
in Jacks. A couple of TV's were installed, student lounge and Nils
conference room. About the time that this was installed SITN stopped
transmitting to the campus buildings. I belive though SITN was still
broadcasting to the dorms, student housing. The reason, as I was told, that
transmission was stopped to Jacks and other campus buildings was that a
questionaire was sent around to faculty asking if they wanted their courses
transmitted to campus buildings. Only a couple faculty responded. Their
responce was that they did not want their televised classes going
to buildings like Jacks for fear that the class attendance would drop off.
Thus a decision was made based on the limited responce to the questionaire.
I for one would like to have the option to be able to view some of the classes.
We do however have about half a dozen other channels to view, some of them
even educational currently in Jacks.
Tom
∂13-Jan-89 1029 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Re: SITN
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 13 Jan 89 10:29:33 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Fri 13 Jan 89 10:19:58-PST
Message-ID: <1r$95h@SAIL.Stanford.EDU>
Date: 13 Jan 89 1020 PST
From: Arthur Keller <ARK@SAIL.Stanford.EDU>
Subject: Re: SITN
To: tom@POLYA.STANFORD.EDU
CC: faculty@SCORE.STANFORD.EDU
Did the same questionnaire ask whether the faculty wanted their lectures
to go to dorms and residences? I'm not sure people would prefer allowing
students to watch the classes at home and yet not allow viewing in campus
buildings. In fact, my opinions tend toward the opposite.
Arthur
∂13-Jan-89 1043 @Score.Stanford.EDU:bhayes@polya.Stanford.EDU faculty mailing list
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 13 Jan 89 10:41:10 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Fri 13 Jan 89 10:22:54-PST
Received: from LOCALHOST by polya.Stanford.EDU (5.59/25-eef) id AA14275; Fri, 13 Jan 89 10:23:36 PDT
Message-Id: <8901131823.AA14275@polya.Stanford.EDU>
To: faculty@score
Subject: faculty mailing list
Date: Fri, 13 Jan 89 10:23:34 -0800
From: bhayes@polya.Stanford.EDU
At Tuesday's faculty meeting I mentioned that the bureaucrats were
included in the faculty mailing list, and was surprised that many
people didn't know this. It also came up that there are many other
names on the faculty mailing list that are surprising.
In any case, I received the permission of the faculty to repost
messages to appropriate bboards, and remail to interested students.
Just thought those of you not able to be present should be informed.
∂13-Jan-89 1143 @Score.Stanford.EDU:eyal@coyote.stanford.edu Re: broadcast of courses on SUNet
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 13 Jan 89 11:43:51 PST
Received: from coyote.stanford.edu by SCORE.STANFORD.EDU with TCP; Fri 13 Jan 89 11:39:37-PST
Received: by coyote.stanford.edu; Fri, 13 Jan 89 11:36:04 PST
Date: Fri, 13 Jan 89 11:36:04 PST
From: Eyal Mozes <eyal@coyote.stanford.edu>
Subject: Re: broadcast of courses on SUNet
To: csd@score.Stanford.EDU, faculty@score.Stanford.EDU
My message about broadcast of courses raised several responses, both
pro and con. As far as I can see, two arguments were raised against the
broadcast of courses:
1. Some professors say it is important to them that students attend
their lectures live, rather than watch tapes. I see two answers to this
objection:
a. Even without the broadcast on SUNet, it is possible for students to
watch tapes of the lectures rather than attend them. Only, for that
they must stand in line for a video machine in the library. As long as
watching tapes is possible, I see no point in deliberately making it
less convenient.
b. Courses have been broadcast on SUNet in the past, and most students
still attended the live lectures. In the four televised courses I
attended last quarter (all of which were broadcast on SUNet), the
classroom was always nearly full. So, if anyone is afraid of having to
talk to an empty classroom, we can see that this does not, in fact,
happen. Personally, I would always rather attend a live lecture than
watch it on tape; but, occasionally, I can't attend the lecture, and
then I'd much rather watch it at home than stand in line at the
library. Experience shows that most students' attitude is the same.
2. A concern was also raised about students keeping tapes of lectures.
I don't believe this has actually happened; I know that whenever I
taped a lecture, I watched it once (or, if the material was very
difficult, twice) and then erased it; I'm sure that's what other
students did, too. I can see that Carolyn Tajnai's concern about
visiting lecturers is valid; but, as she said, this situation is
different from lectures by Stanford faculty.
Since opinion seems divided on the subject, maybe the solution is to
have each professor of a televised course decide whether his course
will be broadcast. Anyway, a decision on the subject has to be made by
the Engineering School (or maybe by the Computer Science Department
independently), and the current situation (not broadcasting any of the
courses) is definitely not right. So, as I said, I ask all faculty who
teach televised courses to inform the Engineering School and SUNet of
their opinion.
Eyal Mozes (eyal@coyote)
∂13-Jan-89 1609 @Score.Stanford.EDU:ungar@self Re: SITN
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 13 Jan 89 16:09:10 PST
Received: from self by SCORE.STANFORD.EDU with TCP; Fri 13 Jan 89 16:06:42-PST
Received: by self (4.0/inc-1.0)
id AA04087; Fri, 13 Jan 89 16:05:03 PST
Date: Fri, 13 Jan 89 16:05:03 PST
From: ungar@self.stanford.edu (David Ungar)
Message-Id: <8901140005.AA04087@self>
To: ARK@SAIL.Stanford.EDU, tom@POLYA.STANFORD.EDU
Subject: Re: SITN
Cc: faculty@SCORE.STANFORD.EDU
This strikes me as a very tough question.
There is no doubt in my mind that we cheat students by allowing
them to watch something on TV when they could be there in person.
On the other hand, better that they watch on TV than they miss it altogether.
David
∂13-Jan-89 1629 @Score.Stanford.EDU:bhayes@polya.Stanford.EDU SITN metadiscussion
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 13 Jan 89 16:29:51 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Fri 13 Jan 89 16:26:55-PST
Received: from LOCALHOST by polya.Stanford.EDU (5.59/25-eef) id AA10442; Fri, 13 Jan 89 16:27:29 PDT
Message-Id: <8901140027.AA10442@polya.Stanford.EDU>
To: csd-bboard@polya.Stanford.EDU, faculty@polya.Stanford.EDU
Subject: SITN metadiscussion
Date: Fri, 13 Jan 89 16:27:25 -0800
From: bhayes@polya.Stanford.EDU
"What we have here is failure to communicate."
There is a very lively discussion on the pros and cons of various forms
of televised classes going on in the faculty mailing list. Students
following this in the bboard (csd-bboard@polya) are replying by posting
on just that bboard. As far as I know, very few faculty members read
that bboard, and so will never even know that students have an opinion
on this subject.
Should students replying to messages cc the faculty mailing list?
Should faculty read the bboard? I'd like to know that ALL the people
interested in the subject were hearing each other.
∂13-Jan-89 2326 @Score.Stanford.EDU:cheriton@Pescadero.Stanford.EDU More on broadcast of courses
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 13 Jan 89 23:26:43 PST
Received: from Pescadero.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Fri 13 Jan 89 23:24:03-PST
Received: by Pescadero.Stanford.EDU (5.59/25-eef) id AA01294; Fri, 13 Jan 89 23:26:55 PDT
Date: Fri, 13 Jan 89 23:26:55 PDT
From: David Cheriton <cheriton@Pescadero.Stanford.EDU>
Message-Id: <8901140726.AA01294@Pescadero.Stanford.EDU>
To: faculty@score
Subject: More on broadcast of courses
It seems to me that this issue is a non-trivial one. The university
is clearly motivated to tape/broadcast our classes to make money.
To date, I've been willing to go along with this, being a good guy,
even though it definitely involved more effort and students that if
I had refused. I've always felt it was unfortunate that there was
basically no recognition given to those of us making this extra effort,
or any consideration given to class size in general.
However, I too have been bothered by having a relatively large class in
enrolment with far fewer in physical attendance. So, I'm not anxious
to encourage this direction. I also just turned down an SITN request
to give a former student a personal copy of one of my lectures.
The major issues I have in mind are:
1) Who owns the what rights on these tapes? Can the university continute
to offer a course by a faculty member using tapes of his lectures
after he has left or been terminated?
2) Can a faculty member offer a course by simply replaying lectures from
a previous year, providing he manages TAs to mark assignements, etc.
and still satisfying his teaching load requirements with such a course.
3) If the courses are broadcast, who is allowed to watch? Can a student
charge others to sit in his dorm room and watch these lectures.
Can he offer this for free? Afterall, some people pay good money for
right to attend our lectures.
In general, musicians and other performers exercise significant control over
the rights to their performances. I think we should be able to have the
same rights and control. Does anyone know the universities current position
on this. The fac. handbook seems suitably ambiguous on any electronic
version of course material (or unsuitably interpretable by the adminstration
I should say). My perception is that this is a good time (if not too late
) to establish that we have performer rights over the tapes.
In particular, the university is paying per performance, and does not
have replay rights without consent.
David C.
∂13-Jan-89 2328 barwise@russell.Stanford.EDU Interns
Received: from russell.Stanford.EDU by SAIL.Stanford.EDU with TCP; 13 Jan 89 23:28:19 PST
Received: from localhost by russell.Stanford.EDU (4.0/inc-1.0)
id AA09920; Fri, 13 Jan 89 23:28:27 PST
Message-Id: <8901140728.AA09920@russell.Stanford.EDU>
To: ssp-faculty@russell.Stanford.EDU
Subject: Interns
Date: Fri, 13 Jan 89 23:28:25 PST
From: Jon Barwise <barwise@russell.Stanford.EDU>
Could you answer the following questionaire:
I definitely plan to announce a project that an SSP student might
particpate in this summer, with 1/2 funds from csli.
I hope to, if I can find the funds.
I would like to, but know that there are no funds available to me for
this sort of thing.
I am not interested in the Intern Program this summer.
Thanks,
Jon
∂14-Jan-89 0006 @Score.Stanford.EDU:allison@shasta.stanford.edu More on the TV question
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 14 Jan 89 00:06:01 PST
Received: from shasta.stanford.edu by SCORE.STANFORD.EDU with TCP; Sat 14 Jan 89 00:03:36-PST
Received: by shasta.stanford.edu; Sat, 14 Jan 89 00:01:11 PST
Date: Sat, 14 Jan 89 00:01:11 PST
From: Dennis Allison <allison@shasta.stanford.edu>
Subject: More on the TV question
To: faculty@score.stanford.edu
If we are going to give video classes, shouldn't we try to use
the medium effectively rather than simply capturing a talking head
and the visual aids that go with a modified form of the traditional
lecture. We should have music, special effects, good professional
graphics, and all the other production values one associated with
professinal video production.
∂14-Jan-89 0037 @Score.Stanford.EDU:JMC@SAIL.Stanford.EDU re: More on the TV question
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 14 Jan 89 00:37:01 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Sat 14 Jan 89 00:34:39-PST
Message-ID: <L$PQs@SAIL.Stanford.EDU>
Date: 14 Jan 89 0035 PST
From: John McCarthy <JMC@SAIL.Stanford.EDU>
Subject: re: More on the TV question
To: allison@SHASTA.STANFORD.EDU, faculty@SCORE.STANFORD.EDU,
csd@SCORE.STANFORD.EDU
[In reply to message from allison@shasta.stanford.edu sent Sat, 14 Jan 89 00:01:11 PST.]
Here's one data point on doing TV classes in a professional way.
In the late 1950s and early 1960s, Jerrold Zacharias of M.I.T.
did the widely praised high school level lectures on physics in a
fully professional way. The cost was about $100,000 per lecture
paid for by post Sputnik educational money. It was his major
activity for several years. The School Mathematics Study Group
was headquartered at Stanford and spent a number of years
preparing filmed high school math courses. If some of us
undertook to produce salable TV lecture courses, the costs would
be similar, and the lecturer preparation and rehearsal time would
be enormous. It might be better for professors to prepare the
material and have actors actually give the lectures.
This matter is entirely orthogonal to allowing students listen to
lectures remotely and tape them. I don't believe the latter
could result in a salable product or even detract from the market
for professionally prepared lecture courses.
Should Department decides to do this, include me out. Those of
us who just continue doing computer science might make a given
video lecture course obsolete before it is even finished.
∂14-Jan-89 0803 @Score.Stanford.EDU:CAB@SAIL.Stanford.EDU Professional TV lectures
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 14 Jan 89 08:02:57 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Sat 14 Jan 89 08:00:47-PST
Message-ID: <4$Vjb@SAIL.Stanford.EDU>
Date: 14 Jan 89 0752 PST
From: Chuck Bigelow <CAB@SAIL.Stanford.EDU>
Subject: Professional TV lectures
To: allison@SHASTA.STANFORD.EDU
CC: faculty@SCORE.STANFORD.EDU
This opens up "insanely great" possibilities:
"Algorithms of Fortune", starring Don "DEK" Knuth and Vanna White!
"Miami Systems", starring Dave Cheriton and Don Johnson
"Artificial Intelligence, Natural Curls" [fill in your favorites]
and, of course, along with the "lectures" we can have that other
great, uplifting contribution by television to modern culture -
COMMERCIALS!
Just imagine what some really slick commercials could do for
the Computer Forum!
Selling computer science like soap, deodorant, and Isuzus!
(apologies to those whose names were mentioned without permission,
and for all the exclamation points)
∂14-Jan-89 0935 @Score.Stanford.EDU:nilsson@Tenaya.stanford.edu mailing lists
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 14 Jan 89 09:35:20 PST
Received: from Tenaya.stanford.edu by SCORE.STANFORD.EDU with TCP; Sat 14 Jan 89 09:33:12-PST
Received: by Tenaya.stanford.edu (5.59/25-eef) id AA02573; Sat, 14 Jan 89 09:33:01 PDT
Date: Sat, 14 Jan 89 09:33:01 PDT
From: Nils Nilsson <nilsson@Tenaya.stanford.edu>
Message-Id: <8901141733.AA02573@Tenaya.stanford.edu>
To: faculty@score
Subject: mailing lists
This note is a reminder that when one sends a msg to "faculty@score,"
it goes to faculty plus student bureaucrats plus senior staff plus
research associates. I mention this because the student bureaucrats
sometimes (at their discretion) forward to the students msgs that
come to the bureaucrats via "faculty@score" (and that's fine with me).
Although one should never work under the illusion that e-mail is
private, sometimes the lists "tenured@score" and "ac@score" (the
latter is academic council) are the appropriate ones to use.
-Nils
∂14-Jan-89 0939 @Score.Stanford.EDU:nilsson@Tenaya.stanford.edu space in mjh
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 14 Jan 89 09:39:13 PST
Received: from Tenaya.stanford.edu by SCORE.STANFORD.EDU with TCP; Sat 14 Jan 89 09:35:55-PST
Received: by Tenaya.stanford.edu (5.59/25-eef) id AA02576; Sat, 14 Jan 89 09:35:46 PDT
Date: Sat, 14 Jan 89 09:35:46 PDT
From: Nils Nilsson <nilsson@Tenaya.stanford.edu>
Message-Id: <8901141735.AA02576@Tenaya.stanford.edu>
To: faculty@score
Subject: space in mjh
George Wheaton, Yvette Sloan, and I will soon be meeting to review the
space situation in MJH. In summary, there is NO space for visitors
and/or others for next year in MJH that have not specifically been
approved and are known to us already. Faculty additions and previous
commitments to visitors will fill us up to the top! It looks like
we will be in this tight situation until the new building is
finished.
-Nils
∂14-Jan-89 1147 @Score.Stanford.EDU:dill@amadeus.Stanford.EDU TV
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 14 Jan 89 11:47:48 PST
Received: from amadeus.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Sat 14 Jan 89 11:45:30-PST
Received: by amadeus.Stanford.EDU (5.59/inc-1.0)
id AA09031; Sat, 14 Jan 89 11:46:24 PDT
Date: Sat, 14 Jan 89 11:46:24 PDT
From: dill@amadeus.Stanford.EDU (David Dill)
Message-Id: <8901141946.AA09031@amadeus.Stanford.EDU>
To: faculty@score.stanford.edu
Subject: TV
Unlike JMC, I teach (almost) every quarter. I teach 100-level classes
with many undergraduates, who do NOT always know what is good for them.
Every class I teach is televised, and every one has had more than 50
graded students at the end and sometimes more than 100.
I do not object to the televised classes, although my job would be easier
if they were not televised. Correct me if I'm wrong, but I think it's
unusual for university professors to have to teach to TV cameras.
I believe that it is beneficial for students to attend lectures. First,
it makes the lecture more interesting to everyone. I ask a lot of questions
of the students during the lecture. I think that the interaction helps
my enthusiasm, and raises a lot of points that I would not normally
bring up. Second, I think the most important factor in making a lecture
effective is student involvement -- the students should be actively
thinking ahead of what I am saying. Passive TV viewing is in total
opposition to this.
I don't have documented scientific evidence to support these feelings
(nor should I need it). They are based on my teaching experience
(which is rather limited) and, more importantly, on my own experiences
as a student.
If I have to show up for lectures at a particular time and place
I don't see why the students should be exempted from the same duty. If
TV viewing is so effective, why do we have to give the same lectures
repeatedly? Perhaps instead of lecturing I should replay videotapes
from previous quarters. Would Stanford pay my salary if I did this?
By the way, is it unreasonable to expect that people would refrain
from making ad hominem attacks on their colleagues on this mailing
list?
∂14-Jan-89 2005 @Score.Stanford.EDU:ungar@self Re: TV
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 14 Jan 89 20:05:43 PST
Received: from self by SCORE.STANFORD.EDU with TCP; Sat 14 Jan 89 20:03:32-PST
Received: by self (4.0/inc-1.0)
id AA04399; Sat, 14 Jan 89 20:01:51 PST
Date: Sat, 14 Jan 89 20:01:51 PST
From: ungar@self.stanford.edu (David Ungar)
Message-Id: <8901150401.AA04399@self>
To: dill@amadeus.Stanford.EDU, faculty@score.stanford.edu
Subject: Re: TV
How about making ad homonym attacks?
David
PS: Thanks, Dave D., for explaining why students who don't attend in person
lose out.
∂15-Jan-89 1203 TAJNAI@Score.Stanford.EDU [Tracy Larrabee <larrabee@polya.Stanford.EDU>: Re: COMPUTER FORUM ---POSTER SESSION -- REVISED DEADLINE ]
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 15 Jan 89 12:03:29 PST
Date: Sun 15 Jan 89 12:01:01-PST
From: Carolyn Tajnai <TAJNAI@Score.Stanford.EDU>
Subject: [Tracy Larrabee <larrabee@polya.Stanford.EDU>: Re: COMPUTER FORUM ---POSTER SESSION -- REVISED DEADLINE ]
To: faculty@Score.Stanford.EDU, hiller@Score.Stanford.EDU
Message-ID: <12462806542.9.TAJNAI@Score.Stanford.EDU>
Prof. De Micheli has received no commitments from students to participate
in the Poster Session. I knew that Tracy Larrabee was enthusiastic about
the Poster Session last year, and I asked her to send a message to the
students. The following is the result, and I thought you should all read it.
I hope you will encourage your students to participate in the Poster Session.
Carolyn
---------------
Return-Path: <larrabee@polya.Stanford.EDU>
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Sat 14 Jan 89 23:24:14-PST
Received: from LOCALHOST by polya.Stanford.EDU (5.59/25-eef) id AA21887; Sat, 14 Jan 89 23:24:52 PDT
Message-Id: <8901150724.AA21887@polya.Stanford.EDU>
To: nanni@galileo.stanford.edu (Giovanni De Micheli)
Cc: csl-students@sierra.Stanford.EDU, students@score.Stanford.EDU,
tajnai@score.Stanford.EDU, larrabee@polya.Stanford.EDU
Subject: Re: COMPUTER FORUM ---POSTER SESSION -- REVISED DEADLINE
In-Reply-To: Your message of Fri, 13 Jan 89 16:37:12 -0800.
<8901140037.AA22043@galileo.Stanford.EDU>
Date: Sat, 14 Jan 89 23:24:51 -0800
From: Tracy Larrabee <larrabee@polya.Stanford.EDU>
This year I am giving a forum talk, but last year I presented a poster. I
wanted to make sure that those students who vaguely considered presenting a
poster but decided their work wasn't ready, or it was too much work, or it
would keep them from doing the research they needed to finish so that they
could give a Forum talk next year. . . well, they should reconsider.
I actually have some results now, but last year I was just beginning to get
anything. I had an approach to explain, but I really didn't have any proof
that what I was doing was going to pan out. I was really nervous about the
poster session, but Carolyn Tajnai convinced me that it would be a good
warm up for more formal presentations of my work and that it would just
generally be "a good idea." (Thank you, Carolyn.)
Of course, I made my poster at the last minute, and of course it had a couple
of glaring (to me) mistakes in it when I walked into the session. But when
the poster session started, it didn't really matter. I stopped thinking about
any errors on my poster because I was too busy talking to people. I even
forgot to be nervous because it wasn't really a formal presentation and I
was just talking with some people about my ideas (and their ideas). I had
a good time, I made some good contacts, and I kept my enthusiasm long
enough to have a period of productivity unrivaled in my post-qual Stanford
career.
I think it was a good deal.
-------
∂15-Jan-89 1321 @Score.Stanford.EDU:coraki!pratt@Sun.COM Occasional summaries of student opinion
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 15 Jan 89 13:21:07 PST
Received: from Sun.COM by SCORE.STANFORD.EDU with TCP; Sun 15 Jan 89 13:18:46-PST
Received: from sun.Sun.COM (sun-bb.sun.com) by Sun.COM (4.1/SMI-4.0)
id AA24050; Sun, 15 Jan 89 13:21:32 PST
Received: from coraki.UUCP by sun.Sun.COM (4.0/SMI-4.0)
id AA25415; Sun, 15 Jan 89 13:18:48 PST
Received: by (4.0/SMI-4.0Beta)
id AA24919; Sun, 15 Jan 89 11:28:28 PST
Date: Sun, 15 Jan 89 11:28:28 PST
From: Vaughan Pratt <coraki!pratt@Sun.COM>
Message-Id: <8901151928.AA24919@>
To: faculty@score.stanford.edu
Subject: Occasional summaries of student opinion
I for one would appreciate seeing on this mailing list an occasional
summary of recent trends in student opinion. How about if the student
bureaucrats take on the responsibility for this? An appropriate
startup strategy would be for them to do it themselves in the beginning
to debug the process, then delegate the work if it gets too
burdensome.
-v
∂15-Jan-89 1326 @Score.Stanford.EDU:coraki!pratt@Sun.COM Re: SITN
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 15 Jan 89 13:26:30 PST
Received: from Sun.COM by SCORE.STANFORD.EDU with TCP; Sun 15 Jan 89 13:24:17-PST
Received: from sun.Sun.COM (sun-bb.sun.com) by Sun.COM (4.1/SMI-4.0)
id AA24038; Sun, 15 Jan 89 13:21:25 PST
Received: from coraki.UUCP by sun.Sun.COM (4.0/SMI-4.0)
id AA25427; Sun, 15 Jan 89 13:18:58 PST
From: coraki!pratt@Sun.COM
Received: from localhost by (4.0/SMI-4.0Beta)
id AA25092; Sun, 15 Jan 89 13:01:09 PST
Message-Id: <8901152101.AA25092@>
To: John McCarthy <JMC@sail.stanford.edu>
Cc: faculty@score.stanford.edu, csd@score.stanford.edu
Subject: Re: SITN
In-Reply-To: Your message of 13 Jan 89 1656 PST.
<10$ti7@SAIL.Stanford.EDU>
Date: 15 Jan 89 13:01:07 PST (Sun)
I don't understand any sentence beginning "There is no doubt in my
mind that we cheat students by allowing them to ...". Could you
explain the general principle of such sentences?
How about the principle that learning requires discipline, some of
which may need to come from the teacher? Students typically don't feel
cheated at the time, the reaction can be delayed by years.
-v
∂15-Jan-89 1336 @Score.Stanford.EDU:gio@sumex-aim.stanford.edu TV and lectures, my vote
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 15 Jan 89 13:36:49 PST
Received: from sumex-aim.stanford.edu by SCORE.STANFORD.EDU with TCP; Sun 15 Jan 89 13:34:35-PST
Received: by sumex-aim.stanford.edu (4.0/inc-1.0)
id AA05942; Sun, 15 Jan 89 13:35:46 PST
Date: Sun, 15 Jan 1989 13:35:45 PST
From: Gio Wiederhold <gio@sumex-aim.stanford.edu>
To: faculty@score.stanford.edu
Subject: TV and lectures, my vote
Message-Id: <CMM.0.88.600903345.gio@sumex-aim.stanford.edu>
I am quite willing to have stdents see them anywhere. As long as some
students show up live that is good enough for me. Any students/enterpreneurs
foolish enough to record them for posterity underestimate the pace of
technology and the interaction of readings and homework in a course.
It's hard enough to keep books up-to-date. I do refuse to put research
seminars, where interaction is desired, on TV. It is my right to cooperate
or not. fin.
Gio
∂16-Jan-89 1103 @Score.Stanford.EDU:nilsson@Tenaya.stanford.edu CSD Retreat
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 16 Jan 89 11:03:38 PST
Received: from Tenaya.stanford.edu by SCORE.STANFORD.EDU with TCP; Mon 16 Jan 89 10:41:00-PST
Received: by Tenaya.stanford.edu (5.59/25-eef) id AA03844; Mon, 16 Jan 89 10:40:40 PDT
Date: Mon, 16 Jan 89 10:40:40 PDT
From: Nils Nilsson <nilsson@Tenaya.stanford.edu>
Message-Id: <8901161840.AA03844@Tenaya.stanford.edu>
To: faculty@score
Subject: CSD Retreat
Most of the responses to my survey about having a CSD retreat were
positive, so I conclude that we should have one. The center of
gravity of opinion about content is that we should concentrate on
technical subjects, as we did last year, but with some time reserved
for discussing issues of strategic importance to the Dept. Most
people expressing any opinion at all preferred going to Chaminade
again. While the union of sets of unfavorable times was the universal
set, it appears that the weekend of May 6 & 7 appears ok to most.
So, I'll ask Joyce (hereby) to check with Chaminade about space for
the evenings of Friday, May 5 and Saturday, May 6 for a retreat
beginning late Friday afternoon, lasting all day Saturday, with a
possibility of extending into Sunday morning. I'll also ask Joyce to
conduct a poll of the faculty and senior research associates to see
whether they are "definite attendees," "maybes," or "definite no's"
for May 5-7.
Yours for a more cohesive and well informed department,
Nils
∂16-Jan-89 1107 @Score.Stanford.EDU:nilsson@Tenaya.stanford.edu Tuesday Lunch
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 16 Jan 89 11:07:12 PST
Received: from Tenaya.stanford.edu by SCORE.STANFORD.EDU with TCP; Mon 16 Jan 89 10:57:22-PST
Received: by Tenaya.stanford.edu (5.59/25-eef) id AA03853; Mon, 16 Jan 89 10:57:02 PDT
Date: Mon, 16 Jan 89 10:57:02 PDT
From: Nils Nilsson <nilsson@Tenaya.stanford.edu>
Message-Id: <8901161857.AA03853@Tenaya.stanford.edu>
To: faculty@score
Cc: xb.mmr@forsythe
Subject: Tuesday Lunch
Tomorrow, Jan 17, we will have as faculty lunch guests Bill Yundt of
Stanford's Information Resources (Networks) and Michael Roberts of
Educom. I have asked them to come to give their perspective on
national and international computer networks. (Probably all of you
have heard that the ARPAnet is going away as our main computer
communication channel and that NSFnet and other networks are coming
along.) Bill and Mike are on top of all of these matters so come
with your appetites and questions. 12:15 in mjh146. -Nils
∂16-Jan-89 1235 @Score.Stanford.EDU:hayes@arisia.xerox.com SITN
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 16 Jan 89 12:35:48 PST
Received: from arisia.Xerox.COM by SCORE.STANFORD.EDU with TCP; Mon 16 Jan 89 12:33:12-PST
Received: by arisia.Xerox.COM
(5.59++/IDA-1.2.6) id AA04335; Mon, 16 Jan 89 12:32:51 PST
Date: Mon, 16 Jan 89 12:32:51 PST
From: Pat Hayes <hayes@arisia.xerox.com>
Message-Id: <8901162032.AA04335@arisia.Xerox.COM>
To: JMC@SAIL.STANFORD.EDU
Cc: ungar@SELF.STANFORD.EDU, faculty@SCORE.STANFORD.EDU,
csd@SCORE.STANFORD.EDU
In-Reply-To: John McCarthy's message of 13 Jan 89 16:56 PST <10$ti7@SAIL.Stanford.EDU>
Subject: SITN
Surely, its fairly straightforward. We cheat some kids of a full life
by allowing them to buy crack cheaply in the streets. The basic
premis is that "we" know more about some of what is good for "them"
than they do. This is a dangerous idea, admittedly, but isnt an
outrageous premis to apply to University education: I dont have
trouble with the idea that Faculty know more about the efficacy of
some forms of education than most Students do, if only because theyve
been around longer.
Pat
∂16-Jan-89 1245 @Score.Stanford.EDU:hayes@arisia.xerox.com More on the TV question
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 16 Jan 89 12:45:36 PST
Received: from arisia.Xerox.COM by SCORE.STANFORD.EDU with TCP; Mon 16 Jan 89 12:43:10-PST
Received: by arisia.Xerox.COM
(5.59++/IDA-1.2.6) id AA04386; Mon, 16 Jan 89 12:42:48 PST
Date: Mon, 16 Jan 89 12:42:48 PST
From: Pat Hayes <hayes@arisia.xerox.com>
Message-Id: <8901162042.AA04386@arisia.Xerox.COM>
To: JMC@SAIL.STANFORD.EDU
Cc: allison@SHASTA.STANFORD.EDU, faculty@SCORE.STANFORD.EDU,
csd@SCORE.STANFORD.EDU
In-Reply-To: John McCarthy's message of 14 Jan 89 00:35 PST <L$PQs@SAIL.Stanford.EDU>
Subject: More on the TV question
Tapes do not have to be professionally produced to be saleable. The
Linguistics Institute held at Stanford 2 summers ago taped several of
its lectures and is now offering them for sale, and expects to make a
bundle of money. They are quite awfully produced: I know, I am in one
of them. ( A decision I now bitterly regret, not because of the money I
lost, but because they arent very good but will be for many
people their only evidence of my lecturing style. This illustrates
one of my own chief worries about lecturing to a camera, by the way. Maybe
this is mere ego, of course.)
Pat
∂16-Jan-89 1255 @Score.Stanford.EDU:hayes@arisia.xerox.com Professional TV lectures
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 16 Jan 89 12:55:31 PST
Received: from arisia.Xerox.COM by SCORE.STANFORD.EDU with TCP; Mon 16 Jan 89 12:53:16-PST
Received: by arisia.Xerox.COM
(5.59++/IDA-1.2.6) id AA04748; Mon, 16 Jan 89 12:52:55 PST
Date: Mon, 16 Jan 89 12:52:55 PST
From: Pat Hayes <hayes@arisia.xerox.com>
Message-Id: <8901162052.AA04748@arisia.Xerox.COM>
To: CAB@SAIL.STANFORD.EDU
Cc: allison@SHASTA.STANFORD.EDU, faculty@SCORE.STANFORD.EDU
In-Reply-To: Chuck Bigelow's message of 14 Jan 89 07:52 PST <4$Vjb@SAIL.Stanford.EDU>
Subject: Professional TV lectures
Its silly to be so sarcastic. Talk to some academic publishers. MIT
press is very excited about the idea of a textbook in the form of a
videotape, and Addison-Wesley ( I think ) already has something rather
like it, a series of quite professionally produced tapes on AI which
they have been demonstrating at AI shows now for at least 2 years.
These guys are in it for the money, but if this catches on, then
Stanford had better start getting its faculty visible on such videos
somehow, or all the smart kids are going to much more excited by the
gems of exposition which they can see in their school libraries than
they are by Stanford entrance literature.
Pat
∂16-Jan-89 1314 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Text in programming language semantics
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 16 Jan 89 13:13:56 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA02424; Mon, 16 Jan 89 13:13:15 PDT
Message-Id: <8901162113.AA02424@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Mon, 16 Jan 89 13:05:48 PST
Received: by BYUADMIN (Mailer R2.01A) id 5652; Mon, 16 Jan 89 12:47:03 MST
Date: Mon, 16 Jan 89 10:24:46 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Steve Stevenson <steve%HUBCAP.CLEMSON.EDU@Forsythe.Stanford.EDU>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Steve Stevenson <steve%HUBCAP.CLEMSON.EDU@Forsythe.Stanford.EDU>
Subject: Text in programming language semantics
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
I'm looking for texts or articles in semantics. I want to cover the whole
landscape so tutorials, ``where are we now'', and ``heavy'' texts are
desired.
Please send your favorites and I'll post a summary.
Thanks.
Steve (really "D. E.") Stevenson steve@hubcap.clemson.edu
Department of Computer Science, (803)656-5880.mabell
Clemson University, Clemson, SC 29634-1906
∂16-Jan-89 1333 @Score.Stanford.EDU:nilsson@Tenaya.stanford.edu [moran@Warbucks.AI.SRI.COM: RFC: Ethics of the Internet]
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 16 Jan 89 13:33:28 PST
Received: from Tenaya.stanford.edu by SCORE.STANFORD.EDU with TCP; Mon 16 Jan 89 13:30:51-PST
Received: by Tenaya.stanford.edu (5.59/25-eef) id AA03958; Mon, 16 Jan 89 13:30:23 PDT
Date: Mon, 16 Jan 89 13:30:23 PDT
From: Nils Nilsson <nilsson@Tenaya.stanford.edu>
Message-Id: <8901162130.AA03958@Tenaya.stanford.edu>
To: faculty@score, xb.mmr@forsythe
Subject: [moran@Warbucks.AI.SRI.COM: RFC: Ethics of the Internet]
fyi:
------
Return-Path: <@Tenaya.stanford.edu,@Score.Stanford.EDU:moran@ai.sri.com>
Date: Mon, 16 Jan 89 11:35:10 PST
From: moran@Warbucks.AI.SRI.COM (Doug Moran)
To: aic-staff@Warbucks.AI.SRI.COM
Subject: RFC: Ethics of the Internet
Date: Sun, 15 Jan 89 18:48:42 PST
From: cliff@Csa5.LBL.Gov (Cliff Stoll)
Subject: Ethics of the Internet - Request for Comments
Network Working Group IAB
Request for Comments: PPPP January 1989
Ethics and the Internet
Status of this Memo
This memo is a statement of policy by the Internet Activities
Board concerning the proper use of the resources of the Internet.
Introduction
At great human and economic cost, resources drawn from the U.S. and government,
industry and the academic community have been assembled into a collection of
interconnected networks called the Internet. Begun as a vehicle for
experimental network research in the mid-1970's, the Internet has become an
important national infrastructure supporting an increasingly widespread,
multi-disciplinary community of researchers ranging, inter alia, from computer
scientists and electrical engineers to mathematicians, physicists, medical
researchers, chemists, astronomers and space scientists.
As is true of other common infrastructure (e.g. roads, water reservoirs and
delivery systems, and the power generation and distribution network), there is
widespread dependence on the Internet by its users for the support of
day-to-day research activities.
The reliable operation of the Internet and the responsible use of its resources
is of common interest and concern for its users, operators and sponsors. Recent
events involving the hosts on the Internet and in similar network
infrastructures underscore the need to reiterate the professional
responsibility every Internet user bears to colleagues and to the sponsors of
the system. To the extent that the Internet resources are provided by the U.S.
Government, this responsibility becomes a Federal matter above and beyond
simple professional ethics.
IAB Statement of Policy
The Internet is a national facility whose utility is largely a consequence of
its wide availability and accessibility. Irresponsible use of this critical
resource poses an enormous threat to its continued availability to the
technical community.
The U.S. Government sponsors of this system have a fiduciary responsibility to
the Legislature to allocate government resources wisely and effectively.
Justification for the support of this system suffers when highly disruptive
abuses occur. Access to and use of the Internet is a privilege and should be
treated as such by all users of this system.
The IAB strongly endorses the view of the Division Advisory Panel of the
National Science Foundation Division of Network, Communications Research and
Infrastructure which, in paraphrase, characterized as unethical and
unacceptable any activity which purposely:
(a) seeks to gain unauthorized access to the resources of the Internet
(b) disrupts the intended use of the Internet
(c) wastes resources (people, capacity, computer) through such actions
(d) destroys the integrity of computer-based information
or (e) compromises the privacy of users
The Internet exists in the general research milieu. Portions of it continue to
be used to support research and experimentation on networking. Because
experimentation on the Internet has the potential to affect all of its
components and users, researchers have the responsibility to exercise great
caution in the conduct of their work. Negligence in the conduct of
Internet-wide experiments is both irresponsible and unacceptable.
The IAB plans to take whatever actions it can, in concert with Federal agencies
and other interested parties, to identify and to set up technical and
procedural mechanisms to make the Internet more resistant to disruption. Such
security, however, is extremely expensive and may be counterproductive if it
inhibits the free flow of information which makes the Internet so valuable. In
the final analysis, the health and well-being of the Internet is the
responsibility of its users who must, uniformly, guard against abuses which
disrupt the system and threaten its long-term viability.
∂16-Jan-89 1402 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Faculty positions at University of Haifa
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 16 Jan 89 14:02:17 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA08207; Mon, 16 Jan 89 14:01:38 PDT
Message-Id: <8901162201.AA08207@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Mon, 16 Jan 89 14:00:27 PST
Received: by BYUADMIN (Mailer R2.01A) id 6405; Mon, 16 Jan 89 13:13:06 MST
Date: Mon, 16 Jan 89 10:28:14 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
gadi RSMA309@HAIFAUVM.BITNETAIFAUVM>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: gadi moran <RSMA309%HAIFAUVM.BITNET@forsythe.stanford.edu>
Subject: Faculty positions at University of Haifa
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
UNIVERSITY OF HAIFA
DEPARTMENT OF MATHEMATICS AND COMPUTER SCIENCE
APPLICATIONS ARE INVITED FOR ANTICIPATED FACULTY POSITION IN ALL AREAS OF
COMPUTER SCIENCE. THE DEPARTMENT WISHES TO STRENGTHEN ITS PROGRAMS THAT
COMBINE MATHEMATICS AND COMPUTER SCIENCE. STRONG INTEREST IN BOTH
RESEARCH AND TEACHING ARE EXPECTED. SEND RESUMEE INCLUDING RESEARCH
INTERESTS, LIST OF PUBLICATIONS AND ASK FOR 3 REFERENCE LETTERSSENT TO:
PROFESSOR YAIR CENSOR, CHAIRMAN
DEPARTMENT OF MATHEMATICS AND COMPUTER SCIENCE
UNIVERSITY OF HAIFA
HAIFA 31999
ISRAEL.
Bitnet: rsma403@haifauvm
∂16-Jan-89 1403 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Towards an Online Rolodex
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 16 Jan 89 14:03:34 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA08269; Mon, 16 Jan 89 14:02:52 PDT
Message-Id: <8901162202.AA08269@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Mon, 16 Jan 89 14:00:49 PST
Received: by BYUADMIN (Mailer R2.01A) id 6674; Mon, 16 Jan 89 13:28:30 MST
Date: Mon, 16 Jan 89 10:30:39 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
rig%THEORY.LCS.MIT.EDU@Forsythe.Stanford.EDU
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: rig%THEORY.LCS.MIT.EDU@Forsythe.Stanford.EDU
Subject: Towards an Online Rolodex
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
Towards an Online Rolodex
The following is a suggested mechanism to help members of our
community find one another. Unfortunately, this scheme will allow
information to be retrieved only by those who can telnet to
sri-nic.arpa; if you are not in this category, you are still
encouraged to submit information and keep it up to date so others can
find you even if you can't find them.
To get listed in the database at sri-nic, just send a template like
the following one to registrar@sri-nic.arpa. The entry for HANDLE
should be left blank; blank entries are also fine in the other places
they appear.
FULL NAME: Person, J. Random
U.S. MAIL ADDRESS: Podunk University
123 Main Street
Podunk, NY 19999
PHONE: (212) 000-0000
AUTHORIZING HOST: THEORY.PODUNK.EDU
PRIMARY LOGIN NAME: jrp
PRIMARY NETWORK MAILBOX: jrp@THEORY.PODUNK.EDU
TERMINATION DATE:
HANDLE:
DELETE? (y/n):
To get information from the database, just telnet to sri-nic.arpa, and
type "whois" followed by a carriage return. You can learn how to
perform retrievals by typing "?" followed by a carriage return.
∂16-Jan-89 1406 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Finite Halting Problem Considered Solvable
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 16 Jan 89 14:06:02 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA08491; Mon, 16 Jan 89 14:05:26 PDT
Message-Id: <8901162205.AA08491@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Mon, 16 Jan 89 14:01:21 PST
Received: by BYUADMIN (Mailer R2.01A) id 7245; Mon, 16 Jan 89 13:42:31 MST
Date: Mon, 16 Jan 89 10:32:35 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Dan Bernstein <phoenix!bernsten%PRINCETON.EDU@Forsythe.Stanford.EDU>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Dan Bernstein <phoenix!bernsten%PRINCETON.EDU@Forsythe.Stanford.EDU>
Subject: Finite Halting Problem Considered Solvable
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
The halting problem is to determine whether a given program loops forever.
This is an uncomputable function of a program, as we all know.
But if a program is restricted to a finite number of states then the
problem is computable. The practical solution is that we run the program
on two machines with that number of states, one machine exactly twice as
fast as the other; if the program loops in time t to t+u, then we will
see the machines in exactly the same state at time 3t to 3t+3u.
Now consider modern, real computers.
The space needed for this is practical. But the time is a trickier
consideration. How do we compare the states of two computers? The
solution is that in unit time a computer modifies a bounded-size
portion of its state as expressed in bits. So we merely watch what
registers, memory bytes, etc. are changed, incrementing a difference
count when something is made different on the two machines and
decrementing it when something is made the same. As a matter of fact,
this (at least for memory) is already done by good caches. It would
be a simple modification to those caches designed for multiprocessors
to have them keep track of (1) registers and flags as well as memory
and (2) a difference count.
Of course, this eminently practical hardware solution is only
appropriate if the entire machine is involved in a single computation
that we don't want to have accidentally looping. But I'd say that
the problem is practically solvable in software for many situations.
For example, MACSYMA and similar programs could have a feature that
a user-defined function be run three times slower and have it detect
infinite loops of variables blah, blah, and blah in the function. I
would expect that this be restricted to non-recursively written functions,
and restricted to functions that don't use non-mathematical stuff like
reading from a disk file---but it's still quite doable and would be a
real, live, practical solution to the halting problem.
More ambitiously, I can see how a C compiler could compile a function to
detect infinite loops. The function would probably run somewhat slower
than just three times, as most optimizations would go down the drain and
dealing with the difference count would be a major speed factor relative
to the speed of single expressions. And yes, it would take double the
memory---which could be a problem if the function had an array taking
an amount of space comparable to the space available on the machine.
And I would expect the restriction that the function and everything it
calls must use only built-in C, no system calls or anything else possibly
external; and also that the function and everything it calls must only
use variables local to themselves. But after all these caveats this still
remains a valuable tool that I would have loved to have for testing many
programs: the practical solution to the halting problem.
---Dan Bernstein, bernsten@phoenix.princeton.edu
∂16-Jan-89 1406 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Theory positon at Michigan
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 16 Jan 89 14:06:42 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA08510; Mon, 16 Jan 89 14:06:00 PDT
Message-Id: <8901162206.AA08510@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Mon, 16 Jan 89 14:01:27 PST
Received: by BYUADMIN (Mailer R2.01A) id 7323; Mon, 16 Jan 89 13:42:49 MST
Date: Mon, 16 Jan 89 10:35:04 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Kevin_Compton%UM.CC.UMICH.EDU@Forsythe.Stanford.EDU
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Kevin_Compton%UM.CC.UMICH.EDU@Forsythe.Stanford.EDU
Subject: Theory positon at Michigan
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
The following may be of interest to graduating or recently graduated
Ph. D.s in theory.
THEORY POSITION AT THE UNIVERSITY OF MICHIGAN
The Electrical Engineering and Computer Science Department at the
University of Michigan invites applications for a junior level
position in the theory of computation. Areas of specialization
sought include (but are not restricted to) parallel algorithms,
complexity theory, and logic in computer science, including semantics
of programming and natural languages.
Faculty doing research in theoretical areas :
Yuri Gurevich: logic, complexity theory, semantics
Bill Rounds: semantics of programming and natural languages
Quentin Stout: algorithms, parallel algorithms and architectures
Kevin Compton: logic, complexity theory, combinatorics
Deepak Sherlekar: combinatorial algorithms and VLSI
Todd Knoblock: proof theory and programming languages
Cordelia Hall: denotational semantics and functional programming
In addition, there is strong interaction with other groups in the
department and on campus, particularly in cognitive science and
mathematics.
The EECS department has about 100 faculty, 35 of whom are in computer
science. Ample funds for research startup and equipment are made
available to new faculty members. Ann Arbor is one of the most
pleasant small cities in the U.S.; it offers an abundance of cultural
activities, fine restaurants, affordable quality housing, and good
schools.
Please send resumes to:
Edward S. Davidson, Chairman
Electrical Engineering and Computer Science
University of Michigan
Ann Arbor, MI 48109-2122
USA
For additional information, contact
Kevin_Compton@um.cc.umich.edu phone: (313)763-9165
Bill_Rounds@um.cc.umich.edu phone: (313)764-9418
Quentin_F._Stout@um.cc.umich.edu phone: (313)763-1518
or write to the address above.
∂16-Jan-89 1407 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu an improved Boolean matrix multiplication algorithm
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 16 Jan 89 14:07:32 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA08566; Mon, 16 Jan 89 14:06:46 PDT
Message-Id: <8901162206.AA08566@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Mon, 16 Jan 89 14:01:45 PST
Received: by BYUADMIN (Mailer R2.01A) id 7414; Mon, 16 Jan 89 13:45:07 MST
Date: Mon, 16 Jan 89 10:46:43 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Udi Manber <udi%ARIZONA.EDU@Forsythe.Stanford.EDU>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Udi Manber <udi%ARIZONA.EDU@Forsythe.Stanford.EDU>
Subject: an improved Boolean matrix multiplication algorithm
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
A recent IPL paper by Atkinson and Santoro (Sept. 88) presented an
O(n~3/(log n)~1.5 ) algorithm for Boolean matrix multiplication.
Unlike the Four-Russian's result, the authors assume a uniform, as opposed
to logarithmic, cost model. Specifically, O(log n)-bit integer arithmetic
and random memory access take unit time (which seems to be a very reasonable
assumption that is made implicitly by many algorithms).
Gene Myers and I realized that with this model, the Four-Russians approach
is fairly easily improved to O(n~3/(log n)~2 ) time.
In general, the result holds for any finite, small algebra <S,+,*>,
provided only that + is associative.
Furthermore, it turns out that the algorithm requires
only O(n log n) bits of auxiliary memory if one assumes that the
resultant matrix is to be memory resident.
We haven't seen this result mentioned anywhere. The purpose of this
message is to sketch the result and ask if anyone has seen it in the
literature. References would be appreciated.
-- Udi Manber ( udi@arizona.edu )
(We assume some familiarity with the "Four-Russian" algorithm;
see, for example, Aho, Hopcroft, and Ullman [1974].
We describe it briefly in the next paragraph.)
Consider two n X n Boolean matrices A and B.
The "Four-Russians" algorithm divides A into groups of columns,
and B into groups of rows.
Each group contains k columns or rows.
For each i, we need to compute the product of the ith group of columns
of A with the ith group of rows of B.
This product can be done in time O(n~2 + n*2~k) by precomputing all possible
sums of rows from B's group.
There are 2~k subsets of rows, so the table has 2~k entries,
each one corresponds to a k-bit number.
Computing the product of one row R (of size k) from A's group
with B's group is the same as adding the rows corresponding to
the bits in R, which can be found in the Rth entry in the table.
(R serves as an integer and a k-bit Boolean vector at the same time.)
The table can be constructed in time O(n*2~k).
Since there are n/k groups, the running time of this algorithm is
O(n~3/k + n~2*2~k/k). By choosing k to be log n, we get a running time
of O(n~3/log n). The space requirements (if one is careful) is O(n~2).
We can improve this algorithm by another factor of log n by considering
each row of B as an n/m tuple of integers, each integer with m bits.
We construct a table of all possible Boolean sums of two m-bits
Boolean vectors. This is a two-dimensional table of size 2~m X 2~m.
Using this table, we can add two rows of B in n/m steps.
We use this trick both for the multiplication algorithm itself *and*
for building the tables for it.
Again, each m-bit Boolean vector serves as an integer and an index
to the table. By choosing m to be (log n)/2 we get a running time
of O(n~3/(log n)~2). We do not describe the implementation in detail,
but it is quite straightforward.
-----------------------------------------------------------------------
∂16-Jan-89 1502 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Registration information for EUROCRYPT '89
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 16 Jan 89 15:02:30 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA13560; Mon, 16 Jan 89 15:01:44 PDT
Message-Id: <8901162301.AA13560@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Mon, 16 Jan 89 15:00:23 PST
Received: by BYUADMIN (Mailer R2.01A) id 7836; Mon, 16 Jan 89 14:05:01 MST
Date: Mon, 16 Jan 89 10:50:33 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
"Jac. Quisquater" <mcvax!prlb2!quisquat@UUNET.UU.NET>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: "Jac. Quisquater" <mcvax!prlb2!quisquat@UUNET.UU.NET>
Subject: Registration information for EUROCRYPT '89
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
REGISTRATION INFORMATION
EUROCRYPT '89
April 10-13, 1989
Houthalen, BELGIUM
A WORKSHOP ON THE THEORY AND APPLICATIONS OF CRYPTOGRAPHIC TECHNIQUES
An international conference sponsored by the
International Association for Cryptologic Research (IACR)
Organizing Committee
Joos Vandewalle (General chairman)
Tri An Banh (ULg, Li`ege)
Marijke De Soete (RUG, Gent)
Jean Doyen (ULB, Bruxelles)
Jean-Marie Goethals (UCL, Louvain-la-Neuve)
Ren'e Govaerts (KUL, Leuven)
Emile Peeters (CEC, Brussels)
Jean Ramaekers (FUN, Namur)
Bart Preneel (Local arrangement)
Program committee
Jean-Jacques Quisquater (Program chairman)
Paul Camion (INRIA, Rocquencourt)
Yvo Desmedt (UW, Milwaukee)
Louis Guillou (CCETT, Rennes)
Johan H\astad (RIT, Stockholm)
Lloren\c Huguet (UAB, Barcelona)
Wyn Price (NPL, Teddington)
Rainer Rueppel (Crypto AG, Steinhausen)
Johan van Tilburg (PTT-DNL, Leidschendam)
SUBJECT
The conference deals with all aspects of the theory and the application of
cryptography including symmetric and asymmetric ciphers, authentication,
protocols, secure transactions, signatures, sequences and linear complexity,
hardware and software topics, security of telecommunication systems and computer
networks. The program includes a rump session and a session on open problems.
The proceedings of the workshop will be published by Springer Verlag in the
Lecture Notes in Computer Science series.
LOCATION
The meeting will be held in the calm, spacious and relaxing atmosphere of the
Conference Centre Hengelhoef, 80 km east of Brussels.
(address : Domein Hengelhoef, Hengelhoefdreef 1, B-3530 Houthalen-Helchteren,
telephone : +32-11-38 01 16, telex : 39 345 hengel)
The Centre is situated in the heart of Limburg, in the midst of a large park
with woods and ponds. It offers a wide range of sports accomodations. Further
details about tourist information will be mailed with the confirmation of your
registration.
ACCOMODATIONS
Conference attendees and accompanying persons will be accomodated in
200 studio-apartments grouped around the congress building. These
studio-apartments are completely equipped, a sitting-room, a kitchenette, toilet
and shower, a private terrace, and sleeping facilities with one or two beds.
The price for a single/double room and breakfast will be 4,000/3,000 Bfr.
(1 US$ = +/- 37 Bfr). Reservations can be extended before and after the
conference.
TRANSPORTATION
Houthalen is only 80 kilometers away from Brussels airport. A bus service will
be provided just before and after the conference. It is also possible to take
the train via Brussels to Hasselt. The Centre is served by a bus service from
Hasselt. Finally, if you are arriving by car, the Centre is near to the exit
30 ``Park Midden Limburg'' of the E 314 freeway. Further details will be
provided with the confirmation of your registration.
CONFERENCE EVENTS
The conference starts on Monday, April 10th with lunch and ends on Thursday,
April 13th early afternoon. Social activities, including a reception, a rump
session and a banquet are planned for the evenings. A short visit to the Bokrij
open air museum is scheduled on Monday late afternoon. There will be an IACR
Business meeting on Thursday morning.
CLIMATE
Although weather during April can be cool, (10 - 15 degree Celsius) with a good
chance on rain, sunny - and warmer - days are quite likely.
REGISTRATION !!!!!!!! DEADLINE : MARCH 15, 1989 !!!!!!!!
The workshop fee is 12,000 Bfr. This fee includes four lunches, coffee breaks,
the Monday evening aperitif and dinner, Tuesday evening rump session and dinner,
Wednesday evening banquet and the dues to the International Association for
Cryptologic Research (IACR). These later dues entitle you to become a member of
the IACR for 1990 without any additional payment and to receive the IACR's
Journal of Cryptology, published by Springer Verlag, free of charges during
that year. The workshop fee must be paid upon registration, which should be
performed before March 15, 1989. There will be no registration at the door.
A reduced workshop fee of 8,000 Bfr. is offered to full time students,
undergraduate or graduate, if their registration form is accompanied by a
certification of their student status.
The fee for accompanying persons is 10,500/9,500 Bfr. for a single/double room.
It includes Room and Board and all social activities (visit, banquet, ... ).
REGISTRATION FORM
deadline : March 15, 1989
NAME AND ADDRESS Sex : 0 M 0 F
Title : _____ First Name : ____________________ Surname : ____________________
Affiliation : ________________________________________________________________
Street : _____________________________________________________________________
Zip : ____________ City : _______________________ Country : __________________
Phone : __________________ Fax : __________________ Email : __________________
IACR MEMBERSHIP FOR 1990 (no additional payment) 0 yes 0 no
HOTEL RESERVATION
Number of accompanying persons : _______
Reservation of _______ single room(s) (assigned according to registration date)
Reservation of _______ double room(s) preferred roommate : ____________________
Date of arrival : April ____________ Date of departure : April _____________
TRANSPORTATION
I would like to use the special bus
0 no 0 yes and I expect to arrive at ___________ and to leave at ___________
EXCURSION
0 I intend to join the guided tour (+/- 1 hour) at the Bokrijk open air museum
(in the price included) and will be accompanied by _____ persons.
PAYMENT
Workshop fee+Lunch+Dinner (12,000 Bfr. / 8,000 Bfr. for students) ________ Bfr.
Room + Breakfast (4,000/3,000 Bfr. single/double) ________ Bfr.
Accompanying person(s) (10,500/9,500 Bfr. single/double) ________ Bfr.
After deadline registration penalty (2,000 Bfr.) ________ Bfr.
Total Amount ________ Bfr.
US citizens can pay in US$ (28 $ = 1000 Bfr) ________ US$
0 I enclose a check payable to EUROCRYPT-'89-IACR
0 I have transferred the money to Generale Bank of Belgium
EUROCRYPT-'89-IACR 230-0477050-24
Please mention your name on the check or on the money transfer in order to avoid
anonymous payments.
Date : ______________ Signature:
Please send this form or a facsimile to :
ir. Bart Preneel Phone : +32-16-220931
ESAT Katholieke Universiteit Leuven Telex : 25941 elekul
Kard. Mercierlaan, 94 Fax : +32-16-221855
B-3030 Heverlee Email : eurocrypt@kulesat.uucp
Belgium
Remarks :
∂16-Jan-89 1503 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Solving BITMAP Rotation in place
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 16 Jan 89 15:03:19 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA13712; Mon, 16 Jan 89 15:02:32 PDT
Message-Id: <8901162302.AA13712@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Mon, 16 Jan 89 15:00:39 PST
Received: by BYUADMIN (Mailer R2.01A) id 7910; Mon, 16 Jan 89 14:05:23 MST
Date: Mon, 16 Jan 89 10:54:03 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Steve <ganelon.usc.edu!robiner%OBERON.USC.EDU@Forsythe.Stanford.EDU>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Steve <ganelon.usc.edu!robiner%OBERON.USC.EDU@Forsythe.Stanford.EDU>
Subject: Solving BITMAP Rotation in place
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
Here is the situation: I need to rotate an M x N array in place
with little additional memory. I have perhaps 4M buffer space,
but I'd like to be able to do it with no extra memory if possible.
For M=N, ie a sqaure the problem is easy, mearly swap the elements with
the ones at their new, rotated loacation, ie 1,1 gets swaped with 1,M,
etc.
The problem arrises for any non-square array: the elements do
not get swaped, but rather, there is a cycle of replacements,
eventually leading back to the original element. For example, if we start
with element number 1,1 its new location might be 1,35 but 1,35's new
location is not necessarily 1,1; it may be 23,78 or something completely
different. So when the cycle is finished, some of the elements are now in
their correctly rotated positions, but there is no way of telling which ones
have already been done, and which ones haven't.
So basically, I'd like to know if there's a simple algorithm to acomplish
this 90 degree rotation for any M by N array with as little additional memory
as possible.
To help out, here's a formula which gives the vector for a linear array
representing the 2D array.
v=IM+J
v is the vector, I is the element across, J is the element down.
M is the width of the array.
the rotated formula is:
vr=JN+N-1-I
M is not needed here, just the array height, N.
PLEASE SEND ME E-MAIL RESPONSES, I DO NOT REGULARLY READ THESE BOARDS.
I WILL POST RESULTS IF THERE IS INTEREST.
Thanks in advance,
=Steve= robiner@ganelon.usc.edu robiner@usc-ganelon.edu
------------------------------------------------------------------------
Date: 15 Jan 89 21:14:41 GMT
From: Krulwich-Bruce@yale-bulldog.arpa (Bruce Krulwich)
Organization: Computer Science, Yale University, New Haven, CT 06520-2158
Subject: Re: Solving BITMAP Rotation in place
Message-Id: <47555@yale-celray.yale.UUCP>
References: <14687@oberon.USC.EDU>
In article <14687@oberon.USC.EDU>, robiner@ganelon (Steve) writes:
>Here is the situation: I need to rotate an M x N array in place
>with little additional memory. I have perhaps 4M buffer space,
>but I'd like to be able to do it with no extra memory if possible.
I am assuming that you want to rotate a matrix 90 degrees counter-clockwise,
which is what I gather from your discussion below. The formulas you give
below are for storing a matrix in column-major form in a vector. I interpret
this to be referring to switching elements in-place in the vector
representation and then interpreting it as a matrix of the appropriate new
size.
>For M=N, ie a sqaure the problem is easy, mearly swap the elements with
>the ones at their new, rotated loacation, ie 1,1 gets swaped with 1,M,
>etc.
I don't think that this is correct. Why are the changes for a square matrix
swaps?? For example, for a 2x2 matrix, the 1,1 element goes to 1,2 and the
1,2 element goes to 2,2, etc. In particular, applying the formulas below to
the representation of a 2x2 matrix do not result in all elements being
swapped:
1 2 => 1 3 2 4
3 4
2 4 => 2 1 4 3
1 3
>The problem arrises for any non-square array: the elements do
>not get swaped, but rather, there is a cycle of replacements,
>eventually leading back to the original element. For example, if we start
>with element number 1,1 its new location might be 1,35 but 1,35's new
>location is not necessarily 1,1; it may be 23,78 or something completely
>different. So when the cycle is finished, some of the elements are now in
>their correctly rotated positions, but there is no way of telling which ones
>have already been done, and which ones haven't.
As I said above, I think that this is the case for all matricies, not just
non-square ones.
>So basically, I'd like to know if there's a simple algorithm to acomplish
>this 90 degree rotation for any M by N array with as little additional memory
>as possible.
>
>To help out, here's a formula which gives the vector for a linear array
>representing the 2D array.
>
>v=IM+J
>
>v is the vector, I is the element across, J is the element down.
>M is the width of the array.
I think that this is nonstandard notation. Don't I and J usually refer to row
and column, respectively?? In any case...
>the rotated formula is:
>
>vr=JN+N-1-I
>
>M is not needed here, just the array height, N.
This seems easy. from V=IM+J you get:
I = V mod M
J = floor(V / M)
and thus
VR(V) = (V mod M) * N + N - 1 - floor(V / M)
Thus in the rotation, the element in V (for all V) should be moved to VR(V).
This is simply a permutation of the elements of the matrix. An example is
the rotation:
1 2 3 (M = 2, N = 3)
4 5 6
which is represented as:
1 4 2 5 3 6
which (applying the rotation formulas you give) becomes:
3 2 1 6 5 4
which represents the (correct) matrix:
3 6
2 5
1 4
The permutation of the representation vector (shown in standard "cycle
notation") is:
(0 2 1 5 3 4)
The important thing to see is that this permutation is subcycle-free. This
means that it can be made with a constant amount of extra memory, by starting
at V=0 and doing the permutation from V to VR(V), setting V to VR(V) after
each move, and looping until VR(V)=0. If the permutation was not
subcycle-free you would need memory to store the permutation itself, or
(equivalently) to mark which elements of the matrix had been forwarded.
You could tell if a permutation is not subcycle-free by incrementing a counter
each time through the loop and checking at the end if it is equal to M*N.
I have found that a 2x2 matrix rotation is also subcycle-free. If you can
show (theoretically or emprically) that rotation permutations are always
subcycle-free, you have proven that rotations can always be done with constant
extra memory as I described.
Bruce Krulwich
krulwich@cs.yale.edu
∂16-Jan-89 1602 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu ASL logic meeting at UCLA
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 16 Jan 89 16:02:12 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA16864; Mon, 16 Jan 89 16:01:35 PDT
Message-Id: <8901170001.AA16864@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Mon, 16 Jan 89 16:00:38 PST
Received: by BYUADMIN (Mailer R2.01A) id 8413; Mon, 16 Jan 89 14:26:45 MST
Date: Mon, 16 Jan 89 10:38:16 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
math.ucla.edu!hbe%CS.UCLA.EDU@Forsythe.Stanford.EDU
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: math.ucla.edu!hbe%CS.UCLA.EDU@Forsythe.Stanford.EDU
Subject: ASL logic meeting at UCLA
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
ASSOCIATION FOR SYMBOLIC LOGIC
Annual Meeting
University of California, Los Angeles
January 14-17, 1989
All invited lectures will take place in the Mathematical Sciences (MS)
Building room MS 4000A except those on Tuesday, January 17, which will
be in the Factor Auditorium. Coffee and tea will be served in the
Mathematics Department lounge, MS 6620, where the registration table
is locatied. Book displays will be in MS 6943.
Saturday, January 14
Afternoon Session
1:30-2:20 Theodore Slaman: Higher recursion theory: the next generation.
2:30-2:50 Tea
3:00-3:50 Edward L. Keenan: Some results on generalized quantifiers in
natural language.
4:00-5:25 Sessions for contributed papers, MS 5117 and MS 5118; see
listing below.
5:30-7:00 Informal get-together in the lounge, MS 6620.
7:00-10:00 Council meeting and dinner, room to be announced.
Sunday, January 15
Morning Session
8:10-9:20 Sessions for contributed papers, MS 5117 and 5118; see
listing below.
9:30-10:20 Matt Foreman: The current cardinality of the continuum.
10:30-10:50 Coffee
11:00-11:50 Alistair Lachlan: Monadic stability.
Afternoon Session
2:00-2:50 Penelope Maddy: Contemporary Platonism.
3:00-3:20 Tea
3:30-5:30 Michael Beeson, John Mitchell, and Andre Scedrov: A Symposium
on Type Theory.
8:00-12:00 Party at "the Penthouse," Boelter Hall room BH 8500.
Monday, January 16
Morning Session
8:10-9:20 Sessions for contributed papers, MS 5117 and MS 5118; see
listing below.
9:30-10:20 Richard Cartwright: Speaking for everything: unrestricted
quantification.
10:30-10:50 Coffee
11:00-11:50 Ronald Fagin: Reachability is harder for directed than for
undirected finite graphs.
Afternoon Session
2:00-2:50 John Steel: Determinacy, large cardinals, and inner models.
3:00-3:20 Tea
3:30-4:20 Neil Immerman: Logic and complexity.
4:30-6:10 Sessions for contributed papers, MS 5117 and 5118; see
listing below.
8:30-11:00 Council meeting, MS 6943.
Tuesday, January 17
Morning Session
8:10-9:20 Sessions for contributed papers, Ackerman 2048 & Kerckhoff 400;
see listing below.
9:30-10:20 Manuel Lerman: 0(n) priority arguments and sequences of
trees and strategies.
10:30-10:50 Coffee (Factor Auditorium lobby)
11:00-11:50 Angus Macintyre: Transfer principles: the analogy between
numbers and functions.
CONTRIBUTED PAPERS
Saturday, January 14
Afternoon Session
Room MS 5117
4:00-4:20 S. S. Goncharov: Unique positive numerations.
4:25-4:45 Antonin Kucera: Diagonally non-recursive functions.
4:50-5:10 Kyriakos Kontostathis: Category and the finite injury
priority argument.
5:15-5:25 Robert Lubarsky: Gamma-recursion theory.
Room MS 5118
4:00-4:20 Gian Arturo Marco: Logical problems about compositionality
and information.
4:25-4:45 Leona Fass: Remarks on inductive inference and testing.
4:50-5:10 Peter Gabrovsky: Connecting higher-order logic with
generalized recursion theory.
5:15-5:25 Raymond D. Gumb: Free arithmetic.
Sunday, January 15
Morning Session
Room MS 5117
8:10-8:30 Robert C. Reed: Decidable theories with finitely many models
some of which are hyperarithmetic.
8:35-8:55 Sarah E. Oates: Jump degrees of groups.
9:00-9:20 Xiaokang Yu: Integration in subsystems of second order
arithmetic.
Room MS 5118
8:10-8:30 Frank J. Wroblewski: Quine's semantics reduced to trivalent
logic, type-freed and extended to algebra with AC.
8:35-8:55 Trip McCrosin: Identity and relational properties.
9:00-9:20 Hugues Leblanc and Peter Roeper: Of probability functions and
Boolean algebras.
Monday, January 16
Morning Session
Room MS 5117
8:10-8:30 Ali Enayat: Counting countable well-founded models of set
theory.
8:35-8:55 Kenneth Manders: Model completeness and the classical
geometries.
9:00-9:20 George Weaver: A downward Skolem-Lowenheim theorem for
elementary extensions.
Room MS 5118
8:10-8:30 James Hook and Garrel Pottinger: Natural L-systems.
8:35-8:55 Jonathan P. Seldin: On the proof theory of Coquand's calculus
of constructions.
9:00-9:20 William M. Farmer, John D. Ramsdell, and Ronald J. Watro: A
correctness proof for combinator reduction with cycles.
Afternoon Session
Room MS 5117
4:30-4:50 Tapani Hyttinen: Games and languages.
4:55-5:10 Yechiel Kimchi: Reflecting measurables and partition relations.
5:15-5:35 John C. Simms: Another characterization of alephs.
5:40-6:10 Donald H. Pelletier: Strong normality and the disjointing
property for ideals on P(kappa, lambda).
Room MS 5118
4:30-4:50 Douglas Cenzer and Jeffrey Remmel: Polynomial-time complexity
of models.
4:55-5:10 Judy Goldsmith, Deborah Joseph, and Paul Young: A note on
bi-immunity and p-closeness of p-cheatable sets in P/POLY.
5:15-5:35 Alasdair Urquhart: Complexity of decision problems in relevance
logic.
5:40-6:10 Daniel Leivant: Abstraction and computational complexity.
Tuesday, January 17
Morning Session
Ackerman 2048
8:10-8:30 Jan Krajicek: Two theorems on bounded arithmetic.
8:35-8:55 Peter B. Ladkin and Roger D. Maddux: The algebra of Boolean
constraint satisfaction.
9:00-9:20 Gregory L. McColm: Automata and one-dimensional inductions.
Kerckhoff 400
8:10-8:30 Robert Tieszen: Intuitionism with intuition.
8:35-8:55 Wim Ruitenburg: Inequality in constructive mathematics.
9:00-9:20 Philip Scowcroft: A new model for intuitionistic analysis.
Papers contributed by title:
Zbigniew A. Nowacki: Ultraproduct theorem for higher order logic.
∂16-Jan-89 1606 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Call for Participation
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 16 Jan 89 16:06:07 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA17021; Mon, 16 Jan 89 16:05:27 PDT
Message-Id: <8901170005.AA17021@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Mon, 16 Jan 89 16:02:33 PST
Received: by BYUADMIN (Mailer R2.01A) id 9088; Mon, 16 Jan 89 15:05:22 MST
Date: Mon, 16 Jan 89 10:41:49 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
clayton%MORGUL.PSC.EDU@Forsythe.Stanford.EDU
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: clayton%MORGUL.PSC.EDU@Forsythe.Stanford.EDU
Subject: Call for Participation
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
S U P E R C O M P U T I N G ' 89
C A L L F O R P A R T I C I P A T I O N
Supercomputing '89 continues the tradition established at the '88 Conference
and will bring together supercomputing system researchers, designers, managers,
and computational scientists and engineers to report advances and experiences,
state needs, suggest future directions and exchange information. It will
include a technical program of invited and contributed papers, tutorials,
poster sessions, vendor and research exhibits, and product briefings and
demonstrations.
NOVEMBER 13-17, 1989
RENO/SPARKS CONVENTION CENTER
RENO, NEVADA
Sponsored by: ACM SIGARCH and Computer Society of the IEEE
In cooperation with: Argonne National Laboratory, Lawrence Livermore National
Laboratory, Los Alamos National Laboratory, NASA Ames Research Center, National
Center for Atmospheric Research, National Science Foundation, SIAM Activity
Group on Supercomputing, and the Supercomputing Research Center
Topics of Interest
Examples include, but are not limited to, the following:
computational science and engineering applications, parallel
and distributed processing, the impact of new technology on the
future of supercomputing, supercomputing environment, high
performance architectures, supercomputing systems evaluation,
systems software and languages, supercomputing management
issues, technical aspects of products, user experiences.
Papers Authors are invited to submit papers which report concrete
results and experiences. Papers reporting important negative
results are also encouraged. Referee's selection criteria will
include originality, clarity, and relevance.
Requirements
Papers must be original material not previously published.
Papers must be submitted without conditions; authors must
obtain any necessary approvals and/or clearances prior to
submission. Copyright release will be required. Authors of
accepted papers will be responsible for retyping corrected
papers on special forms to be provided and for preparing visual
material for their presentations using guidelines to be
provided. Camera-ready copy is due August 15, 1989.
Instructions
Submit five copies to the Program Chairperson by May 1, 1989.
Papers must be in English, typed double-spaced, and not exceed
25 pages (about 5,000 words). Papers must have: a title page
that lists the name, mailing and electronic address, and
telephone number for each author, an abstract, keywords and the
presentation media requirements. For multiple author papers,
identify the corresponding author and the presenting author.
Posters Authors who prefer an informal environment that fosters
interaction with the conference attendees are encouraged to
submit poster proposals. A book of abstracts of poster
presentations will be available at the conference.
Requirements
concise statement of the problem and the results should be a
conspicuous part of the display. Authors will be expected to
make themselves available to the audience for approximately two
hours, during which time they explain their work and discuss it
in depth. Authors of accepted posters will be responsible for
supplying a camera-ready abstract (not to exceed 100 words) by
August 15, 1989.
Instructions
Submit five copies of the poster proposal to the Program
Chairperson by June 1, 1989. The proposal should not exceed
five pages (about 1,000 words). Other aspects of the proposal
should conform to the instructions for submission of papers, as
listed above.
Vendor Exhibits An opportunity exists for vendors to exhibit their
supercomputing technology during three days of Supercomputing
'89. Interested parties should contact the Exhibits
Chairperson as soon as possible to arrange for floor space.
Research Exhibits
A limited amount of space will be set aside at Supercomputing
'89 to allow researchers to set up and exhibit or demonstrate
their work. Research exhibits will provide a joint
opportunity--an opportunity for the researcher to demonstrate
his or her work to a broader audience of potentially interested
users and an opportunity for the conference attendees to see a
broad range ofsupercomputing-oriented research which represents
some of the important technical directions of the future. The
possibility exists that, by special arrangement, research
exhibitors may be able to make use of equipment on display at
the vendor exhibit.)
Requirements
Research exhibitors should provide a description of their
exhibit/demonstration including: the type of audience
expected; required facilities; organizational affiliation of
exhibitors and acknowledgement of research sponsors;
acknowledgement of responsibility for (a) staffing the exhibit
during conference hours (unless the exhibit is totally static
and self-explanatory) and (b) transportation of the exhibit to
and from the conference, as well as all expenses associated
with setup and teardown.
Instructions
Submit a brief proposal to the Exhibits Chairperson as soon as
possible, but not later than March 31, 1989.
Tutorials The traditional half-day or full-day lecture style presentation
with view-graphs distributed to attendees.
Instructions
Submit proposal by February 28, 1989 to Tutorials
Chairperson.Include a succinct description of intended
audience, abstract and lecture outline with view-graphs (if not
yet available, state when will be available), and vita with
three references who are familiar with your lecturing ability.
Extended Tutorials
Provide an opportunity for a mini-course introduction to a
topic. The course begins before the conference with advanced
mailing of course material. The organizer will receive a list
of attendees and their biographies ahead of time and have an
opportunity to "tune" the course to their needs. This is
intended to be a long day of intense learning and
ex↔plo↔ra↔tion.
Instructions
Submit proposal by February 28, 1989 to Tutorials Chairperson.
Include succinct course objectives, targeted participants
characteristics, references to be distributed, vita and related
teaching experience of organizer.
Workshops Workshops are of the "birds-of-a-feather" variety, where
registrants participate in an interactive workshop environment.
The organizer is a participant/facilitator rather than a
lecturer.
Instructions
Submit proposal by April 30, 1989 to Tutorials Chairperson.
Include a sampling of co-workers in their field, suggestions
for invitees, organizers, contributions/role in the field and
vita.
Committee Chairpersons:
General Chairperson
F. Ron Bailey
Mail Stop 258-5
NASA Ames Research Center
Moffett Field, CA 94035
415/694-4500
rbailey@prandtl.nas.nasa.go
Program Chairperson
Gary Johnson
San Diego Supercomputer Center
P. O. Box 85608
San Diego, CA 92138
619/534-5181
garyj@sds.sdsc.edu
Tutorials Chairperson
John Riganati
Supercomputing Research Center
4380 Forbes Boulevard
Lanham, MD 20706
301/731-3741
riganati%super.org@sh.cs.net
Exhibits Chairperson
Howard Johnson
15694 East Chenango
Aurora, CO 80015
303/693-8291
howardj%csugreen.bitnet
@cunyvm.cuny.edu
Registration Chairperson
Lyz Dunham
Mail Stop 258-6
NASA Ames Research Center
Moffett Field, CA 94035
415/694-4370
dunham@prandtl.nas.nasa.go
Finance Chairperson
Ray L. Elliott
P. O. Box 1663
Los Alamos, NM 87545
505/667-1449
rle%a@lanl.go
Publications Chairperson
Lt. Col. C. Edward Oliver
Chief Scientist
Air Force Weapons Laboratory
Kirtland AFB, NM 87117-6008
505/844-9856
oliver@lbl-csam.arpa
Publicity Chairperson
Beverly C. Clayton
Pittsburgh Supercomputing Center
4400 Fifth Avenue
Pittsburgh, PA 15213
412/268-4960
clayton@morgul.psc.edu
∂17-Jan-89 0933 @Score.Stanford.EDU:goldberg@polya.Stanford.EDU Re: More on the TV question
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 17 Jan 89 09:33:19 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Tue 17 Jan 89 09:30:26-PST
Received: by polya.Stanford.EDU (5.59/25-eef) id AA11770; Tue, 17 Jan 89 09:31:15 PDT
Date: Tue 17 Jan 89 09:31:14-PST
From: Andrew V. Goldberg <GOLDBERG@Polya.Stanford.EDU>
Subject: Re: More on the TV question
To: allison@shasta.stanford.edu
Cc: faculty@score.stanford.edu
Message-Id: <601061474.0.GOLDBERG@Polya.Stanford.EDU>
In-Reply-To: <8901140805.AA24384@polya.Stanford.EDU>
Mail-System-Version: <VAX-MM(229)+TOPSLIB(128)@Polya.Stanford.EDU>
What is the purpose of the TV program? It seems that it is to raise money.
In this case, how about some adds?
--Andy
-------
∂17-Jan-89 1129 @Score.Stanford.EDU:bhayes@polya.Stanford.EDU Re: Occasional summaries of student opinion
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 17 Jan 89 11:29:22 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Tue 17 Jan 89 11:26:25-PST
Received: from LOCALHOST by polya.Stanford.EDU (5.59/25-eef) id AA18375; Tue, 17 Jan 89 11:27:13 PDT
Message-Id: <8901171927.AA18375@polya.Stanford.EDU>
To: Vaughan Pratt <coraki!pratt@Sun.COM>
Cc: faculty@score.stanford.edu, csd-bboard@polya.Stanford.EDU
Subject: Re: Occasional summaries of student opinion
In-Reply-To: Your message of Sun, 15 Jan 89 11:28:28 -0800.
<8901151928.AA24919@>
Date: Tue, 17 Jan 89 11:27:10 -0800
From: bhayes@polya.Stanford.EDU
Vaughn says...
>I for one would appreciate seeing on this mailing list an occasional
>summary of recent trends in student opinion. How about if the student
>bureaucrats take on the responsibility for this? An appropriate
>startup strategy would be for them to do it themselves in the beginning
>to debug the process, then delegate the work if it gets too
>burdensome.
I sez-
No. The students do not seem to be hiding their opinions. Those
faculty who are truly interested can talk with students or read any of
the bboards set up for the purpose of communication. I do not feel
that being "responsible for communication" is any more a student job
than a faculty job. [Perhaps you would like to volunteer?]
Students are posting messages about the TV lectures in csd.bboard. Not
as many as the faculty seem to be posting, perhaps four or five
messages, and some of them are valuable. I would think that if the
faculty were interested in student opinion they would talk with the
students. I would very much like to hear from any faculty member who
has asked a student how he or she feels about TV classes.
Sorry about grandstanding, Vaughn. Your letter just provided a good
starting point.
∂17-Jan-89 1444 misha@polya.Stanford.EDU Next AFLB
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 17 Jan 89 14:44:28 PST
Received: by polya.Stanford.EDU (5.59/25-eef) id AA02171; Tue, 17 Jan 89 14:42:38 PDT
Date: Tue, 17 Jan 89 14:42:38 PDT
From: Michael Kharitonov <misha@polya.Stanford.EDU>
Message-Id: <8901172242.AA02171@polya.Stanford.EDU>
To: aflb-all@polya.Stanford.EDU
Subject: Next AFLB
Please note UNUSAL time and place: next week there will be two AFLB sessions:
David Shmoys from MIT will speak on Tuesday at 4:15 in room 301 and Eva Tardos
from MIT will speak at the regular session on Thursday at 12:30 in room 352.
This week's talk will be by Bernd Sturmfels on Thursday, January 19, 12.30 pm,
in room 352:
RECENT APPLICATIONS OF GROBNER BASES THEORY
B.cBuchberger's Gr\"obner bases theory provides both
a theoretical framework and practical algorithms for large class
of computational problems in algebraic geometry.
Moreover, implementations of the basic algorithms are
now available in many computer algebra systems
(e.g. MAPLE, MACSYMA, SCRATCHPAD, REDUCE, ...).
After a brief introduction to Gr\"obner bases
``from a user's point of view'', we will discuss recent
applications of these methods to problems in the following areas:
Computational invariant theory
Inverse kinematics in robot programming
Determinantal ideals and algebraic combinatorics
Algorithmic versions of the Quillen-Suslin theorem
----------------------------------------------------------
Also on Friday, January 20, at 3:15 pm Dr. Sturmfels will give a talk in
the Math department:
SEMI-ALGEBRAIC GEOMETRY OF ORIENTED MATROIDS
∂17-Jan-89 1605 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu yet another bibliography request: logic programming
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 17 Jan 89 16:05:24 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA07437; Tue, 17 Jan 89 16:04:35 PDT
Message-Id: <8901180004.AA07437@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Tue, 17 Jan 89 16:03:41 PST
Received: by BYUADMIN (Mailer R2.01A) id 7456; Tue, 17 Jan 89 17:02:07 MST
Date: Tue, 17 Jan 89 16:50:49 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Steve Stevenson <steve@HUBCAP.CLEMSON.EDU>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Steve Stevenson <steve@HUBCAP.CLEMSON.EDU>
Subject: yet another bibliography request: logic programming
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
[ I'm back on the bibliography kick again ---- :-) ]
I am trying to compile a bibliography on the history, development, and
``state of the art'' of logic programming ( NOT just prolog). I am
interested primarily in the foundational and implementation issues ( again
not restricted to prolog). Here, foundational means semantics, ties
to logic, etc.
Please send your nominees for inclusion directly to
``steve@hubcap.clemson.edu''. If you have things in either BibTeX or
refer format, please leave them in that format (it's easier to work with).
I'll put it all in a common (refer) format and distribute to whoever is
interested.
Thanks
Steve
Steve (really "D. E.") Stevenson steve@hubcap.clemson.edu
Department of Computer Science, (803)656-5880.mabell
Clemson University, Clemson, SC 29634-1906
∂17-Jan-89 1629 @polya.Stanford.EDU:DEK@SAIL.Stanford.EDU Wednesday not Friday
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 17 Jan 89 16:29:41 PST
Received: from Sail.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA09627; Tue, 17 Jan 89 16:28:05 PDT
Message-Id: <10btJU@SAIL.Stanford.EDU>
Date: 17 Jan 89 1624 PST
From: Don Knuth <DEK@SAIL.Stanford.EDU>
Subject: Wednesday not Friday
To: aflb-all@Polya.Stanford.EDU
Correction: Bernd Sturmfels will speak about oriented matroids
TOMORROW, Wednesday, at 3:15 in the math building. (See the
announcement posted in the math elevator. There are refreshments
starting at 2:30.) On Friday afternoon there's a special lecture
by Michael Atiyah. Lots of good stuff this week and next week and
all quarter!
∂17-Jan-89 1748 @Score.Stanford.EDU:nilsson@Tenaya.stanford.edu dismay
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 17 Jan 89 17:48:16 PST
Received: from Tenaya.stanford.edu by SCORE.STANFORD.EDU with TCP; Tue 17 Jan 89 17:45:51-PST
Received: by Tenaya.stanford.edu (5.59/25-eef) id AA04857; Tue, 17 Jan 89 17:45:24 PDT
Date: Tue, 17 Jan 89 17:45:24 PDT
From: Nils Nilsson <nilsson@Tenaya.stanford.edu>
Message-Id: <8901180145.AA04857@Tenaya.stanford.edu>
To: faculty@score
Subject: dismay
I must confess to being somewhat disappointed at the essentially zero
faculty turnout at the Departmental Colloquium this afternoon.
I had thought that the faculty wanted us to restart the colloq series,
especially if we did it biweekly instead of weekly, got more prominent
speakers, and held it closer to MJH and not at Terman. To be sure,
everyone is very busy, and we don't need more random things to occupy
our time---but I was working under the assumption that the colloq was
something we wanted to attend. We did have several students turn out,
and it may be worthwhile to have a "departmental colloquium" even
though only students attend. I would like to hear if people think
something went wrong in planning this series, if there are
circumstances (still unmet) under which people would want to go to a
departmental colloquium, and/or if people think that today's faculty
disinterest was for some reason non-typical.
-Nils
∂17-Jan-89 1840 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Re: Urgent: announcement of panel on funding
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 17 Jan 89 18:40:49 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA18720; Tue, 17 Jan 89 18:40:05 PDT
Message-Id: <8901180240.AA18720@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Tue, 17 Jan 89 18:39:13 PST
Received: by BYUADMIN (Mailer R2.01A) id 0528; Tue, 17 Jan 89 19:38:34 MST
Date: Tue, 17 Jan 89 21:27:27 EST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Joseph Traub <traub@CS.COLUMBIA.EDU>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
From: Joseph Traub <traub@CS.COLUMBIA.EDU>
Subject: Re: Urgent: announcement of panel on funding
Comments: To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@CUVMB.CC.columbia.edu>,
simons@IBM.COM
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
In-Reply-To: Your message of Tue, 10 Jan 89 15:47:40 PST
Barbara: Thats quite a panel you've put together. I'm delighted to see your
interest in science policy.
I chair the Computer Science and Technology board of the National Academies
of Science and Engineering. We do studies on computer issues of national
importance. If ou'll send me your snailmail address I'll send you a couple of
our studies. Studies and workshops in progress include Computer Security,
Intellectual Property Protection, Competitiveness, and Software.
Incidentally, one of our studies deals with funding issues although we are
intentionally soft on the numbers. Joe
∂18-Jan-89 0049 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Prosser & Winkel : A joke or what....???
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 18 Jan 89 00:49:45 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Wed 18 Jan 89 00:47:16-PST
Message-ID: <LbPyE@SAIL.Stanford.EDU>
Date: 18 Jan 89 0048 PST
From: Arthur Keller <ARK@SAIL.Stanford.EDU>
Subject: Prosser & Winkel : A joke or what....???
To: faculty@SCORE.STANFORD.EDU
∂16-Jan-89 1905 @Score.Stanford.EDU,@polya.Stanford.EDU:postmaster@score.stanford.edu Prosser & Winkel : A joke or what....???
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 16 Jan 89 19:05:32 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Mon 16 Jan 89 19:04:04-PST
Received: by polya.Stanford.EDU (5.59/25-eef) id AA23229; Mon, 16 Jan 89 19:05:00 PDT
Date: 17 Jan 89 03:04:53 GMT
From: arul@polya.Stanford.EDU (Arul A. Menezes)
Organization: Stanford University
Subject: Prosser & Winkel : A joke or what....???
Message-Id: <6152@polya.Stanford.EDU>
Sender: postmaster@score.stanford.edu
To: csd@score.stanford.edu
"Perhaps we can sum up good design philosophy in a single phrase:
common courtesy. Consider the users and maintainers of your
system, and ask yourself what they will need in order to deal
efficiently with your creation. Let courtesy be your guide."
-The Art of Digital Design
Prosser and Winkel
Chapter 5
So what does that one solitary chapter in a 50 buck book
tell us anyway?? Maybe a few books on etiquette should have been
included in tha reading list. Those books mama used to teach us
table-manners out of.....
There is something distinctly brain-damaged about the
entire comp. process.
arul
∂18-Jan-89 0054 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Re: SITN
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 18 Jan 89 00:54:24 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Wed 18 Jan 89 00:47:39-PST
Message-ID: <LbPya@SAIL.Stanford.EDU>
Date: 18 Jan 89 0048 PST
From: Arthur Keller <ARK@SAIL.Stanford.EDU>
Subject: Re: SITN
To: faculty@SCORE.STANFORD.EDU
∂17-Jan-89 1125 @Score.Stanford.EDU,@polya.Stanford.EDU:postmaster@score.stanford.edu Re: SITN
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 17 Jan 89 11:24:50 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Tue 17 Jan 89 11:23:15-PST
Received: by polya.Stanford.EDU (5.59/25-eef) id AA18114; Tue, 17 Jan 89 11:24:10 PDT
Date: 17 Jan 89 19:23:57 GMT
From: jacobs@polya.Stanford.EDU (Joseph Jacobs)
Organization: Stanford University
Subject: Re: SITN
Message-Id: <6158@polya.Stanford.EDU>
References: <10$ti7@SAIL.Stanford.EDU>, <8901162032.AA04335@arisia.Xerox.COM>
Sender: postmaster@score.stanford.edu
To: csd@score.stanford.edu
I won't argue the claim that professors may know more about what sorts
of teaching methods are generally more effective, but I will argue
that different methods have different effects for different people.
Some people learn well by reading the material from a book. Others
have to have a visual/vocal presentation of the material before
anything sticks--it doesn't matter how many times they read the book.
Surely, there is an analagous situation here. Some people will learn
better live; for some people it won't make any difference; for others
they will learn better watching the tape because they can stop and
re-play something or re-view the entire presentation. If the various
methods are all available, then the student can choose the one which
is the most effective for him.
Having come from an undergraduate school which had nothing of
this sort, the televised approach was completely new to me. I liked
it immediately because the instructor could use pad and pen rather
than a chalkboard. The writing was in general more legible, faster,
equally visible from throughout the room, and could be prepared ahead
of time. I developed an immediate dislike for having to take classes
in Terman Auditorium because the instructor either tried to use a pad
at the podium (inappropriate because of facilities) or had to use the
chalkboard. Admittedly, there have been times in courses when I was
frustrated by the camera people focusing on the wrong thing or by an
instructor who flies through prepared slides a little too fast, but I
like this approach much more than a straight classroom/chalkboard
approach.
Joseph
∂18-Jan-89 0100 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Re: broadcasting classes
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 18 Jan 89 01:00:17 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Wed 18 Jan 89 00:47:49-PST
Message-ID: <LbPyk@SAIL.Stanford.EDU>
Date: 18 Jan 89 0048 PST
From: Arthur Keller <ARK@SAIL.Stanford.EDU>
Subject: Re: broadcasting classes
To: faculty@SCORE.STANFORD.EDU
∂17-Jan-89 1204 @Score.Stanford.EDU,@polya.Stanford.EDU:postmaster@score.stanford.edu Re: broadcasting classes
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 17 Jan 89 12:04:01 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Tue 17 Jan 89 12:02:31-PST
Received: by polya.Stanford.EDU (5.59/25-eef) id AA20588; Tue, 17 Jan 89 12:03:23 PDT
Date: 17 Jan 89 20:03:06 GMT
From: mkatz@Sesame.Stanford.EDU (Morris Katz)
Organization: Stanford University
Subject: Re: broadcasting classes
Message-Id: <6159@polya.Stanford.EDU>
References: <8901132255.AA04345@polya.Stanford.EDU>, <6096@polya.Stanford.EDU>
Sender: postmaster@score.stanford.edu
To: csd@score.stanford.edu
I personally believe that the quality of education for the students who chose
to attend classes is of paramount importance, so that only nonintrusive means
of televising courses should be accepted. This means that the instructor
should be allowed to use an overhead projector, blackboard, etc., at his/her
discretion. The instructor should not have to use a microphone, and the
students should not have to ask questions through microphones. Instead, the
classrooms should be equipt with the necessary microphones to pick up what the
participants are saying, and enough cameras should be running to pick up both
the instructor and the visual aids. The results of the multiple cameras can
then be fed to video land in a split screen format. Granted, the results would
probably not be quite as good as they currently are for video participants, and
High Resolution TV would probably be required for acceptable split screen
resolution; but, the educational experience for those in the classroom would be
greatly enhanced. In my experience, the current video setups adversely effect
the lecturers ability to communicate effectively to those in the room and make
asking questions more difficult, hampering the free exchange of information.
It is hard enough to get students to ask questions without requiring them to
talk into a microphone and piping their questions to the world.
Lastly, it was brought up that Stanford makes a lot of money off of video
courses. Lets not forget that they also get a lot of tuition from the students
in the room.
--
--
∂18-Jan-89 0102 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Re: SITN
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 18 Jan 89 01:02:52 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Wed 18 Jan 89 00:47:59-PST
Message-ID: <LbPyo@SAIL.Stanford.EDU>
Date: 18 Jan 89 0049 PST
From: Arthur Keller <ARK@SAIL.Stanford.EDU>
Subject: Re: SITN
To: faculty@SCORE.STANFORD.EDU
∂17-Jan-89 1315 @Score.Stanford.EDU,@polya.Stanford.EDU:postmaster@score.stanford.edu Re: SITN
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 17 Jan 89 13:11:10 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Tue 17 Jan 89 13:09:32-PST
Received: by polya.Stanford.EDU (5.59/25-eef) id AA25059; Tue, 17 Jan 89 13:10:29 PDT
Date: 17 Jan 89 21:10:16 GMT
From: bthomas@polya.Stanford.EDU (Becky Thomas)
Organization: Stanford University
Subject: Re: SITN
Message-Id: <6161@polya.Stanford.EDU>
References: <10$ti7@SAIL.Stanford.EDU>, <8901162032.AA04335@arisia.Xerox.COM>, <6158@polya.Stanford.EDU>
Sender: postmaster@score.stanford.edu
To: csd@score.stanford.edu
One of the more popular arguments to be made against televising classes seems
to be, "students learn better when they attend live lectures." I agree with
Joseph Jacobs that this is not true for every student (or for every class).
Perhaps, as David Dill says, students don't always know what's best for them;
but certainly no one thing is best for every student. Personally, I hate very
interactive classes unless they're extremely well-taught (kudos to Don Knuth
here); I may go hide in the overflow room, but that doesn't mean I'm not
paying attention.
I realize the question of who owns the rights to the tapes is an important
one. The tapes are an enormous convenience for students who miss a lecture,
and I'd like to continue to be able to go use them in the library on occasion.
Please realize, though, that students (even undergrads!) often *do* know what
works best for us, and we appreciate having options.
--
Becky Thomas
bthomas@polya.stanford.edu
∂18-Jan-89 0106 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Re: SITN
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 18 Jan 89 01:05:57 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Wed 18 Jan 89 00:48:01-PST
Message-ID: <xbPz7@SAIL.Stanford.EDU>
Date: 18 Jan 89 0049 PST
From: Arthur Keller <ARK@SAIL.Stanford.EDU>
Subject: Re: SITN
To: faculty@SCORE.STANFORD.EDU
∂17-Jan-89 1737 @Score.Stanford.EDU,@polya.Stanford.EDU:postmaster@score.stanford.edu Re: SITN
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 17 Jan 89 17:36:57 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Tue 17 Jan 89 17:35:27-PST
Received: by polya.Stanford.EDU (5.59/25-eef) id AA14887; Tue, 17 Jan 89 17:36:24 PDT
Date: 18 Jan 89 01:36:13 GMT
From: roland@polya.Stanford.EDU (Roland Conybeare)
Organization: Stanford University
Subject: Re: SITN
Message-Id: <6175@polya.Stanford.EDU>
References: <8901162032.AA04335@arisia.Xerox.COM>, <6158@polya.Stanford.EDU>, <6161@polya.Stanford.EDU>
Sender: postmaster@score.stanford.edu
To: csd@score.stanford.edu
Last quarter, I watched Hennessey's architecture course at home while
eating lunch or doing housework such as washing dishes. I do not think
my attention suffered at all. On the other hand, I was not taking the
course and in any case the televising was discontinued halfway through the
quarter.
For someone with a peripheral (that is to say comprehensive :-) interest
in a course I think TV lectures at home are valuable. Of course, such
students shouldn't expect to fall in the center of the teacher's
attention, either.
Roland Conybeare
∂18-Jan-89 0108 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU The best lectures I ever attended
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 18 Jan 89 01:08:39 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Wed 18 Jan 89 00:48:12-PST
Message-ID: <xbPzt@SAIL.Stanford.EDU>
Date: 18 Jan 89 0049 PST
From: Arthur Keller <ARK@SAIL.Stanford.EDU>
Subject: The best lectures I ever attended
To: faculty@SCORE.STANFORD.EDU
∂17-Jan-89 2048 @Score.Stanford.EDU,@polya.Stanford.EDU:postmaster@score.stanford.edu The best lectures I ever attended
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 17 Jan 89 20:48:41 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Tue 17 Jan 89 20:47:14-PST
Received: by polya.Stanford.EDU (5.59/25-eef) id AA22567; Tue, 17 Jan 89 20:48:12 PDT
Date: 18 Jan 89 04:48:01 GMT
From: larrabee@polya.Stanford.EDU (Tracy Larrabee)
Organization: Stanford University
Subject: The best lectures I ever attended
Message-Id: <6180@polya.Stanford.EDU>
Sender: postmaster@score.stanford.edu
To: csd@score.stanford.edu
The very best lectures I ever attended at stanford were televised
courses. Zohar Manna, Brian Reid, John Hennessy, and Don Knuth give
televised lectures that make wonderful use of the overhead camera. I
took courses from each of these professors, and I saw each of their
lectures from a remote TV as well as in person. In each case, an
excellent remote class was an artifact of an even better local class.
There are always facial expressions, color graphics, unrepeated snide
comments, and the faces of fellow students that remote students miss
(it can be so reassuring to know that your fellow students look as
blank as you do). I don't think I was alone in figuring out that the
main class room was preferred: the main rooms were always packed when
the overflow rooms were not.
My personal opinion is that I would like all lectures to be given with
the aid of an overhead-camera, even when the class is not televised. I
think lecturers should have some control over the broadcast of their
lectures.
∂18-Jan-89 0111 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Televised Classes
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 18 Jan 89 01:11:08 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Wed 18 Jan 89 00:48:16-PST
Message-ID: <LbPzD@SAIL.Stanford.EDU>
Date: 18 Jan 89 0049 PST
From: Arthur Keller <ARK@SAIL.Stanford.EDU>
Subject: Televised Classes
To: faculty@SCORE.STANFORD.EDU
∂17-Jan-89 2155 @Score.Stanford.EDU,@polya.Stanford.EDU:postmaster@score.stanford.edu Televised Classes
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 17 Jan 89 21:55:21 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Tue 17 Jan 89 21:53:53-PST
Received: by polya.Stanford.EDU (5.59/25-eef) id AA25828; Tue, 17 Jan 89 21:54:52 PDT
Date: 18 Jan 89 05:54:42 GMT
From: rossner@polya.Stanford.EDU (Marc D. Rossner)
Organization: Stanford University
Subject: Televised Classes
Message-Id: <6181@polya.Stanford.EDU>
Sender: postmaster@score.stanford.edu
To: csd@score.stanford.edu
Time for the master's students to enter the fray. I know that I'm not
speaking only for myself when I say I think that the televised courses
are in general highly obnoxious. I attend nearly 100% of the lectures
live and am always distracted by the damned flickering screens. What's
worse is professors who gear their lectures toward the televised format,
i.e. conducting the entire class by presenting notes on the overhead
camera. At first I thought I needed to adjust my personal sleeping
habits when I found myself unable to EVER stay awake through a
certain long televised class last semester, but soon noticed that
nearly half (this is NOT an exaggeration) of the "studio-audience"
was literally sound asleep by the middle of each lecture because
of the soporific lecturing style which is encouraged by the televised
format.
I agree 100% with David Dill about the value of interaction in live
lectures. I personally hold "a priori" in higher regard classes like
his own in which the lecturers
still insist on using the blackboard so that the concepts
being presented can unfold naturally during the lecture instead of
being shoved on a piece of paper underneath the camera. Sorry, Tracy
Larrabee (or is that one 'r' and two 'b's?), but I think many of us
think the overhead camera has only a very negative effect on the classroom.
When I want to numerical analysis class last semester I came out
of almost every lecture not understanding in the least what the
professor had been trying to get at. Yet (in a sick sort of way)
I enjoyed going to this class as it was my only non-televised one -- just
your old fashioned 30 people, a classroom, a blackboard, and a
pleasant if befuddling professor.
So much for a student's opinion of SITN itself. As for the other
issue, I find criticism of the live broadcast, dorm viewing, etc
of televised classes somewhat hypocritical -- this department is
offering its students, for the University's own monetary gain, an
inferior environment for learning and is now complaining that some
students want to take advantage of all of this environment's side
effects. The criticism should be leveled at the televised classroom itself.
Marc Rossner
(are TV students permitted to dress like that at work, also?)
∂18-Jan-89 0720 @polya.Stanford.EDU:Ekaterini.Yannoulis@pulsar.fac.cs.cmu.edu Undeliverable mail
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 18 Jan 89 07:20:40 PST
Received: from PULSAR.FAC.CS.CMU.EDU by polya.Stanford.EDU (5.59/25-eef) id AA04155; Wed, 18 Jan 89 07:20:04 PDT
Received: from PULSAR.FAC.CS.CMU.EDU by PULSAR.FAC.CS.CMU.EDU; 18 Jan 89 10:18:35 EST
From: Gripe@fac.cs.cmu.edu
Reply-To: Gripe@fac.cs.cmu.edu
To: aflb-tn@polya.stanford.edu
Subject: Undeliverable mail
Date: Wed, 18 Jan 89 10:18:28 EST
Message-Id: <28774.601139908@PULSAR.FAC.CS.CMU.EDU>
Sender: Ekaterini.Yannoulis@PULSAR.FAC.CS.CMU.EDU
------- Forwarded Message
Return-Path: <@C.CS.CMU.EDU:Gripe@FAC.CS.CMU.EDU>
Received: from C.CS.CMU.EDU by VEGA.FAC.CS.CMU.EDU; 16 Jan 89 17:05:16 EST
Date: Mon, 16 Jan 89 17:02:30 EDT
From: MAILER-DAEMON@c.cs.cmu.edu
Reply-To: Gripe@FAC.CS.CMU.EDU
To: MAILER-DAEMON@c.cs.cmu.edu
Subject: Undeliverable mail
Mail addressed to THEORYNT@NDSUVM1.BITNET@forsythe.stanford.edu@polya.Stanford.EDU@Score.Stanford.EDU at gsb-why.stanford.edu could not be sent.
- --------- Host gsb-why.stanford.edu transcript -----------
220-GSB-WHY.Stanford.EDU SMTP Service 6.1(221) at Mon 16 Jan 89 14:02:13-PST
220 Bugs/Gripes to Bug-MAISER@SIMTEL20.ARPA
HELO C.CS.CMU.EDU
250 GSB-WHY.Stanford.EDU - Hello, C.CS.CMU.EDU.#Internet
MAIL From:<MAILER-DAEMON@c.cs.cmu.edu>
250 MAIL accepted
RCPT To:<@gsb-why.stanford.edu,@Score.Stanford.EDU,@polya.Stanford.EDU,@forsythe.stanford.edu:THEORYNT@NDSUVM1.BITNET>
550 Host name "NDSUVM1.BITNET" unknown, recipient rejected
- ------- Message contents appear below ------
Date: Mon, 16 Jan 89 17:01:57 EST
From: MAILER-DAEMON@C.CS.CMU.EDU
To: THEORYNT@NDSUVM1.BITNET@forsythe.stanford.edu@polya.Stanford.EDU@Score.Stanford.EDU@GSB-WHY.STANFORD.EDU
Subject: Unable to deliver mail
----- Transcript of session follows -----
Unbalanced `>'
----- Unsent message follows -----
Received: from GSB-WHY.STANFORD.EDU by C.CS.CMU.EDU; 16 Jan 89 17:01:55 EST
Received: from Score.Stanford.EDU by GSB-WHY.Stanford.EDU with TCP; Mon 16 Jan 89 14:01:53-PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Mon 16 Jan 89 14:01:10-PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA08207; Mon, 16 Jan 89 14:01:38 PDT
Message-Id: <8901162201.AA08207@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Mon, 16 Jan 89 14:00:27 PST
Received: by BYUADMIN (Mailer R2.01A) id 6405; Mon, 16 Jan 89 13:13:06 MST
Date: Mon, 16 Jan 89 10:28:14 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
gadi RSMA309@HAIFAUVM.BITNETAIFAUVM>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: gadi moran <RSMA309%HAIFAUVM.BITNET@forsythe.stanford.edu>
Subject: Faculty positions at University of Haifa
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
UNIVERSITY OF HAIFA
DEPARTMENT OF MATHEMATICS AND COMPUTER SCIENCE
APPLICATIONS ARE INVITED FOR ANTICIPATED FACULTY POSITION IN ALL AREAS OF
COMPUTER SCIENCE. THE DEPARTMENT WISHES TO STRENGTHEN ITS PROGRAMS THAT
COMBINE MATHEMATICS AND COMPUTER SCIENCE. STRONG INTEREST IN BOTH
RESEARCH AND TEACHING ARE EXPECTED. SEND RESUMEE INCLUDING RESEARCH
INTERESTS, LIST OF PUBLICATIONS AND ASK FOR 3 REFERENCE LETTERSSENT TO:
PROFESSOR YAIR CENSOR, CHAIRMAN
DEPARTMENT OF MATHEMATICS AND COMPUTER SCIENCE
UNIVERSITY OF HAIFA
HAIFA 31999
ISRAEL.
Bitnet: rsma403@haifauvm
------- End of Forwarded Message
∂18-Jan-89 1035 @Score.Stanford.EDU:coraki!pratt@Sun.COM TV
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 18 Jan 89 10:35:33 PST
Received: from Sun.COM by SCORE.STANFORD.EDU with TCP; Wed 18 Jan 89 10:33:00-PST
Received: from sun.Sun.COM (sun-bb.sun.com) by Sun.COM (4.1/SMI-4.0)
id AA18760; Wed, 18 Jan 89 10:35:42 PST
Received: from coraki.UUCP by sun.Sun.COM (4.0/SMI-4.0)
id AA03089; Wed, 18 Jan 89 10:33:06 PST
Received: by (4.0/SMI-4.0Beta)
id AA00722; Wed, 18 Jan 89 10:32:31 PST
Date: Wed, 18 Jan 89 10:32:31 PST
From: Vaughan Pratt <coraki!pratt@Sun.COM>
Message-Id: <8901181832.AA00722@>
To: faculty@score.stanford.edu
Subject: TV
There are four cases: {teacher,student} {likes,hates} TV. All four
cases are represented. If you didn't know that before the recent
flurry of email on this topic you do now.
I'd like to see this information refined in two directions. For each
of teachers and students, what fraction likes TV? And what are the
main reasons people cite for their preferences?
What I would not be interested in, at least on this mailing list, is
the raw data from which we are expected to compute this ourselves.
-v
∂18-Jan-89 1114 aaai@sumex-aim.stanford.edu CMU Email Interface
Received: from sumex-aim.stanford.edu by SAIL.Stanford.EDU with TCP; 18 Jan 89 11:14:49 PST
Received: by sumex-aim.stanford.edu (4.0/inc-1.0)
id AA06217; Wed, 18 Jan 89 11:13:14 PST
Date: Wed, 18 Jan 1989 11:13:13 PST
From: AAAI <aaai@sumex-aim.stanford.edu>
To: officers:;@sumex-aim.stanford.edu
Cc: aaai@sumex-aim.stanford.edu
Subject: CMU Email Interface
Message-Id: <CMM.0.88.601153993.aaai@sumex-aim.stanford.edu>
Below are the instructions for the use of the email interface to
the AI database at CMU. Please send your bug reports to
Greg Diskin at CMu (his net address is in the help document).
-Claudia
Message 80 (13303 chars)
Return-Path: <@po5.andrew.cmu.edu:diskin+@andrew.cmu.edu>
Received: from po5.andrew.cmu.edu by sumex-aim.stanford.edu (4.0/inc-1.0)
id AA21735; Mon, 19 Dec 88 20:03:10 PST
Received: by po5.andrew.cmu.edu (5.54/3.15) id <AA00739> for aaai@sumex-aim.stanford.edu; MonQXfR0ny00Vs1A10UFr>;
Mon, 19 Dec 88 22:59:50 -0500 (EST)
Received: from rouzerville.andrew.cmu.edu via qmail
ID </afs/andrew.cmu.edu/usr1/diskin/.Outgoing/QF.rouzerville.andrew.cmu.edu.23ad713e.e3b9cb>;
Mon, 19 Dec 88 16:14:39 -0500 (EST)
Received: from Version.6.20.N.CUILIB.3.44.SNAP.NOT.LINKED.rouzerville.andrew.cmu.edu.rt.r3
via MS.5.5.rouzerville.andrew.cmu.edu.rt_r3;
Mon, 19 Dec 88 16:14:36 -0500 (EST)
Message-Id: <QXfL4xy00WEDA9mkIf@andrew.cmu.edu>
Date: Mon, 19 Dec 88 16:14:37 -0500 (EST)
From: "Gregory M. Diskin" <diskin+@andrew.cmu.edu>
X-Andrew-Message-Size: 12073+0
To: aaai@sumex-aim.stanford.edu
Subject: email interface
Cc: buchanan@tweety.cs.pittsburgh.edu,
"Mark H. Kibbey" <kibbey+@andrew.cmu.edu>
Claudia Mazzetti,
We are ready here for you to announce the availability of an email interface to
two databases:
1) Bruce Buchanan's bibliography of A.I. literature (currently 5,152
documents)
2) Carnegie Mellon University Libraries' technical report holdings
(currently 7,800 documents).
I have enclosed the help file for the interface at the end of this message.
Members can receive the help document by sending mail to AM77@VMA.CC.CMU.EDU.
The body of the message should consist of one line: HELP.
The mail server will run once daily (at night) to process incoming queries.
What is undecided at this point (as far as I know) is the mechanism for updatingBuchanan's file. Mark has agreed to maintain the database but I'm not sure whatthe procedure is for adding new records.
I'm also not sure how I should verify the authenticity of an AAAI id number,
which Mark has specified as a necessary command in messages which contain
queries.
I'll be happy to provide any more information about the system, if I've
overlooked anything.
Thanks,
Gregg Diskin
************************************************************************
* *
* AAAI INFORMATION SERVER *
* HELP DOCUMENT *
* *
************************************************************************
GENERAL INFORMATION
The AAAI Information Retrieval Service reads commands from the body of
an electronic mail message and returns the results to the sender. Com-
mands are typically database queries combining keywords and optional
∂18-Jan-89 1116 @Score.Stanford.EDU:jwilson@jaguar.Stanford.EDU NeXT machine installed near MJH 246
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 18 Jan 89 11:16:10 PST
Received: from jaguar.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Wed 18 Jan 89 11:13:25-PST
Received: by jaguar.Stanford.EDU (5.51/inc-1.01)
id AA03431; Wed, 18 Jan 89 11:15:34 PST
Date: Wed, 18 Jan 89 11:15:34 PST
From: James Wilson <jwilson@jaguar.Stanford.EDU>
Message-Id: <8901181915.AA03431@jaguar.Stanford.EDU>
To: faculty@score.stanford.edu, csd@score.stanford.edu
Subject: NeXT machine installed near MJH 246
A NeXT machine has been installed for evaluation use outside of MJH 246.
This machine may only be used by CSD and CSD-related faculty, staff, and students.
Faculty have priority over staff and students for using this machine.
James
∂18-Jan-89 1216 misha@polya.Stanford.EDU Correction on TODAY'S talk by bernd Sturmfels
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 18 Jan 89 12:16:27 PST
Received: by polya.Stanford.EDU (5.59/25-eef) id AA18424; Wed, 18 Jan 89 12:13:36 PDT
Date: Wed, 18 Jan 89 12:13:36 PDT
From: Michael Kharitonov <misha@polya.Stanford.EDU>
Message-Id: <8901182013.AA18424@polya.Stanford.EDU>
To: aflb-all@polya.Stanford.EDU
Subject: Correction on TODAY'S talk by bernd Sturmfels
The talk is TODAY at 4:15, not 3:15, in the Math department.
Tea/coffee starts at 2:30.
Sorry for the confusion.
Misha
∂18-Jan-89 1227 LOGMTC-mailer seminar on lambda calculus and PL semantics
Received: from ra.stanford.edu by SAIL.Stanford.EDU with TCP; 18 Jan 89 12:27:24 PST
Received: by ra.stanford.edu (5.59/25-eef) id AA08277; Wed, 18 Jan 89 12:26:18 PDT
Date: Wed, 18 Jan 89 12:26:18 PDT
From: John Mitchell <jcm@ra.stanford.edu>
Message-Id: <8901182026.AA08277@ra.stanford.edu>
To: logmtc@sail
Subject: seminar on lambda calculus and PL semantics
This seminar will focus on fundamental theorems of
typed lambda calculus, semantics, polymorphism, and
applications to the study of programming languages.
One area of concentration will be the method of "logical
relations," which is used to prove almost all nontrivial
theorems about typed languages. (For example, the
"inclusive predicates" of Scott-Strachey semantics
are a special case.) Time permitting, we will also study
connections between typed languages and categorical
concepts. We will assume most of the material covered
in CS258. Notes will be available for those who did not
take CS 258 in the fall.
Organizational meeting: 4:15 PM, Thur 1/18, MJH 301
Send a preferred time via email if you cannot come
to this meeting.
∂18-Jan-89 1236 aaai@sumex-aim.stanford.edu trucated message
Received: from sumex-aim.stanford.edu by SAIL.Stanford.EDU with TCP; 18 Jan 89 12:36:38 PST
Received: by sumex-aim.stanford.edu (4.0/inc-1.0)
id AA01703; Wed, 18 Jan 89 12:34:38 PST
Date: Wed, 18 Jan 1989 12:34:37 PST
From: AAAI <aaai@sumex-aim.stanford.edu>
To: officers:;@sumex-aim.stanford.edu
Cc: aaai@sumex-aim.stanford.edu
Subject: trucated message
Message-Id: <CMM.0.88.601158877.aaai@sumex-aim.stanford.edu>
We are having some problems with the file re: the CMU interface.
I hope to resend it to you later today.
Claudia
∂18-Jan-89 1252 LOGMTC-mailer seminar on lambda calculus and PL semantics
Received: from ra.stanford.edu by SAIL.Stanford.EDU with TCP; 18 Jan 89 12:52:49 PST
Received: by ra.stanford.edu (5.59/25-eef) id AA08322; Wed, 18 Jan 89 12:51:40 PDT
Date: Wed, 18 Jan 89 12:51:40 PDT
From: John Mitchell <jcm@ra.stanford.edu>
Message-Id: <8901182051.AA08322@ra.stanford.edu>
To: csd@score, logmtc@sail, phd@score
Subject: seminar on lambda calculus and PL semantics
That's Thurs the 19-th. Sorry.
∂18-Jan-89 1323 aaai@sumex-aim.stanford.edu resending CMU interface info
Received: from sumex-aim.stanford.edu by SAIL.Stanford.EDU with TCP; 18 Jan 89 13:23:09 PST
Received: by sumex-aim.stanford.edu (4.0/inc-1.0)
id AA03550; Wed, 18 Jan 89 13:21:38 PST
Date: Wed, 18 Jan 1989 13:21:37 PST
From: AAAI <aaai@sumex-aim.stanford.edu>
To: officers:;@sumex-aim.stanford.edu
Cc: aaai@sumex-aim.stanford.edu
Subject: resending CMU interface info
Message-Id: <CMM.0.88.601161697.aaai@sumex-aim.stanford.edu>
Here we go again.
Message 80 (13303 chars)
Return-Path: <@po5.andrew.cmu.edu:diskin+@andrew.cmu.edu>
Received: from po5.andrew.cmu.edu by sumex-aim.stanford.edu (4.0/inc-1.0)
id AA21735; Mon, 19 Dec 88 20:03:10 PST
Received: by po5.andrew.cmu.edu (5.54/3.15) id <AA00739> for aaai@sumex-aim.stanford.edu; Mon, 19 Dec 88 23:01:28 EST
Received: via switchmail; Mon, 19 Dec 88 23:01:17 -0500 (EST)
Received: from po5.andrew.cmu.edu via qmail
ID </afs/andrew.cmu.edu/service/mailqs/q003/QF.QXfR0ny00Vs1A10UFr>;
Mon, 19 Dec 88 22:59:50 -0500 (EST)
Received: from rouzerville.andrew.cmu.edu via qmail
ID </afs/andrew.cmu.edu/usr1/diskin/.Outgoing/QF.rouzerville.andrew.cmu.edu.23ad713e.e3b9cb>;
Mon, 19 Dec 88 16:14:39 -0500 (EST)
Received: from Version.6.20.N.CUILIB.3.44.SNAP.NOT.LINKED.rouzerville.andrew.cmu.edu.rt.r3
via MS.5.5.rouzerville.andrew.cmu.edu.rt_r3;
Mon, 19 Dec 88 16:14:36 -0500 (EST)
Message-Id: <QXfL4xy00WEDA9mkIf@andrew.cmu.edu>
Date: Mon, 19 Dec 88 16:14:37 -0500 (EST)
From: "Gregory M. Diskin" <diskin+@andrew.cmu.edu>
X-Andrew-Message-Size: 12073+0
To: aaai@sumex-aim.stanford.edu
Subject: email interface
Cc: buchanan@tweety.cs.pittsburgh.edu,
"Mark H. Kibbey" <kibbey+@andrew.cmu.edu>
Claudia Mazzetti,
We are ready here for you to announce the availability of an email interface to
two databases:
1) Bruce Buchanan's bibliography of A.I. literature (currently 5,152
documents)
2) Carnegie Mellon University Libraries' technical report holdings
(currently 7,800 documents).
I have enclosed the help file for the interface at the end of this message.
Members can receive the help document by sending mail to AM77@VMA.CC.CMU.EDU.
The body of the message should consist of one line: HELP.
The mail server will run once daily (at night) to process incoming queries.
What is undecided at this point (as far as I know) is the mechanism for updatingBuchanan's file. Mark has agreed to maintain the database but I'm not sure whatthe procedure is for adding new records.
I'm also not sure how I should verify the authenticity of an AAAI id number,
which Mark has specified as a necessary command in messages which contain
queries.
I'll be happy to provide any more information about the system, if I've
overlooked anything.
Thanks,
Gregg Diskin
************************************************************************
* *
* AAAI INFORMATION SERVER *
* HELP DOCUMENT *
* *
************************************************************************
GENERAL INFORMATION
The AAAI Information Retrieval Service reads commands from the body of
an electronic mail message and returns the results to the sender. Com-
mands are typically database queries combining keywords and optional
boolean or proximity operators (discussed later in this document).
The server replies with the set of bibliographic records which match the
query. The address of the Service is AM77@VMA.CC.CMU.EDU.
COMMANDS
The number of keywords and operators in a command line is optional, so
long as the number of characters in a line are not more than 80. Each
line of the message should contain one command. You may send as many as
twenty commands in a message. The system will ignore everything after
line twenty in the body of the message. It will also ignore the subject
heading. You can type anything you want there or leave it blank.
The system is indifferent to case; everything is converted to upper case
before it's parsed.
The easiest message to send (and you have presumably sent it to get
this help file) is a one-line message: HELP.
Unless you are asking for HELP, one line in your message must contain
your AAAI id-number. All you need to do is start a line with the com-
mand ID and then enter your id-number as in:
ID 123456
The most common messages contain lines beginning with the command FIND.
This is the command used to specify a query, as in:
FIND boolean adj (arithmetic or logic)
FIND NATURAL-LANGUAGE PARSING
Since FIND is the most common command it's the default when a line begins
with a keyword rather than a command, as in:
boolean adj (arithmetic or logic)
NATURAL-LANGUAGE PARSING
In alphabetical order the commands are:
COMMAND PARAMETERS DESCRIPTION
_______ __________ ___________
BASE name The BASE command specifies the database
to be searched in subsequent queries
(up to the next BASE command). The
default database is BUCH, Buchanan's
Artificial Intelligence Bibliography.
A list of valid database names and
definitions is given in table III.
FIND search statement The FIND command specifies the keywords,
operators, and field names which comprise
the search statement or query. Table I
lists operators; Table II lists common
field names. Note: FIND is the default
command when a command line begins with
a keyword.
FORMAT spec The FORMAT command specifies the output
format desired. The default is "A" for
all paragraphs. The alternative format
currently defined is "B" to list just
authors and titles in the output file.
A FORMAT statement applies to all follow- ing queries until another FORMAT
statement occurs.
HELP A HELP request will cause the HELP file
to be mailed. No other command is
honored in a message containing a HELP
request.
ID id-number Messages (excepting HELP requests) must
contain the sender's AAAI identification
number. There is no default. Queries
submitted without an ID line or with-
out a valid id number are not searched,
but an error message is returned.
MSG text A MSG command will cause succeeding
line(s) of text to be forwarded to the
system maintainer. A response will be
sent as soon as possible. No other
commands are honored in a message con-
taining a MSG command.
PATH return path A PATH command specifies the return path
to be used as the mail address for the
message reply. It overrides the userid-
path in the message's "From:" field.
RANGE from,to The RANGE command specifies the start and
ending document numbers to be returned in
the output. It applies only to the query
which immediately follows on the next
line. This command should be used when
an earlier message query generated so
many hits that the line limit
of 2000 lines was exceeded. You can get
subsequent records by specifying a range
beginning with the next sequential record.
For example:
RANGE 51,100
FIND ARTIFICIAL-INTELLIGENCE
TABLE I. OPERATORS
ADJ The ADJ operator specifies keywords which must appear
together in the document in the order given. A number n
between 1 and 7 may be added to the operator, e.g.,
ADJ3, to signify that no more than n keywords may separate
the two specified words. For example:
FIND finite adj state
FIND FINITE ADJ1 AUTOMATA
AND The AND operator occurring between two keywords means
both words must be present in the record or document. AND
is the default operator when no operator occurs between
keywords. Here are two examples:
FIND COMPUTATION AND DEDUCTION
FIND NEWELL SIMON PROBLEM ADJ SOLVING
NEAR The same as the ADJ operator, except the keywords may
occur in either order.
NOT The NOT operator excludes documents from the result set.
For example, the query FIND PROCESS NOT CONTROL
retrieves documents which contain the keyword PROCESS as
long as they don't contain the keyword CONTROL.
SAME The SAME operator specifies documents which have both
keywords in the same field. (Fields are named paragraphs,
such as the author field or the title field). For
example:
FIND LISP SAME TUTOR
WITH The WITH operator is even more specific than SAME -- it
specifies documents with the bracketing keywords in the
same sentence. For example:
FIND SIMULATION WITH MODEL
- The '-' operator occurring between two keywords means
the first keyword immediately precedes the second in some
field in the document. As such, it's equivalent to the
ADJ operator. For example:
FIND PARALLEL-PROCESSING
HEURISTICS AND FORMAL-SYSTEMS
$ The '$' operator is a suffix operator. When attached to
a word stem it matches all words beginning with the stem.
For example, SIMULAT$ will match SIMULATE, SIMULATES,
SIMULATION, SIMULATIONS, SIMULATING, etc.
TABLE II. FIELDS
/TI Title field
/AU Author field
/SU Subject field
Specifying the field a keyword should be found in is some-
times useful for limiting the output when the keyword occurs
frequently in the database. The search HEURISTICS/TI means
that HEURISTICS must occur in the title field of a document
for that document to be included in the result set.
The syntax for the field limit is keyword"/"field as is
evident in these examples:
FIND RECURSIVELY/TI
FIND SYSTEMS NEAR1 FORMAL/SU
TABLE III. DATABASES
The following is a list of database names and descrip-
tions. The names are the only valid parameters for the
BASE command.
BUCH Bruce Buchanan's bibliography of the artificial intelli-
gence literature. This is the default database.
CMUT Carnegie-Mellon University Libraries' technical report
holdings.
NOTES
1) Command sequence
The ordering of commands is occasionally important.
For example, the BASE command, which is used to specify a database
other than the default database, applies to all FOLLOWING queries, not
to any that preceded it. The same is true for the FORMAT command which
specifies the output form desired. Both of these commands are in effect
up to the next BASE or FORMAT entry. However, the RANGE command applies
only to the next query. After that the default RANGE command goes into
effect, if there are more queries.
2) Replies
Each query in a message sent to the server will receive a separate
reply. If the results are a surprise or you get a cryptic error res-
ponse, use the MSG command to communicate with system maintainers.
3) System Limits
o A maximum of twenty lines are processed from the body of a
mail message. Remaining lines, if any, are ignored.
o Output from an individual query is cut off at 1000 lines. Use
the RANGE command in subsequent messages to get more output.
o Search sets created by prior queries in a message do not carry
over to successive queries. So a query in the form:
"FIND 1 and keyword" will not specify search set #1.
SAMPLES
*****************************************************************
From: GD07@VMA.CC.CMU.EDU
To: AM77@VMA.CC.CMU.EDU
Subject:
id 2345zz
format b
automata
*****************************************************************
From: "Gregory M. Diskin <diskin+@andrew.cmu.edu>
To: AM77@VMA.CC.CMU.EDU
Subject:
id 5555xyz
find finite-state
find formal adj system$
*****************************************************************
∂18-Jan-89 1457 @polya.Stanford.EDU:imielins@aramis.rutgers.edu PODS 89 - Final Program
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 18 Jan 89 14:57:19 PST
Received: from MARCIN.RUTGERS.EDU by polya.Stanford.EDU (5.59/25-eef) id AA00268; Wed, 18 Jan 89 14:51:32 PDT
Received: by marcin.rutgers.edu (5.59/SMI4.0/RU1.1/3.03)
id AA00202; Wed, 18 Jan 89 17:50:35 EST
Date: Wed, 18 Jan 89 17:50:35 EST
From: imielins@aramis.rutgers.edu
Message-Id: <8901182250.AA00202@marcin.rutgers.edu>
To: nail@polya.stanford.edu
Subject: PODS 89 - Final Program
------------------------------------------------
Eights ACM SIGACT-SIGMOD-SIGART Symposium
on
PRINCIPLES OF DATABASE SYSTEMS
Philadelphia, Pennsylvania, March 29-31, 1989
INFORMATION
LOCATION
The 8th ACM Symposium on Principles of Database Systems will be held
at The Warwick, a four star hotel, situated in the heart of downtown
Philadelphia, within walking distance from first class restaurants,
concert halls, theaters and galleries. The Warwick Hotel,
a Historical Landmark, combines 19th-century atmosphere with
20th-century amenities.
Checkout and checkin time is noon;
A block of rooms has been reserved until March 6th, 1989.
Please reserve a room by using the form provided or by calling 800-523-4210
Room rates and availability are not guaranteed past March 6th.
REGISTRATION
Advanced registration is requested using the form provided.
Registration rates go up markedly after March 6th. A registration
desk will be open Tuesday night from 7:30pm to 10:00pm, and during the
day on Wednesday (8:30 am to 4:30 pm). Registrants, other than
students, receive admission to the technical sessions, one copy of the
proceedings, reception, lunch, and a banquet at the historical
Franklin Institute.
Student registration, available to full-time students only, includes
the technical sessions, reception and one copy of the proceedings.
Additional copies of the proceedings will be available for sale at
the registration desk.
TRANSPORTATION
There are two choices for ground transportation from the airport to the hotel.
The limousine service from the airport to major Philadelphia hotels including
Warwick is available for about 6 dollars/person. Additionally, taxi fare
to the hotel is about 25 dollars.
For participants driving to The Warwick, parking is available at
the rate 8.50/day at Penn Warwick lot on Chancellor and 17th street.
5 dollar/day rebate is provided for those participants who stay in the hotel.
CLIMATE
Normal daily temperatures in Philadelphia
in March range from 35 to 50 degrees F.
Occasional cold fronts bring northerly winds but snow is rare
at this time of the year.
EVENT LOCATION
All technical sessions, reception, lunch, and business meeting will be held
at The Warwick Hotel. On Thursday night there will be a reception
and banquet at the historical Franklin institute at 20th & the Parkway,
walking distance from the hotel.
TECHNICAL PROGRAM
TUESDAY, MARCH 28, 1989
Reception: 7:30 pm - 10:00 pm, Crystal Room
WEDNESDAY, MARCH 29, 1989
Note: All talks will take place in the Ballroom
TUTORIAL 1: 8:15 am - 9:15 am
Non-monotonic Reasoning,
Teodor C. Przymusinski (University of Texas at El Paso)
SESSION 1: 9:30 am - 10:40 am
Chair: Tomasz Imielinski (Rutgers University)
The Alternating Fixpoint of Logic Programs with Negation
Allen Van Gelder (University of California, Santa Cruz)
Every Logic Program has a Natural Stratification and an Iterated Fixed
Point Model, Teodor C. Przymusinski (University of Texas at El Paso)
A Procedural Semantics for Well Founded Negation in Logic Programs,
Kenneth A. Ross (Stanford University)
Coffee Break: 10:40 am - 11:15 am
SESSION 2: 11:15 am - 12:45 pm
Chair: Teodor C. Przymusinski (University of Texas at El Paso)
Logic Programming as Constructivism: A Formalization and its Application
to Databases, Francois Bry (ECRC, Munich)
Complexity of Query Processing in Databases with OR-Objects,
T. Imielinski and K. Vadaparty (Rutgers University)
A Sound and Complete Query Evaluation Algorithm for Relational Databases
with Disjunctive Information, Li Yan Yuan and Ding-An Chiang (University
of Alberta)
Horn Tables - An Efficient Tool for Handling Incomplete Information in
Databases, Gosta Grahne (University of Helsinki)
Lunch: 12:45 pm - 2:15 pm
SESSION 3: 2:15 pm - 3:45 pm
Chair: Carlo Zaniolo (MCC)
Invited Talk: Automata Theory for Database Theoreticians,
Moshe Y. Vardi (IBM Almaden Research Center)
Declarative Expression of Deductive Database Updates,
Sanjay Manchanda (University of Arizona)
Updating Databases in the Weak Instance Model,
Paolo Atzeni (Universita di Napoli and IASI-CNR) and Riccardo Torlone
(IASI-CNR)
Coffee Break: 3:45 pm - 4:15 pm
SESSION 4: 4:15 pm - 5:45 pm
Chair: Daniel J. Rosenkrantz (SUNY at Albany)
Attribute Agreement,
Y. C. Tay (National University of Singapore)
Can Constant-time-maintainability be More Practical?
Ke Wang (Chongqing University, PRC)
Practical Algorithms for Finding Prime Attributes and Testing Normal Forms,
Heikki Mannila (University of Helsinki) and Kari-Jouko Raiha (Univeristy
of Tampere)
A Decision Procedure for Conjunctive Query Disjointness,
Charles Elkan (Cornell University)
Business Meeting: 8:30 pm - 10:00 pm,
THURSDAY, MARCH 30, 1989
TUTORIAL 2: 8:15 am - 9:15 am
Recursive Query Processing,
Catriel Beeri (Hebrew University)
SESSION 5: 9:30 am - 10:40 am
Chair: Catriel Beeri (Hebrew University)
Bottom-up Beats Top-down for Datalog,
Jeffrey D. Ullman (Stanford University)
On the Power of Alexander Templates,
Hirohisa Seki (Institute for New Generation Computer Technology, Tokyo)
Safety of Datalog Queries over Infinite Databases,
Yehoshua Sagiv (Hebrew University) and Moshe Y. Vardi
(IBM Almaden Research Center)
Coffee Break: 10:40 am - 11:15 am
SESSION 6: 11:15 am - 12:45 pm
Chair: Michael Kifer (SUNY at Stony Brook)
Proof-tree Transformation Theorems and Their Applications,
Raghu Ramakrishnan (University of Wisconsin), Yehoshua Sagiv
(Hebrew University), Jeffrey D. Ullman (Stanford University), and
Moshe Y. Vardi (IBM Almaden Research Center)
Linearising Nonlinear Recursions in Polynomial Time,
Yatin P. Saraiya (Stanford University)
Inference of Monotonicity Constraints in Datalog Programs,
Alexander Brodsky and Yehoshua Sagiv (Hebrew University)
Why a Single Parallelization Strategy is Not Enough in Knowledge Bases,
Simona Cohen and Ouri Wolfson (Technion)
Lunch: 12:45 pm - 2:15 pm
SESSION 7: 2:15 pm - 3:45 pm
Chair: William E. Weihl (MIT)
Invited Talk: Modular Architectures for Distributed Database Systems,
Alfred Z. Spector (Carnegie-Mellon University)
Clustered Multiattribute Hash Files,
Doron Rotem (University of California, Berkeley)
Utilization of B-trees with Inserts, Deletes and Modifies,
Theodore Johnson and Dennis Shasha (New York University)
Coffee Break: 3:45 pm - 4:15 pm
SESSION 8: 4:15 pm - 5:30 pm
Chair: Hector Garcia-Molina (Princeton University)
Fractals for Secondary Key Retrieval,
Christos Faloutsos and Shari Roseman (University of Maryland, College Park)
Declustering Using Error Correcting Codes,
Christos Faloutsos and Dimitrios Metaxas (University of Maryland, College Park)
The Impact of Recovery on Concurrency Control,
William E. Weihl (MIT)
Concurrency Control for Nested Transactions Accessing B-trees,
Ada Fu and Tiko Kameda (Simon Fraser University)
Reception and Banquet at Franklin Institute, 6-10 pm.
FRIDAY, MARCH 31, 1989
TUTORIAL 3: 8:15-9:15
Expressive Power of Query Languages,
Victor Vianu (University of California, San Diego)
SESSION 9: 9:30 am - 10:40 am
Chair: Victor Vianu (University of California, San Diego)
Hypothetical Datalog with Stratification: Complexity and Expressibility,
Anthony J. Bonner (Rutgers University)
Inductive Pebble Games and the Expressive Power of Datalog,
V. S. Lakshmanan and A. O. Mendelzon (University of Toronto)
On the First-Order Expressibility of Recursive Queries,
Stavros S. Cosmadakis (IBM T.J. Watson Research Center)
Coffee Break: 10:40 am - 11:15 am
SESSION 10: 11:15 am - 12:45 pm
Chair: Ashok K. Chandra (IBM T.J. Watson Research Center)
Expressibility of Bounded-Arity Fixed-Point Query Hierarchies,
Pratul Dublish and S. N. Maheshwari (IIT Delhi)
Relational Database Behavior: Utilizing Relational Discrete Event Systems
and Models, Zvi M. Kedem and Alexander Tuzhilin (New York University)
Untyped Sets, Invention, and Computable Queries,
Richard Hull and Jianwen Su (University of Southern California)
Lunch: 12:45 pm - 2:15 pm
SESSION 11: 2:15 pm - 3:45 pm
Chair: Oded Shmueli (Technion)
Modeling Complex Structures in Object-Oriented Databases,
C. Lecluse and P. Richard (GIP Altair)
C-Logic of Complex Objects,
Weidong Chen and David S. Warren (SUNY at Stony Brook)
A Logic for Object-Oriented Logic Programming (Maier's O-Logic: Revisited),
Michael Kifer and James Wu (SUNY at Stony Brook)
Type Systems for Querying Class Hierarchies with Non-Strict Inheritance,
Alexander Borgida (Rutgers University)
-------------------------------------------------------------------------------
CONFERENCE ORGANIZATION
Sponsors: SIGACT, SIGMOD, and SIGART
Executive Committee: Ashok K. Chandra, Seymour Ginsburg,
Tomasz Imielinski, Avi Silberschatz,
Moshe Y. Vardi, Mihalis Yannakakis
Conference Chair: Avi Silberschatz, Dept. of Computer Sciences,
University of Texas at Austin, Austin, Texas 78712.
(512) 471-9706, avi@cs.utexas.edu
Program Chair: Ashok K. Chandra, IBM T.J. Watson Research Center
P.O. Box 218, Yorktown Heights, NY 10598.
(914) 945-1752, ashok@ibm.com (bitnet ASHOK@YKTVMV)
Local Arrangements Chair: Tomasz Imielinski, Dept. of Computer Science,
Rutgers University, New Brunswick, NJ 08903.
(201) 932-3551, imielinski@aramis.rutgers.edu
Program Committee: Catriel Beeri, Ashok K. Chandra, Hector Garcia-Molina,
Michael Kifer, Teodor C. Przymusinski, Daniel J. Rosenkrantz, Oded Shmueli,
Victor Vianu, William E. Weihl, Carlo Zaniolo.
ADVANCE REGISTRATION FORM, ACM-PODS
Please send this form or a facsimile along with a money order or check
(payable to 8th ACM SYMPOSIUM ON PRINCIPLES OF DATABASE SYSTEMS) to:
ACM-PODS Registration
c/o Carol Petty
Dept. of Computer Science
Rutgers University
New Brunswick, NJ 08903
(Before Mar. 6)(After)
ACM and SIG member $220 $285
ACM member only $230 $295
SIG member only $235 $300
Nonmember $285 $350
Student $ 50 $ 60
Requests for refunds will be honored until March 6, 1989.
Name_____________________________________________________________
Affiliation_________________________________________________________
City_____________________________State________________Zip__________
Country_____________________________Telephone______________________
Net Address________________________________________________________
_____ Check here if confirmation of registration is required.
Dietary restrictions: _______Kosher _______Vegetarian
HOTEL RESERVATION FORM, ACM-PODS March 1989
Please mail this form or a facsimile (being sure to mention the ACM-PODS
Conference) by March 6 to:
The Warwick Hotel,
17th at Locust Street
Philadelphia, PA 19103
Tel: (215) 735-6000
or (800) 523-4210
Accomodations desired:
_____Single $80
_____Double $90
Arrival date_____________________________________Time__________________________
Departure date___________________________________Time__________________________
Name_________________________________________________________________________
Sharing room with______________________________________________________________
Address________________________________________________________________________
City_______________________________State__________________Zip__________________
Country________________________________________________________________________
All rooms will be held until 4pm the day of arrival without deposit/guarantee.
For arrivals later than 4pm please guarantee to a major credit card:
_____Amer. Express _____VISA _____Mastercard _____Diners _____Discover
Credit Card number____________________________________________________________
Exp. Date___________________________________________________________________
Signature____________________________________________________________________
∂18-Jan-89 1537 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu SIGACT News Deadline
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 18 Jan 89 15:37:04 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA03264; Wed, 18 Jan 89 15:36:18 PDT
Message-Id: <8901182336.AA03264@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Wed, 18 Jan 89 15:35:25 PST
Received: by BYUADMIN (Mailer R2.01A) id 7171; Wed, 18 Jan 89 16:35:03 MST
Date: Wed, 18 Jan 89 10:16:14 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
"Michael A. Langston" <langston@CS2.WSU.EDU>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: "Michael A. Langston" <langston@CS2.WSU.EDU>
Subject: SIGACT News Deadline
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
This is to remind potential contributors that the deadline for the next issue
of SIGACT News is imminent. Items received after February 1, 1989, will not
be published in the Winter 1989 issue.
Also, please note that a Transitions section has recently returned to the News.
(Refer to the Fall 1988 issue for details.) Send your input for this section
to me, preferably via email, marked for Transitions.
Mike Langston
langston@cs2.wsu.edu
(509) 335-6486
∂18-Jan-89 1823 emma@csli.Stanford.EDU CSLI Calendar, January 19, 4:12
Received: from csli.Stanford.EDU by SAIL.Stanford.EDU with TCP; 18 Jan 89 18:23:49 PST
Received: by csli.Stanford.EDU (4.0/inc-1.0)
id AA25101; Wed, 18 Jan 89 17:03:32 PST
Date: Wed, 18 Jan 89 17:03:32 PST
From: emma@csli.Stanford.EDU (Emma Pease)
Message-Id: <8901190103.AA25101@csli.Stanford.EDU>
To: friends@csli.Stanford.EDU
Subject: CSLI Calendar, January 19, 4:12
C S L I C A L E N D A R O F P U B L I C E V E N T S
_____________________________________________________________________________
19 January 1989 Stanford Vol. 4, No. 12
_____________________________________________________________________________
A weekly publication of The Center for the Study of Language and
Information, Ventura Hall, Stanford University, Stanford, CA 94305
____________
CSLI ACTIVITIES FOR NEXT THURSDAY, 26 January 1989
12 noon TINLunch
Cordura Hall Kazunori Ueda
Conference Room ICOT
3:30 p.m. Tea
Ventura Hall
____________
NEXT WEEK'S TINLUNCH
Kazunori Ueda
ICOT
January 26
Dr. Kazunori Ueda will talk on (the design principle of) his
concurrent logic programming language Guarded Horn Clause (GHC). The
talk will include how people who actually write application programs
feel, and Ueda's plan to refine GHC as a good logic programming
language, considering their response.
____________
LINGUISTICS DEPARTMENT COLLOQUIUM
Focusing on Phonological Phrases in Chichewa
Jonni M. Kanerva
Friday, 20 January, 3:15
Cordura Conference Room
From segment to word to phrase and beyond, each level of phonological
structure not only contains the forms of its parts but also adapts
their combination to that level's own patterns of form. The theory of
Prosodic Phonology is being developed as an explicit model of these
levels, their interrelationships, and their interactions with other
linguistic subsystems. In particular, the theory posits a hierarchy
of levels, two of which have received the majority of attention: the
intonational phrase (IP) and, one step down, the phonological phrase
(p-phrase). The IP is generally found to be a broad constituent,
often taking in an entire clause or more; its patterns of formation
show high variability with respect to syntactic constituent structure
and are sensitive to factors from semantics and discourse. The
p-phrase, on the other hand, is markedly smaller and is tightly
coupled to the syntax.
The evidence I present from Chichewa phrasal phonology presents a
rather different picture. Several lines of evidence converge to
locate IPs in Chichewa, yet much of the variability to be expected of
the IP occurs instead at the next level down. Prosodic constituents
at this level are medium-sized and, for a given syntactic structure,
may be formed into several alternate groupings. This indeterminacy
goes well beyond that allowed for p-phrases; it is resolved, though,
by taking into account the semantically and pragmatically motivated
feature focus. I conclude that, in order to maintain self-consistent
and meaningful prosodic levels, a new level in Prosodic Phonology, the
Focal Phrase, should be recognized between the IP and the p-phrase.
-----------
SYMBOLIC SYSTEMS FORUM
What Artificial Intelligence Is; What It Is Not
Stan Rosenschein
Computer Science and Teleos Research
Friday, 20 January, 3:15
Room 60:61J
Next week Peter Sells will speak on "Quantification in Natural
Language."
∂18-Jan-89 1842 @polya.Stanford.EDU:tah@linz MTC Seminar
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 18 Jan 89 18:42:45 PST
Received: from linz.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA14726; Wed, 18 Jan 89 18:41:43 PDT
Received: by linz.stanford.edu (5.59/25-eef) id AA22935; Wed, 18 Jan 89 18:36:02 PDT
Message-Id: <8901190236.AA22935@linz.stanford.edu>
To: lop@polya
Subject: MTC Seminar
Cc: liz <eswolf@polya>, martin <martin@polya>, csd@score
Reply-To: tah@cs.stanford.edu
Date: 18 Jan 89 18:35:58 PST (Wed)
From: Tom Henzinger <tah@linz>
The MTC Seminar will, as announced last week, continue this quarter,
Fridays at noon in MJH 301.
The first meeting will be on January 20. Lacking a better idea, Liz,
Martin (hope you're reading this!), and I are going to summarize last
week's POPL (i.e., each of us picks her/his favorite paper and gives
a short presentation, OK?).
We will also decide on a topic for the following weeks. Since there
is already John's seminar on types and semantics, I would like to see
us concentrate on concurrency this quarter.
-- Tom.
∂19-Jan-89 0820 tcr@sumex-aim.stanford.edu IBM ARC CS Seminar
Received: from sumex-aim.stanford.edu by SAIL.Stanford.EDU with TCP; 19 Jan 89 08:20:44 PST
Received: by sumex-aim.stanford.edu (4.0/inc-1.0)
id AA16061; Thu, 19 Jan 89 08:19:31 PST
Date: Thu, 19 Jan 1989 8:19:30 PST
From: TC Rindfleisch <tcr@sumex-aim.stanford.edu>
To: SSRG-Systems-Staff@sumex-aim.stanford.edu, AAP@sumex-aim.stanford.edu
Cc: Rindfleisch@sumex-aim.stanford.edu
Subject: IBM ARC CS Seminar
Message-Id: <CMM.0.88.601229970.tcr@sumex-aim.stanford.edu>
FYI re an IBM seminar of possible interest... Tom R.
---------------
IBM Almaden Research Center
650 Harry Road
San Jose, CA 95120-6099
CALENDAR
January 23 - 27, 1989
...
01/26 - PACKET ROUTING ALGORITHMS FOR FIXED-CONNECTION NETWORKS
T. Leighton, M.I.T.
Comp. Sci. Sem. Thurs., Jan. 26 1:00 P.M Room: Front Aud.
The development of efficient packet routing algorithms is a central
concern in the design of any large scale parallel computer. The reason
is obvious: it is important to get the right data to the right place
within a reasonable amount of time. For most parallel machines, the
data routing is performed on a well-structured network such as a
hypercube, butterfly or array. In the talk, we will survey the basic
techniques used for routing packets on such networks. In particular, we
will show how to solve any routing problem on these networks in near
optimal time using a randomized algorithm with combining.
The talk will be introductory in nature and represents recent joint work
with Bruce Maggs, Satish Rao and Abhiram Ranade.
Host: B. Simons
-----------------------------------------------------------------------
For further information on individual talks, please contact the host
listed above.
Visitors, please arrive 15 minutes early. IBM's Almaden Research
Center (ARC) is located adjacent to Santa Teresa County Park, between
Almaden Expressway and U.S. 101, about 10 miles south of Interstate
280. From U.S. 101, exit at Bernal Road, and follow Bernal Road west
past Santa Teresa Blvd. into the hills (ignoring the left turn for
Santa Teresa Park). Alternatively, follow Almaden Expressway to its
southern terminus, turn left onto Harry Road, then go right at the ARC
entrance (about a quarter of a mile later) and go up the hill. For
more detailed directions, please phone the ARC receptionist at (408)
927-1080.
IBM Almaden Research Center electronically distributes both its
complete calendar of seminars and a subset of Computer Science
seminars only. Send requests for inclusion in either electronic
mailing list to CALENDAR@IBM.COM (CALENDAR at ALMVMA on VNET or
BITNET), specifying either the complete calendar or the Computer
Science subset.
∂19-Jan-89 0835 HEMENWAY@Score.Stanford.EDU Need Someone for Orals Committee
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 19 Jan 89 08:35:15 PST
Date: Thu 19 Jan 89 08:33:28-PST
From: Sharon Hemenway <HEMENWAY@Score.Stanford.EDU>
Subject: Need Someone for Orals Committee
To: ac@Score.Stanford.EDU
Reply-To: Hemenway@Score.Stanford.EDU
Message-ID: <12463817334.22.HEMENWAY@Score.Stanford.EDU>
I am seeking someone who is willing to serve as the fourth, "random"
member of Mary Holstege's Oral Examination committee. The exam is
scheduled for the afternoon of Tuesday, Feb. 21 (I do realize that
this is the same time as Arun Swami's exam but, apparently, there was
no alternative.). The title of Mary's dissertation is "Marking and
the Design of Notations" and her advisor is Terry Winograd.
I apologize for this global appeal but I have not been able to find
anyone by asking individually so I thought I'd try this route.
Many thanks--
Sharon
-------
∂19-Jan-89 0908 HEMENWAY@Score.Stanford.EDU Let the Games Begin!
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 19 Jan 89 09:07:58 PST
Date: Thu 19 Jan 89 09:06:01-PST
From: Sharon Hemenway <HEMENWAY@Score.Stanford.EDU>
Subject: Let the Games Begin!
To: phd-adm@Score.Stanford.EDU
cc: nilsson@Score.Stanford.EDU, damon@Score.Stanford.EDU
Reply-To: Hemenway@Score.Stanford.EDU
Message-ID: <12463823261.22.HEMENWAY@Score.Stanford.EDU>
A hearty welcome to everyone on the PhD Admissions Committee! Your
"job" will only last about five weeks although there will be a lot to
do in that short period of time as we choose the 1989-90 entering
class.
We have scheduled the first meeting of the committee for 12 noon on
Thursday, Feb. 2 in MJH 252 (lunch to be provided). We anticipate
that we will begin distributing application folders on Friday, Feb. 3
so this meeting is quite important to discuss the procedures and
schedules that we will have to follow. We anticipate following last
year's schedule as closely as possible (largely because it worked
quite well). In rough outline, that means having four rounds of
readings between Feb. 3 and Feb. 17 with the Round 1 meeting around
Feb. 21. The round 2 readings would then take place between Feb. 22
and March 2 with the final meeting around March 6.
Please let me know if it is not possible for you to meet on Feb. 2
although I ask that you keep in mind that our tight time-table does
limit our scheduling possibilities. Also, please let me know right
away if you have any extended travel plans between Feb. 3 and March 10.
Thank you for your help.
Sharon
-------
∂19-Jan-89 1035 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu SIGACT News Deadline
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 19 Jan 89 10:35:23 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA04375; Thu, 19 Jan 89 10:34:14 PDT
Message-Id: <8901191834.AA04375@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Thu, 19 Jan 89 10:33:21 PST
Received: by BYUADMIN (Mailer R2.01A) id 6746; Thu, 19 Jan 89 11:33:00 MST
Date: Thu, 19 Jan 89 12:04:30 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
"Michael A. Langston" <langston@CS2.WSU.EDU>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: "Michael A. Langston" <langston@CS2.WSU.EDU>
Subject: SIGACT News Deadline
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
This is to remind potential contributors that the deadline for the next issue
of SIGACT News is imminent. Items received after February 1, 1989, will not
be published in the Winter 1989 issue.
Also, please note that a Transitions section has recently returned to the News.
(Refer to the Fall 1988 issue for details.) Send your input for this section
to me, preferably via email, marked for Transitions.
Mike Langston
langston@cs2.wsu.edu
(509) 335-6486
∂19-Jan-89 1049 @Score.Stanford.EDU:chandler@polya.Stanford.EDU The case of the missing fedora.....
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 19 Jan 89 10:49:22 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Thu 19 Jan 89 10:46:04-PST
Received: by polya.Stanford.EDU (5.59/25-eef) id AA05101; Thu, 19 Jan 89 10:47:03 PDT
Date: Thu, 19 Jan 1989 10:47:00 PST
From: "Joyce R. Chandler" <chandler@polya.stanford.edu>
To: faculty@score
Subject: The case of the missing fedora.....
Message-Id: <CMM.0.87.601238820.chandler@polya.stanford.edu>
Somebody left a brownish fedora at Nils' house on New Years Day. I have it
here in my office and Nils would love to reunite it with its owner. If it
belongs to you, or if you remember seeing someone wearing it, please let me know.
∂19-Jan-89 1126 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Last Call for Papers
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 19 Jan 89 11:25:57 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA07410; Thu, 19 Jan 89 11:25:15 PDT
Message-Id: <8901191925.AA07410@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Thu, 19 Jan 89 11:24:20 PST
Received: by BYUADMIN (Mailer R2.01A) id 8231; Thu, 19 Jan 89 12:20:54 MST
Date: Thu, 19 Jan 89 12:09:05 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Kerny McLaughlin <kerny@CS.COLUMBIA.EDU>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Kerny McLaughlin <kerny@CS.COLUMBIA.EDU>
Subject: Last Call for Papers
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
LAST CALL FOR PAPERS
Third Symposium on Complexity of Approximately Solved Problems
Computer Science Department
Columbia University
April 3-5, 1989
PROGRAM COMMITTEE:
Kenneth Arrow
Department of Economics
Stanford University
Stanford, California
Jerome Feldman
International Computer Science Institute
147 Center Street
Berkeley, California
Richard Karp
Computer Science Department
University of California at Berkeley
Berkeley, California
Christos Papadimitriou
Computer Science Department
University of California at San Diego
San Diego, California
Steven Smale
Mathematics Department
University of California at Berkeley
Berkeley, California
Joseph Traub
Computer Science Department
Columbia University
New York, New York
Henryk Wozniakowski
Computer Science Department
Columbia University
New York, New York
Donald Ylvisaker
Statistics Department
University of California at Los Angeles
Los Angeles, California
PARTIAL LIST OF SPEAKERS
PLENARY SPEAKERS:
Leon N. Cooper
Brown University
Steven Smale
University of California, Berkeley
INVITED SPEAKERS:
Yaser Abu-Mostafa
California Institute of Technology
Lenore Blum
International Computer Science Institute, Berkeley
Adam Bojanczyk
Cornell University
Terrance Boult
Columbia University
David Donoho
University of California, Berkeley
Zvi Galil
Columbia University
Feng Gao
University of British Columbia
Stefan Heinrich
Akademie der Wissenschaften der DDR
Ehud Kalai
Northwestern University
Mark Kon
Boston University
Marek A. Kowalski
University of Warsaw
J. Kuczynski
University of Warsaw
David Lee
AT&T Bell Laboratories
Leonid Levin
Boston University
Mario Milanese
Politecnico di Torino
Erich Novak
University of Erlangen
James Renegar
Cornell University
Donald Saari
Northwestern University
Michael Shub
IBM, T.J. Watson Research Center
K. Sikorski
University of Utah
Michael Steele
Princeton University
Aleksei Sukhare
Moscow State University
Prasoon Tiwari
IBM, T.J. Watson Research Center
John N. Tsitsiklis
Massachusetts Institute of Technology
Umesh Vazirani
University of California, Berkeley
Grace Wahba
University of Wisconsin
Greg Wasilkowski
University of Kentucky
Arthur Werschulz
Columbia University
Henryk Wozniakowski
Columbia University
Yosef Yomdin
Institute for Advanced Study, Princeton
SOME OF THE TOPICS TO BE ADDRESSED ARE:
Average Case Analysis of Algorithms Neural Nets
Computational Complexity Optimal Recovery
Computer Vision Parallel Computation
Connectionist Models Prediction and Estimation
Continuous Complexity Random Algorithms
Decision Theory Random Complexity
Design of Experiment Robotics
Distributed Complexity Scientific Computation
Information-Based Complexity Seismology
Inverse Problems Signal Processing
Mathematical Economics
CONTRIBUTED PAPERS: All appropriate papers for which abstracts are
contributed will be scheduled. Contributed papers will be twenty
minutes in length.
To contribute a paper send title, author, affiliation, and abstract on
a single 8 1/2 by 11 sheet of paper or by electronic mail.
The above can be sent by U.S. mail to:
J.F. Traub
Computer Science Department
Columbia University
450 Computer Science Building
New York, New York 10027
Electronic Mail: kerny@cs.columbia.edu
TITLES AND ABSTRACTS MUST BE RECEIVED BY NO LATER THAN FEBRUARY 1, 1989
PUBLICATION: Invited papers will be published in the Journal of Complexity.
REGISTRATION: The symposium will be held in the Kellogg Conference
Center, on the fifteenth floor of the International Affairs Building,
Columbia University, 118th Street and Amsterdam Avenue. Registration
will start at 9:00 a.m. THERE IS NO REGISTRATION CHARGE.
FOR FURTHER INFORMATION: The program schedule will be sent
electronically about March 1, 1989. If you have any questions,
contact Kerny McLaughlin, Computer Science Department, Columbia
University, (212) 854-2736.
To help us plan the symposium please complete the information
below and return by U.S. Mail to Traub or by electronic mail to
kerny@cs.columbia.edu.
-------------------------------------------
SYMPOSIUM ON COMPLEXITY OF APPROXIMATELY SOLVED PROBLEMS
April 3-5, 1989
Name:
Affiliation:
Address:
[ ] I will attend the Complexity Symposium.
[ ] I may attend the Complexity Symposium.
[ ] I will contribute a paper.
∂19-Jan-89 2324 hoffman@csli.Stanford.EDU Symbolic Systems Forum Reminder
Received: from csli.Stanford.EDU by SAIL.Stanford.EDU with TCP; 19 Jan 89 23:24:37 PST
Received: by csli.Stanford.EDU (4.0/inc-1.0)
id AA06774; Thu, 19 Jan 89 23:16:57 PST
Date: Thu 19 Jan 89 23:16:56-PST
From: Reid Hoffman <HOFFMAN@CSLI.Stanford.EDU>
Subject: Symbolic Systems Forum Reminder
To: TheForum@csli.Stanford.EDU
Message-Id: <601283816.0.HOFFMAN@CSLI.Stanford.EDU>
Mail-System-Version: <SUN-MM(242)+TOPSLIB(128)@CSLI.Stanford.EDU>
The Symbolic Systems Forum -- Jan. 20th -- will host
Professor Stan Rosenschein (CS and Teleos Research, Inc.),
speaking on
What Artificial Intelligence is;
What Artificial Intelligence is not.
Time: 3:15
Room: 60-61j
Building: 60 (to the right of Memorial Church as you walk
in from the Oval)
Chocolate Chip Cookies and Refreshments provided.
(CSLI Internships will also announced.)
-------
∂20-Jan-89 0852 @Score.Stanford.EDU:chandler@polya.Stanford.EDU Faculty Lunch
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 20 Jan 89 08:52:27 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Fri 20 Jan 89 08:48:27-PST
Received: by polya.Stanford.EDU (5.59/25-eef) id AA18532; Fri, 20 Jan 89 08:49:27 PDT
Date: Fri, 20 Jan 1989 8:49:25 PST
From: "Joyce R. Chandler" <chandler@polya.stanford.edu>
To: faculty@score, bureaucrats@score, phd-prcom@score
Subject: Faculty Lunch
Message-Id: <CMM.0.87.601318165.chandler@polya.stanford.edu>
The next faculty lunch will be held in MJH-146 next Tuesday, 1/24. Ed
Feigenbaum, Bob Floyd and Mike Genesereth will talk about how the Stanford CS
Department ought to train PhD students. THIS MEETING WILL BEGIN PROMPTLY AT
12:10.......Yes, that's 12:10, not 12:15ish.
See you there!
∂20-Jan-89 1049 @Score.Stanford.EDU:chandler@polya.Stanford.EDU CSD Retreat
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 20 Jan 89 10:49:10 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Fri 20 Jan 89 10:41:34-PST
Received: by polya.Stanford.EDU (5.59/25-eef) id AA23664; Fri, 20 Jan 89 10:42:32 PDT
Date: Fri, 20 Jan 1989 10:42:11 PST
From: "Joyce R. Chandler" <chandler@polya.stanford.edu>
To: faculty@score, brown@sumex-aim, engelmore@sumex-aim, ok@sail, val@sail,
nii@sumex-aim, ponce@coyote, rindfleisch@sumex-aim
Cc: chandler@polya.Stanford.EDU
Subject: CSD Retreat
Message-Id: <CMM.0.87.601324932.chandler@polya.stanford.edu>
We're looking at the weekend of 5/5-7 to have the annual CSD retreat. In
order to begin making plans I will need to know your interest in attending.
Are you:
1. Definitely planning to attend?
2. Maybe planning to attend?
3. Definitely not planning to attend?
∂20-Jan-89 1230 LOGMTC-mailer seminar in logic
Received: from csli.Stanford.EDU by SAIL.Stanford.EDU with TCP; 20 Jan 89 12:30:28 PST
Received: by csli.Stanford.EDU (4.0/inc-1.0)
id AA19341; Fri, 20 Jan 89 12:28:47 PST
Date: Fri 20 Jan 89 12:28:46-PST
From: Sol Feferman <SF@CSLI.Stanford.EDU>
Subject: seminar in logic
To: logic@csli.Stanford.EDU
Message-Id: <601331326.0.SF@CSLI.Stanford.EDU>
Mail-System-Version: <SUN-MM(242)+TOPSLIB(128)@CSLI.Stanford.EDU>
Seminar in Logic and Foundations
Speaker: Prof. Philip Scowcroft, Mathematics, Stanford
Title: "Introduction to Intuitionistic Mathematics" (first of two lectures)
Time: Tues. Jan 24, 4:15-5:30 PM
Place: Room 381-T, Math Corner Stanford
S. Feferman
-------
∂20-Jan-89 1532 @Score.Stanford.EDU:latombe@coyote.stanford.edu Re: CSD Retreat
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 20 Jan 89 15:32:32 PST
Received: from coyote.stanford.edu by SCORE.STANFORD.EDU with TCP; Fri 20 Jan 89 15:28:00-PST
Received: by coyote.stanford.edu; Fri, 20 Jan 89 14:52:29 PST
Date: Fri, 20 Jan 89 14:52:29 PST
From: Jean-Claude Latombe <latombe@coyote.stanford.edu>
Subject: Re: CSD Retreat
To: brown@sumex-aim.Stanford.EDU, chandler@polya.stanford.edu,
engelmore@sumex-aim.Stanford.EDU, faculty@score.Stanford.EDU,
nii@sumex-aim.Stanford.EDU, ok@sail.Stanford.EDU,
ponce@coyote.Stanford.EDU, rindfleisch@sumex-aim.Stanford.EDU,
val@sail.Stanford.EDU
I am in case 2
JCL
∂20-Jan-89 1630 @polya.Stanford.EDU:decwrl!decvax!gatech!cs.utexas.edu!utep-vaxa!teodor@labrea.stanford.edu mailing list
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 20 Jan 89 16:27:02 PST
Received: from labrea.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA12021; Fri, 20 Jan 89 16:24:04 PDT
Received: from decwrl.dec.com by labrea.stanford.edu with TCP; Fri, 20 Jan 89 16:22:50 PST
Received: from decvax.dec.com by decwrl.dec.com (5.54.5/4.7.34)
for labrea!polya.stanford.edu!nail; id AA01891; Fri, 20 Jan 89 16:22:52 PST
Received: from cs.utexas.edu.UUCP with UUCP by gatech.edu (5.58/GATECH-8.6)
id AA09176 for ; Fri, 20 Jan 89 18:43:07 EST
Posted-Date: Fri, 20 Jan 89 13:27:52 MST
Received: by cs.utexas.edu (5.59/1.23)
id AA15012; Fri, 20 Jan 89 15:00:23 CST
Received: by utep-vaxa.UUCP (5.51/smail2.2/03-26-87)
id AA02886; Fri, 20 Jan 89 13:27:52 MST
Date: Fri, 20 Jan 89 13:27:52 MST
From: decwrl!decvax!gatech!cs.utexas.edu!utep-vaxa!teodor@labrea.stanford.edu (teodor%utep.uucp@cs.utexas.edu [Teodor C. Przymusinski])
Message-Id: <8901202027.AA02886@utep-vaxa.UUCP>
To: polya.stanford.edu!nail@cs.utexas.edu
Subject: mailing list
Please my new address to the nail mailing list:
teodor%utep.uucp@cs.utexas.edu
and delete my old address:
teodor@utep.bitnet
Thank you!
Teodor Przymusinski
∂21-Jan-89 0042 hoffman@csli.Stanford.EDU Symbolic Systems Forum Jan 27th
Received: from csli.Stanford.EDU by SAIL.Stanford.EDU with TCP; 21 Jan 89 00:42:07 PST
Received: by csli.Stanford.EDU (4.0/inc-1.0)
id AA05943; Sat, 21 Jan 89 00:35:32 PST
Date: Sat 21 Jan 89 00:35:31-PST
From: Reid Hoffman <HOFFMAN@CSLI.Stanford.EDU>
Subject: Symbolic Systems Forum Jan 27th
To: TheForum@csli.Stanford.EDU
Message-Id: <601374931.0.HOFFMAN@CSLI.Stanford.EDU>
Mail-System-Version: <SUN-MM(242)+TOPSLIB(128)@CSLI.Stanford.EDU>
The Symbolic Systems Forum, Jan. 27th
Time: 3:15PM
Place: Building 60, Room 62N (although it may also relocate to another room
in the building, in which case it will be posted.)
Professor Peter Sells (Linguistics) will speak on
Quantification in Natural Language
In this talk I'd like to look at the relation between a first-order
logic style representation for quantification and the way that
quantificational structures are manifest in natural languages, and the
way in which that interacts with other "variable"-like elements in natural
language, such as pronouns. There has been quite a lot of work in
recent years on existential quantification in natural languages, which
seems to diverge quite a lot from the picture you would expect from
standard logic, and I'll probably concentrate on that, using data from
English and Japanese.
The talk is open to the general public. To add yourself to the mailing list,
send mail to hoffman@csli.stanford.edu.
-------
∂21-Jan-89 1406 byrd@sumex-aim.stanford.edu object-oriented paper
Received: from sumex-aim.stanford.edu by SAIL.Stanford.EDU with TCP; 21 Jan 89 14:06:32 PST
Received: by sumex-aim.stanford.edu (4.0/inc-1.0)
id AA12545; Sat, 21 Jan 89 14:05:42 PST
Date: Sat, 21 Jan 1989 14:05:41 PST
From: Greg Byrd <byrd@sumex-aim.stanford.edu>
To: aap@sumex-aim.stanford.edu
Subject: object-oriented paper
Message-Id: <CMM.0.88.601423541.byrd@sumex-aim.stanford.edu>
I just got a the paper, "Inheritance in Actor Based Concurrent
Object-Oriented Languages," by Kafura and Keung (Va. Tech) that
was mentioned in the net a couple of weeks ago. If anyone wants
to see it (or copy it) let me know.
...Greg
∂23-Jan-89 1016 @Score.Stanford.EDU:winograd@loire.stanford.edu PhD program discussion
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 23 Jan 89 10:16:40 PST
Received: from loire.stanford.edu by SCORE.STANFORD.EDU with TCP; Mon 23 Jan 89 10:08:28-PST
Received: by loire.stanford.edu (5.59/25-eef) id AA26177; Mon, 23 Jan 89 10:08:22 PDT
Date: Mon, 23 Jan 89 10:08:22 PDT
Message-Id: <8901231808.AA26177@loire.stanford.edu>
From: Terry Winograd <Winograd@csli.stanford.edu>
To: faculty@score
Subject: PhD program discussion
I am giving a colloquium at UCLA tomorrow and can't be here for the
lunch discussion, so I wanted to toss in a couple of points that I
hope won't be forgotten:
1) Not all of our PhD students see their career as devoted to
research. Traditionally, the PhD is a degree for people who will teach
in universities, and even though current career economics in our
discipline militate against it, it is still important that we think
about how we are training the next generation of teachers. We might
start by asking "What aspects of our own training have contributed to
the problems we see in the educational program here?"
2) People with a narrow training in a subdiscipline may do the fastest
research, but in the long run they don't do the best research. Many
things that appear only tangentially relevant when they are learned
will turn out to give key insights at a later point. The problem is
that you can't tell ahead of time which ones they will be, so the only
way to have them available is to have some breadth and diversity in
what you learn.
3) No set of requirements is right for everyone, and no mechanical
application of rules will make it work. In some venerable traditions
of education, a faculty mentor takes on the responsibility for working with
a student to develop a full education, not just the skills necessary for
doing good work on a sponsored project. This kind of individual
concern is much more effective than any set of procedures. How do we
foster it in general? How do we make it available to all students,
not just those with a particular interest area or those who are perceived
of as being at the top of the heap?
--t
∂23-Jan-89 1048 debra@russell.Stanford.EDU REMINDER
Received: from russell.Stanford.EDU by SAIL.Stanford.EDU with TCP; 23 Jan 89 10:48:28 PST
Received: from localhost by russell.Stanford.EDU (4.0/inc-1.0)
id AA13798; Mon, 23 Jan 89 10:48:50 PST
Message-Id: <8901231848.AA13798@russell.Stanford.EDU>
To: evesem@russell.Stanford.EDU
Cc: debra@russell.Stanford.EDU, kuder@russell.Stanford.EDU
Subject: REMINDER
Date: Mon, 23 Jan 89 10:48:48 PST
From: Debra Alty <debra@russell.Stanford.EDU>
REMINDER
The next EVENING SEMINAR will be Wednesday, February 25th @ 7:30pm in
the CSLI Cordura conference Room.
Professor John McCarthy, Computer Science Department, will be leading
the discussion.
The following will be served:
Antipasto tray Cognac
meats Wine
marinated vegetables Beer
relishes Sparkling Waters
Cheese Coffee
Crackers/Bread Tea
Strawberries dipped
in chocolate
Debra
If you have any menu request and/or suggestions, please feel free to
EM me -- the menu is very flexible.
debra@csli.stanford.edu
∂23-Jan-89 1051 X3J13-mailer Issues DECLARATION-SCOPE and DEFINING-MACROS-NON-TOP-LEVEL
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 23 Jan 89 10:51:37 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 525301; Mon 23-Jan-89 13:49:15 EST
Date: Mon, 23 Jan 89 13:49 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: Issues DECLARATION-SCOPE and DEFINING-MACROS-NON-TOP-LEVEL
To: sandra%defun@cs.utah.edu, X3J13@sail.stanford.edu
Message-ID: <19890123184939.6.MOON@EUPHRATES.SCRC.Symbolics.COM>
Since the X3J13 meeting last week passed DECLARATION-SCOPE:NO-HOISTING
(instead of LIMITED-HOISTING), it is no longer possible to make a declaration
that applies to an entire DEFUN, DEFMACRO, or DEFMETHOD by placing a DECLARE
at the head of the body. Such declarations have been incompatibly changed
to apply only to the body.
The problem is that (LOCALLY (DECLARE ...) (DEFUN ...)) cannot be used as
the new way to say what used to be said as (DEFUN ... (DECLARE ...) ...),
even though side-discussion at the meeting indicated that some people
thought that was a valid workaround. DEFINING-MACROS-NON-TOP-LEVEL
does not list LOCALLY as one of the forms whose body is handled at top
level. CLtL says LOCALLY is a macro, but doesn't say what it macroexpands
into. Presumably it macroexpands into a LET that doesn't bind any variables,
which DEFINING-MACROS-NON-TOP-LEVEL says (or implies) does not have a body
that is handled at top level.
Assuming the vote on DECLARATION-SCOPE is not likely to be reversed, I
think DEFINING-MACROS-NON-TOP-LEVEL needs to be modified to treat the
body of LOCALLY as top-level. If this requires changing LOCALLY from a
macro to a special form, so be it.
∂23-Jan-89 1059 debra@russell.Stanford.EDU EVENING SEMINAR REMINDER
Received: from russell.Stanford.EDU by SAIL.Stanford.EDU with TCP; 23 Jan 89 10:59:35 PST
Received: from localhost by russell.Stanford.EDU (4.0/inc-1.0)
id AA13873; Mon, 23 Jan 89 10:59:57 PST
Message-Id: <8901231859.AA13873@russell.Stanford.EDU>
To: evesem@russell.Stanford.EDU
Subject: EVENING SEMINAR REMINDER
Date: Mon, 23 Jan 89 10:59:56 PST
From: Debra Alty <debra@russell.Stanford.EDU>
The date of the next EVENING SEMINAR should have read:
JANUARY 25th, not February!
Sorry for the error.
Debra
∂23-Jan-89 1409 X3J13-mailer Second edition of "Common Lisp: The Language"
Received: from Think.COM by SAIL.Stanford.EDU with TCP; 23 Jan 89 14:09:07 PST
Received: from fafnir.think.com by Think.COM; Mon, 23 Jan 89 16:45:35 EST
Return-Path: <gls@Think.COM>
Received: from verdi.think.com by fafnir.think.com; Mon, 23 Jan 89 17:05:55 EST
Received: by verdi.think.com; Mon, 23 Jan 89 17:04:42 EST
Date: Mon, 23 Jan 89 17:04:42 EST
From: Guy Steele <gls@Think.COM>
Message-Id: <8901232204.AA14004@verdi.think.com>
To: x3j13@sail.stanford.edu
Subject: Second edition of "Common Lisp: The Language"
The following is a paraphrase of what I announced at the last X3J13
meeting in Hawaii.
I am now working fairly full steam on a second edition of CLtL. Digital
Press would like to have it out this summer, and I think that would be the
optimal timing for it. The purpose of a second edition is to provide the
implementation and user community with feedback on what X3J13 has done so
far, in a manner that links the committee's decisions with the current
structure of CLtL. (The eventual standard will be organized in a
completely different manner.) This will provide a bridge between the first
edition of five years ago and the eventual standard (which may be another
two or more years away). In addition, I will be adding commentary of my
own about difficult places in the language, more examples, etc. For
example, I am attempting to explain nested backquotes so you can understand
them. I also promise that the second edition will have a better index.
The second edition will contain the entire contents of the first edition.
New material will be distinguished from the old, and clearly marked as to
whether it is the result of an X3J13 vote, an informal comment that came up
in X3J13 meetings, or my own commentary. The preface will contain
appropriate disclaimers, including that additional meetings and a public
review period are yet to come, that X3J13 may reverse any decision at any
time, that X3J13 does not officially endorse the second edition, that
no member of X3J13 necessarily endorses what I write, and that where new
examples conflict with old material or with X3J13 votes, the new examples
have lesser priority (I hope this doesn't occur!).
I plan to include material on cleanups and compiler cleanups so far. I
would like to include the condition system and LOOP. Dick Waters also once
spoke to me about including an appendix on OSS in order to publicize this
alternative approach to iteration; now that OSS and generators seem to be
converging, I'm not sure what would be appropriate, but am open to
suggestions.
I do *not* plan to include any material about CLOS beyond a short overview
of five to ten pages, plus a few inserts describing such general features
as PRINT-OBJECT and SYMBOL-MACROLET that impinge on the rest of the
language. I will include pointers to CLOS chapters 1 and 2 as published
in LASC and SIGPLAN Notices, and to Sonya Keene's book (I certainly
couldn't do any better than she did).
I will be relying on work done by a lot of people, and I will be asking
some of you for very specific help in the next few weeks. It seems to me
that these many people ought to benefit from the royalties generated.
I looked into various methods of compensation, but it became extremely
complicated, both procedurally and legally, and there was always th
danger of overlooking someone. I have turned instead to the notion of
donating royalties toward some worthy cause(s) that would benefit the
Lisp community at large. (This idea met with general informal approval
at the last X3J13 meeting when I announced it.) I first looked into
financing travel so that students could attend the coming Lisp and
History of Lisp (LISPHOL) Conference; SIGPLAN has a fund for that purpose.
It turns out that this fund is undersubscribed; SIGPLAN has more funds
than applications, and David Wise urged me to look for some other project.
Two more promising possibilities are underwriting some of the costs
of making good historical records at LISPHOL, and donating funds to
The Computer Museum to establish a collection and perhaps exhibits
on the History of Lisp. I would be glad to receive other suggestions
for appropriate projects.
I hope to have a complete draft ready within several weeks. I will be
sending a copy of this draft to every member of X3J13. To be useful,
feedback would be needed within a few weeks. (Note that the new material
will be distinguished by some typographical device such as lines in the
margins, so you shouldn't have to read an entire 500-page draft!) I will
also send a copy of the finished, published book to every member of X3J13
once it is available, as well as to certain other persons who have made
contributions.
--Guy
∂23-Jan-89 1423 X3J13-mailer cl-compiler issues
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 23 Jan 89 14:23:03 PST
Received: from defun.utah.edu by cs.utah.edu (5.59/utah-2.1-cs)
id AA11470; Mon, 23 Jan 89 15:21:37 MST
Received: by defun.utah.edu (5.59/utah-2.0-leaf)
id AA19082; Mon, 23 Jan 89 15:21:33 MST
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8901232221.AA19082@defun.utah.edu>
Date: Mon, 23 Jan 89 15:21:32 MST
Subject: cl-compiler issues
To: x3j13@sail.stanford.edu
At the Hawaii meeting, the following cl-compiler issues were passed:
ALLOW-LOCAL-INLINE
DEFCONSTANT-SPECIAL (amended)
LOAD-TIME-EVAL (amended)
SHARP-COMMA-CONFUSION
COMPILE-FILE-HANDLING-OF-TOP-LEVEL-FORMS (amended)
CONSTANT-MODIFICATION
Copies of these proposals (incorporating the amendments) are available
for anonymous FTP from cs.utah.edu (that's 128.110.4.21), in directory
cl-compiler/passed. There are also copies of the proposals that were
passed at the October meeting in this directory.
Also, I want to remind you all that we are still soliciting comments
on the remaining issues that were distributed earlier this month. In
particular, issue COMPILE-ENVIRONMENT-CONSISTENCY was tabled because
some people at the meeting indicated they wanted to see some changes
to the writeup, and I need to know what those changes are.
E-mail on compiler issues should be sent to cl-compiler@sail.stanford.edu.
We appreciate it if you send a separate message for each issue, and
include the issue name in the message subject line.
-Sandra
-------
∂23-Jan-89 1459 @Score.Stanford.EDU:jle@Orange.stanford.edu CS Colloquia
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 23 Jan 89 14:59:18 PST
Received: from Orange.stanford.edu by SCORE.STANFORD.EDU with TCP; Mon 23 Jan 89 14:53:28-PST
Received: by Orange.stanford.edu (5.59/25-eef) id AA03057; Mon, 23 Jan 89 14:53:49 PDT
Date: Mon, 23 Jan 89 14:53:49 PDT
From: Jeffrey Eppinger <jle@Orange.stanford.edu>
Message-Id: <8901232253.AA03057@Orange.stanford.edu>
To: faculty@score
Subject: CS Colloquia
Due to scheduling problems, there will be no CS Colloquium on January 31, 1989.
The next CS Colloquium will be on February 14th. (This colloquium is also the
second of this year's Forsythe Lectures.)
Computer Science Colloquium
Tuesday, February 14, 1989, 4:15pm
Jordan Hall (Building 420), Room 040
Stanford University
Perception via Active Exploration
Examples of Disassembly
Ruzena Bajcsy
Computer and Information Science Department
University of Pennsylvania
Philadelphia, PA 19104-6389
Abstract
It has been accepted by most psychologists (e.g., Gibson) that perception
is an active process, that is, an interaction of the perceptual system with
its environment. In this presentation we shall limit the perceptual system
to only two modalities: the Visual and the Haptic. The goal of our work is
to answer *what are the primitive actions and attributes* that are measurable
and or computable from Visual and Haptic modality that are necessary for
dissassembly of a scene or a two part-object. While a great deal of attention
has been paid to visual information processing both in psychological and
machine perception literature, haptic processing always took the second seat.
Haptic information processing is the identification of objects by touch (the
use of kinesthetic and tactile information). We shall develop a theory and
present two experiments to show an existential proof of our theory. Another
obvious observation is that vision is limited, especially in discerning two
separate objects when touching from the case of part-whole relationship of
one object. Take an example of a cup on a saucer. From vision alone one
cannot establish whether the saucer is glued to the cup or the cup is just
sitting on the saucer. The only way to disambiguate this situation is to
pick up the cup or shake it, in other words to perform some manipulation
operation.
The goal of this research is perception (apprehension) via exploration.
This means to us data driven perception which results in discerning solid
separable objects and describing them in terms of their structural and
geometric properties. Our aim is to explore complex scenes composed of more
than one object in arbitrary positions. Our basic hypothesis is that this
cannot be done by vision alone, that one needs some possibilities of
manipulation and the use of haptic information processing. Much of our
stimulation, especially in the area of haptic information processing, comes
from the studies and discussions of Klatzky and Lederman.
∂23-Jan-89 1503 misha@polya.Stanford.EDU TWO AFLB talks this week!
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 23 Jan 89 15:03:39 PST
Received: by polya.Stanford.EDU (5.59/25-eef) id AA12735; Mon, 23 Jan 89 15:00:37 PDT
Date: Mon, 23 Jan 89 15:00:37 PDT
From: Michael Kharitonov <misha@polya.Stanford.EDU>
Message-Id: <8901232300.AA12735@polya.Stanford.EDU>
To: aflb-all@polya.Stanford.EDU
Subject: TWO AFLB talks this week!
David Shmoys from MIT will give a talk TOMORROW, Jan 24, at 4:15
in room 301. The talk will be:
Approximation Algorithms for
Constrained Parallel Machine Scheduling Problems
In this talk, we consider the effect of precedence constraints
on the complexity of scheduling problems.
In particular, we shall consider the following scheduling problem:
there are n independent jobs to be scheduled on m identical parallel
machines; each job may scheduled only after a specified release
date; each job has a due date, and the objective is minimize
the maximum lateness. If, in addition, there are precedence
constraints, we show that a simple heuristic delivers
solutions that are no worse than twice optimal, and by
a result of Lenstra & Rinnooy Kan, no algorithm exists that guarantees
better than a factor of 4/3 unless P=NP. Without precedence constraints,
we present a polynomial approximation scheme. For scheduling problems
with precedence constraints, it is typical that no algorithms are known
that guarantee better than a factor of 2, but in the special case where
m=1, the first result can be improved to a factor of 4/3.
--------------------------------------------------------
Eva Tardos from MIT will speak at the regular AFLB meeting on Thursday
at 12:30 in room 352. The title of her talk is:
Combinatorial algorithhms for the generalized
network flow problem
(joint work with Andrew Goldberg and Serge Plotkin)
∂23-Jan-89 1518 saraiya@sumex-aim.stanford.edu [Nevena Raykovic <nevena@pescadero.stanford.edu> : CS548-Distributed
Received: from sumex-aim.stanford.edu by SAIL.Stanford.EDU with TCP; 23 Jan 89 15:18:39 PST
Received: by sumex-aim.stanford.edu (4.0/inc-1.0)
id AA05884; Mon, 23 Jan 89 15:17:13 PST
Date: Mon, 23 Jan 1989 15:17:13 PST
From: Nakul P. Saraiya <saraiya@sumex-aim.stanford.edu>
To: aap@sumex-aim.stanford.edu
Subject: [Nevena Raykovic <nevena@pescadero.stanford.edu> : CS548-Distributed
Systems Seminar ]
Message-Id: <CMM.0.88.601600633.saraiya@sumex-aim.stanford.edu>
From: Nevena Raykovic <nevena@pescadero.stanford.edu>
To: colloq@score.stanford.edu
Cc: dsgworld@pescadero.stanford.edu
Subject: CS548-Distributed Systems Seminar
The seminar will be held on Thursday, Jan. 26 at 4:15 in Margaret Jacks
Hall - room 352.
Synchronization in Parallel Programs
Helen Davis
Delays at synchronization points can substantially increase the run
time of a parallel program. This makes it important to characterize
the synchronization behavior of programs and to provide analysis tools
to aid both the hardware and software designer in evaluating design
alternatives. This talk will describe a tracing facility that permits
fast tracing of the synchronization (and shared memory reference) behavior
of parallel programs.
We have used this facility to study several applications running on
a moderate number of processors. Several program characteristics that can
limit speedup were uncovered and will be discussed. Extensions that allow
us to trace the behavior of programs that use more processors than are
currently available will also be discussed.
∂23-Jan-89 1722 TAJNAI@Score.Stanford.EDU "taxes on gifts"
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 23 Jan 89 17:22:52 PST
Date: Mon 23 Jan 89 17:18:42-PST
From: Carolyn Tajnai <TAJNAI@Score.Stanford.EDU>
Subject: "taxes on gifts"
To: faculty@Score.Stanford.EDU, srstaff@Score.Stanford.EDU
cc: hiller@Score.Stanford.EDU
Message-ID: <12464961527.14.TAJNAI@Score.Stanford.EDU>
The following memo was received from Prof. Levinthal. Please send your
comments to me.
17-Jan-89 14:41:15-PST,4121;000000000001
Return-Path: <leboeuf@sierra.STANFORD.EDU>
Received: from sierra.STANFORD.EDU by SCORE.STANFORD.EDU with TCP; Tue 17 Jan 89 14:41:11-PST
Received: by sierra.STANFORD.EDU (3.2/4.7); Tue, 17 Jan 89 14:39:19 PST
From: leboeuf@sierra.STANFORD.EDU (Kelly O. LeBoeuf)
Date: Tue, 17 Jan 1989 14:39:18 PST
To: ashley@sierra.STANFORD.EDU, hughes@sierra.STANFORD.EDU,
crsteele@sierra.STANFORD.EDU, lbbauman@sierra.STANFORD.EDU,
tajnai@sierra.STANFORD.EDU, fondahl@sierra.STANFORD.EDU,
barkan@sierra.STANFORD.EDU, design@sierra.STANFORD.EDU,
leifer@sierra.STANFORD.EDU, krawinkler@sierra.STANFORD.EDU,
kiremidjian@sierra.STANFORD.EDU, lb.jls@forsythe,
hausman@sierra.STANFORD.EDU, hellman@isl, tiller@sierra.STANFORD.EDU,
ca.foh@forsythe, pease@sierra.STANFORD.EDU, inan@sierra.STANFORD.EDU,
journel@sierra.STANFORD.EDU, jpj@sierra.STANFORD.EDU,
hghuntington@sierra.STANFORD.EDU
Cc: levinthal@sierra.STANFORD.EDU
Subject: Affiliate Programs
SCHOOL OF ENGINEERING
MEMORANDUM
JANUARY 17, 1989
To: Distribution
From: Elliott Levinthal
Associate Dean for Research
Subject: AFFILIATE PROGRAMS
There has been considerable discussion at various levels in the
University about what has been come to be called "taxes on gifts".
The fundamental question is whether or not some of the indirect
costs that are generated by the expenditure of gifts should be
recovered. Included in the question are gifts to individuals,
Affiliates programs and Centers. In order to be able to properly
deal with this issue as it might impact Affiliate programs, it is
urgent that we have we have more information. Dean Gibbons and
I are meeting with Robert Byer, Vice- Provost for Research, January
30, 1989 and we would like to be as well informed as possible at
that time. Please respond no later than Friday, January 27th. I
realize that this doesn't give you much time. However, we do not
need precise numbers at this time.
The questions, for which I need answers, relate to the income of the
Affiliate programs and the allocation of that income.
I. Income:
a. What is the total annual income for your Affiliate program?
Give last years and the current year. Estimate the current year, if
the total is not known.
b. How many members did you have last year and do you have
in the current year?
c. What is the annual fee.
II. Allocations:
What fraction of the income is spent in the following
categories?
a. General academic support of the Department or Division in
which the Affiliate program resides.
b. Support of educational goals such as curricula development or
scheduled courses.
c. Administration of the Affiliate program itself, including
travel to maintain the program, etc.
d. Research support of the Affiliated faculty as a whole and
under the budgetary control of the group as a whole.
e. Allocated to an individual faculty discretionary fund
account.
Are there other categories that more accurately describe the
allocation of your funds?
Please give me any other information that you feel will be
useful in considering this issue.
MEETING NOTICE....MEETING NOTICE......:
We will be having a meeting of the School of Engineering
Research Advisory committee on January 27, 1989 at 3 pm in
Durand Room 450, This issue will be the sole topic on the agenda.
Please feel free to attend that meeting.
DISTRIBUTION:
Holt Ashley Thomas Hughes
Charles Steele Michel Boudart
Lindi Bauman Carolyn Tajnai
John Fondahl Philip Barkan
Lori Magee Larry Leifer
Helmut Krawinkler Anne Kiremidjian
James Sweeney Warren Hausman
Martin Hellman William Tiller
Frederick Hillier Fabian Pease
Umran Inan Andre Journel
James Johnston Hillard Huntington
-------
∂24-Jan-89 0852 @Score.Stanford.EDU:gio@sumex-aim.stanford.edu Re: "taxes on gifts"
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 24 Jan 89 08:51:55 PST
Received: from sumex-aim.stanford.edu by SCORE.STANFORD.EDU with TCP; Tue 24 Jan 89 08:48:42-PST
Received: by sumex-aim.stanford.edu (4.0/inc-1.0)
id AA21391; Tue, 24 Jan 89 08:50:02 PST
Date: Tue, 24 Jan 1989 8:50:02 PST
From: Gio Wiederhold <gio@sumex-aim.stanford.edu>
To: Carolyn Tajnai <TAJNAI@score.stanford.edu>
Cc: faculty@score.stanford.edu, srstaff@score.stanford.edu,
hiller@score.stanford.edu, faculty@score.stanford.edu
Subject: Re: "taxes on gifts"
In-Reply-To: Your message of Mon 23 Jan 89 17:18:42-PST
Message-Id: <CMM.0.88.601663802.gio@sumex-aim.stanford.edu>
I am afraid I agree with a modest tax on gift income, to offset the excessive
sponsored grants burden. What will the controls be? Gio
∂24-Jan-89 0905 TAJNAI@Score.Stanford.EDU Re: "taxes on gifts"
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 24 Jan 89 09:05:01 PST
Date: Tue 24 Jan 89 09:00:34-PST
From: Carolyn Tajnai <TAJNAI@Score.Stanford.EDU>
Subject: Re: "taxes on gifts"
To: gio@SUMEX-AIM.Stanford.EDU
cc: faculty@Score.Stanford.EDU, srstaff@Score.Stanford.EDU,
hiller@Score.Stanford.EDU, faculty@Score.Stanford.EDU
In-Reply-To: <CMM.0.88.601663802.gio@sumex-aim.stanford.edu>
Message-ID: <12465132989.22.TAJNAI@Score.Stanford.EDU>
The only figure I have heard is that they are considering 10% tax when the
money is spent. This information came from Stanley Peters.
Carolyn
-------
∂24-Jan-89 0942 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu POSITION ANNOUNCEMENT
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 24 Jan 89 09:42:51 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA18547; Tue, 24 Jan 89 09:42:18 PDT
Message-Id: <8901241742.AA18547@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Tue, 24 Jan 89 09:41:01 PST
Received: by BYUADMIN (Mailer R2.01A) id 3062; Tue, 24 Jan 89 10:40:16 MST
Date: Tue, 24 Jan 89 10:25:59 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
DJMCGUINNESS%GALLUA.BITNET@forsythe.stanford.edu
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: DJMCGUINNESS%GALLUA.BITNET@forsythe.stanford.edu
Subject: POSITION ANNOUNCEMENT
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
GALLAUDET UNIVERSITY
Department of Mathematics
and Computer Science
Applications are invited for a tenure-track position in Computer
Science at the Instructor or Assistant Professor level, available
August 1989. Applicants are expected to have a commitment to
excellence in teaching and must have a Master's in Computer Science
with experience or course work in, but not limited to, such subjects
as: Software Engineering, Artifical Intelligence, Computer Graphics,
Discrete Mathematics, Database and Knowledge Systems or Computer Networks.
Gallaudet University, a small institution offering undergraduate
programs for deaf students and graduate programs for both hearing
and deaf, is located in Washington, D.C. Hearing impaired individuals
are encouraged to apply for the position. Appointees without sign
language skills will be required to attend an 8-week paid sign
language training program in June, 1989.
Closing date for application is March 1989, or until the position is
filled. Send vita, transcripts, and three letters of reference to:
Prof. Herbert G. Mapes, Chair, Department of Mathematics and Computer
Science, Gallaudet University, Washington, D.C. 20002.
Gallaudet University is an EEO/AA employer.
∂24-Jan-89 0944 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Theory Day - last announcement
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 24 Jan 89 09:44:22 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA18604; Tue, 24 Jan 89 09:43:38 PDT
Message-Id: <8901241743.AA18604@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Tue, 24 Jan 89 09:42:39 PST
Received: by BYUADMIN (Mailer R2.01A) id 3131; Tue, 24 Jan 89 10:41:17 MST
Date: Tue, 24 Jan 89 10:28:34 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
andrew klapper <klapper@CORWIN.CCS.NORTHEASTERN.EDU>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: andrew klapper <klapper@CORWIN.CCS.NORTHEASTERN.EDU>
Subject: Theory Day - last announcement
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
-------------------------------------------------------------------------------
The College of Computer Science at Northeastern University
announces its 1989
THEORY DAY
Friday, January 27, 1989
.......................... Schedule of Events ................................
10:00 AM Eric Allender "Limitations of the Upward Separation Technique"
11:00 AM Joan Feigenbaum "Generating Hard Certified Elements of
NP-Complete Sets"
12:00 PM Lunch Break
2:00 PM Gilles Brassard "Minimum Disclosure Proofs of Knowledge"
3:30 PM Ken MacAloon "Constraint Logic Programming"
All talks will take place in room 356 Ell Center on the Northeastern University
campus. Parking on campus will be available but requires prior approval. For
information about visitor parking and maps of campus or for any other
information, please contact Gayle Mackay:
College of Computer Science
Northeastern University
360 Huntington Ave.
Boston, MA 02115
(617) 437-2464
or contact Andy Klapper at klapper@corwin.ccs.northeastern.edu
∂24-Jan-89 1133 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu STOC '89: TENTATIVE PROGRAM
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 24 Jan 89 11:32:50 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA25640; Tue, 24 Jan 89 11:32:06 PDT
Message-Id: <8901241932.AA25640@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Tue, 24 Jan 89 11:31:07 PST
Received: by BYUADMIN (Mailer R2.01A) id 5190; Tue, 24 Jan 89 12:28:27 MST
Date: Tue, 24 Jan 89 10:57:55 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Christos Papadimitriou <christos%cs@ucsd.edu>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Christos Papadimitriou <christos%cs@ucsd.edu>
Subject: STOC '89: TENTATIVE PROGRAM
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
STOC '89: TENTATIVE PROGRAM
SESSION 1
"Multiparty protocols and logspace-hard pseudorandom sequences," by
Laszlo Babai, Noam Nisan, and Mario Szegedy.
"Pseudo-random Number Generation from ANY One-way Function," by
Russell Impagliazzo, Leonid Levin, and Michael Luby.
"A Hard-Core Predicate for All One-Way Functions," by
Oded Goldreich and Leonid A. Levin.
"Universal One-Way Hash Functions and their Cryptographic Applications,"
by Moni Naor and Moti Yung.
"Limits on the Provable Consequences of One-way Permutations," by
Russell Impagliazzo and Steven Rudich.
SESSION 2
"A Zero-One Law for Boolean Privacy," by Benny Chor and Eyal Kushilevitz.
"Verifiable Secret Sharing and Multiparty Protocols with Honest Majority,"
by Tal Rabin and Michael Ben-Or.
"Designing Programs that Check Their Work," Manuel Blum and Sampath Kannan.
"Provably Fast Integer Factoring with Quasi-uniform Small Quadratic Residues,"
by Brigette Vallee.
SESSION 3
"Implicit O(1) Probe Search," by Amos Fiat and Moni Naor.
"The Cell Probe Complexity of Dynamic Data Structures,"
Michael Fredman and Michael Saks.
"On Aspects of Universality and Performance for Closed Hashing," by
Jeanette P. Schmidt and Alan Siegel.
"Verifying Partial Orders," by Claire Kenyon-Mathieu and Valerie King.
SESSION 4
"A Random Polynomial Time Algorithm for Approximating the
Volume of Convex Bodies," by Martin Dyer, Alan Frieze and Ravi Kannan
"Lines in Space --Combinatorics, Algorithms and Applications"
Bernard Chazelle, Herbert Edelsbrunner, Leonidas Guibas, and
Micha Sharir.
"Polling: A New Randomized Sampling Technique for Computational
Geometry" John H. Reif and Sandeep Sen.
"Coordinate Representation of Order Types Requires Exponential
Storage," by Jacob E. Goodman, Richard Pollack, and Bernd Sturmfels.
SESSION 5
"Work-Preserving SimulaHAR BACKtions of Fixed-Connection Networks," by Richard
Koch, Tom Leighton, Bruce Maggs, Satish Rao, and Arnold Rosenberg.
"An O(log N) Deterministic Packet Routing Scheme," by Eli Upfal.
"Fast Computation Using Faulty Hypercubes," by Johan Hastad, Tom Leighton,
and Mark Newman.
"Optimal Size Integer Division Circuits," John H. Reif and Stephen R. Tate.
"On the Complexity of Radio Communication," Noga Alon, Amotz Bar-Noy,
Nathan Linial, and David Peleg.
SESSION 6
"Local Reorientation, Global Order, and Planar Topology," by
Ming-Yang Kao and Gregory E. Shannon.
"Parallel Depth-First Search in General Directed Graphs," by
Alok Aggarwal, Richard J. Anderson, and Ming-Yang Kao.
"Highly Parallelizable Problems," by Omer Berkman, Dany Breslauer,
Zvi Galil, Baruch Schieber, and Uzi Vishkin.
"Optimal Separations Between Concurrent-write Parallel
Machines," by Ravi B. Boppana.
"CREW PRAMS and Decision Trees," by Noam Nisan.
SESSION 7
"Functional Interpretations of Feasibly Constructive Arithmetic," by
Stephen Cook and Alasdair Urquhart.
"Expressiveness of Restricted Recursive Queries," by Foto Afrati
and Stavros S. Cosmadakis.
"On w-Automata and Temporal Logic," by Shmuel Safra and Moshe Y. Vardi.
"Quantifier Elimination in the Theory of Algebraically-Closed Fields, by
Doug Ierardi.
"Probabilistic Computation and Linear Time," by Lance Fortnow and
Michael Sipser.
"The Isomorphism Conjecture Fails Relative to a Random Oracle," by
Stuart A. Kurtz, Stephen R. Mahaney and James S. Royer.
SESSION 8
"On the Method of Approximations," by A. A. Razborov.
"On the Extended Direct Sum Conjecture," by Nader H. Bshouty.
"Circuits and Local Computation"Andrew Chi-Chih Yao.
"A General Sequential Time-Space Tradeoff for Finding Unique
Elements," by Paul Beame.
"Towards a Theory of Average Case Complexity,," by
Shai Ben-David, Benny Chor, Oded Goldreich, and Michael Luby.
"Tradeoffs Between Communication and Space," by
Tak Lam, Prasoon Tiwari and Martin Tompa.
SESSION 9
"Inference of Finite Automata Using Homing Sequences," by
Ronald L. Rivest and Robert E. Schapire.
"The Minimum Consistent DFA Problem Cannot Be Approximated
within any Polynomial," by Leonard Pitt and Manfred K. Warmuth.
"Cryptographic Limitations on Learning Boolean Formulae and
Finite Automata," by Michael Kearns and Leslie G. Valiant.
"Proof of a Conjecture of R. Kannan," by Jean-Camille Birget.
SESSION 10
"Bounded Concurrent Time-Stamp Systems Are Constructible!" by Danny
Dolev and Nir Shavit.
"On the Improbability of Reaching Byzantine Agreements,"
by Ronald L. Graham and Andrew C. Yao.
"Compact Distributed Data Structures for Adaptive Routing,"
by Baruch Awerbuch, Amotz Bar-Noy, Nathan Linial, and David Peleg.
"Reliable Communication Using Unreliable Channels,"
by Hagit Attiya, Michael J. Fischer, Da-Wei Wang, and Lenore D. Zuck.
"Randomized Distributed Shortest Paths Algorithms," by Baruch Awerbuch.
SESSION 11
"On Search, Decision and the Efficiency of Polynomial-Time Algorithms,"
by Michael R. Fellows and Michael A. Langston.
"A New Fixed Point Approach for Stable Networks and Stable Marriages,"
by Tomas Feder .
"Strongly Polynomial-Time and NC Algorithms for Detecting Cycles in
Dynamic Graphs" Edith Cohen and Nimrod Megiddo.
"An O(n~0.4)-Approximation Algorithm for 3-Coloring," by Avrim Blum.
SESSION 12
"Trading Space for Time in Undirected s-t Connectivity,"
by Andrei Z. Broder, Anna R. Karlin, Prabhakar Raghavan, and Eli Upfal.
"Expanding Graphs and the Average-case Analysis of Algorithms
for Matchings and Related Problems," by Rajeev Motwani.
"New Lower Bounds on the Length of Universal Traversal Sequences,"
by Allan Borodin, Walter L. Ruzzo and Martin Tompa.
"The Electrical Resistance of a Graph, and its Applications to
Random Walks," by Ashok K. Chandra, Prabhakar Raghavan, Walter L. Ruzzo,
Roman Smolensky, and Prasoon Tiwari.
"On the Second Eigenvalue of Random Regular Graphs,"
by Joel Friedman, Jeff Kahn and Endre Szemeredi.
∂24-Jan-89 1231 CL-Characters-mailer Comments on the Character proposal dated January 1, 1989
Received: from ALDERAAN.SCRC.Symbolics.COM ([128.81.41.109]) by SAIL.Stanford.EDU with TCP; 24 Jan 89 12:31:27 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by ALDERAAN.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 263137; Tue 24-Jan-89 14:46:01 EST
Date: Tue, 24 Jan 89 14:46 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: Comments on the Character proposal dated January 1, 1989
To: Thom Linden <Baggins@IBM.COM>
cc: CL-Characters@SAIL.STANFORD.EDU, X3J13@SAIL.STANFORD.EDU, Common-Lisp-Implementors@STONY-BROOK.SCRC.Symbolics.COM,
KMP@STONY-BROOK.SCRC.Symbolics.COM, Palter@STONY-BROOK.SCRC.Symbolics.COM
Message-ID: <19890124194625.1.MOON@EUPHRATES.SCRC.Symbolics.COM>
Please acknowledge receipt of this mail so I can be sure it was
not lost in the network. The reply needn't be CC'ed to any of
the other recipients.
Page 6 -- *all-registry-names* should be renamed to
*all-character-registry-names*; the word "registry" by itself
is too general.
Page 9 -- the fourth bullet requires a defined total ordering of all
characters. This seems unnecessary, and is impossible to implement in any
system (such as Symbolics Genera) that allows dynamic addition of character
registries by third-party software vendors and by users; in such a system
character codes have to be allocated dynamically and therefore their order
cannot be fixed ahead of time.
Page 9 -- This says an implementation must define the result of
standard-char-p on the characters it supports. I think that is incorrect.
Common Lisp fully defines the result of standard-char-p, which is NIL
for all characters added by an implementation.
Page 14 -- This EXTERNAL-WIDTH function probably should be part of a
database facility or a terminal screen template facility; I'm not sure it
is useful by itself. Also note that its result is only meaningful with
respect to a specific state of the stream. To give two examples, with the
SO/SI encoding the answer can vary by 1 depending on whether the stream is
already shifted into the correct state for the first character; with the
universal encoding Symbolics uses, the answer can vary by a lot depending on
whether the character repertoires appearing in the string have been used
earlier on the same stream (and hence have been assigned encoding numbers).
Because of this dependence on the state of the stream, I cannot think of
any correct use of EXTERNAL-WIDTH that does not involve immediately
outputting the string to the stream. Therefore I believe the same effect
can be achieved without adding any new functions, by calling FILE-POSITION,
outputting to the stream, calling FILE-POSITION again, and subtracting. If
you still want to propose this feature, you should change the name: use
"length" instead of "width", since that's the word Common Lisp always uses,
and use a name that relates to the :EXTERNAL-CODE-FORMAT option to OPEN;
for example, STRING-LENGTH-IN-EXTERNAL-CODE-FORMAT or
EXTERNAL-CODED-STRING-LENGTH.
Page 24 -- I can't figure out what you intend the meaning of SIMPLE-STRING
to be. Your report mostly does not mention it, but it doesn't say to
remove it either. If I have correctly correlated page 24 back to CLtL, you
are defining SIMPLE-STRING to be synonymous with SIMPLE-GENERAL-STRING.
Maybe what you really meant, though, was what you said in November you
would do, which was to make SIMPLE-STRING mean (AND STRING SIMPLE-ARRAY),
in other words a union of several subtypes. This is particular confusing
because Common Lisp uses the name SIMPLE-VECTOR to mean what you might call
a simple general vector, that is, (SIMPLE-ARRAY T 1) rather than
(SIMPLE-ARRAY * 1). Here are my suggestions for what to do with the
various names for string subtypes:
STRING As a union of all strings, this is fine.
GENERAL-STRING I think (VECTOR CHARACTER) is just as good.
BASE-STRING I think (VECTOR BASE-CHARACTER) is just as good.
SIMPLE-STRING Should mean (SIMPLE-ARRAY CHARACTER 1).
SIMPLE-BASE-STRING This is fine.
SIMPLE-GENERAL-STRING This name is horrible, use SIMPLE-STRING.
My rationale for these suggestions largely comes from thinking about
which of these names would ever be used in type declarations and about
how these names relate to the other names already in Common Lisp. To
repeat older comments:
Pages 19 and 20 introduce a new type named simple-base-string, in addition
to simple-string. If you think about how simple-string would be used for
compiler optimization, it makes sense for simple-string to be the name for
the single simplest representation, rather than a name for a whole family
of representations that would have to be discriminated at run time. Thus
what you call simple-base-string should be called simple-string, and what
you call simple-string should just be called (simple-array character (*)).
This would not be an incompatible change in the meaning of simple-string.
Simple-string would be analogous to simple-vector.
I changed my mind slightly on that and now claim that while SIMPLE-STRING
should still be a single representation, not a union, it should be the
representation that can hold all characters. This is both because of the
principle that correct programs should be easier to write than
extra-efficient programs, and because of the powerful analogy with the name
SIMPLE-VECTOR. Then the name SIMPLE-BASE-STRING is also needed for
convenient type declarations of the more efficient but less functional
string representation. That name is good, by analogy to BASE-CHARACTER.
Adopting the above suggestions helps you decide what to do about the
SCHAR, SBCHAR, and SGCHAR mess. First of all, you only need two functions,
not three, because there are only two specified specialized representations.
SCHAR should be for what I've called SIMPLE-STRING, SBCHAR should be
for SIMPLE-BASE-STRING, and SGCHAR is not needed. (In fact I would prefer
to remove all of the specialized versions of AREF from the language, in
favor of THE or type declarations, but I know that would only pass over
some peoples' dead bodies so I won't push it.)
In case you are wondering, I have no quarrel with the name BASE-CHARACTER
and would not want to see it removed. I guess I differ from Larry here,
unless I erred when I wrote down his comments during the meeting.
Page 25 -- The discussion of STRING and SIMPLE-STRING thinks that there
is a distinction between declaration and discrimination, but Common Lisp
no longer has such a distinction. Even when Common Lisp did have such
a distinction, the meanings for declaration stated here were incorrect.
Page 29 -- *all-character-registry-names* has to be a variable, not a
constant, to accomodate systems (such as Symbolics Genera) that allows
dynamic addition of character registries by third-party software vendors
and by users.
Page 35 -- CHAR-REGISTRY should be renamed to CHAR-REGISTRY-NAME, so that
if at some later time character registry objects are added, there is no
possibility of confusion about whether this function returns a name or
an object.
Page 40 -- the default :ELEMENT-TYPE for OPEN cannot be BASE-CHARACTER. I
think this was discussed at the X3J13 meeting. The report suffers from a
confusion between two meanings of BASE-CHARACTER: the character type
implemented most efficiently by the Lisp, and the character type most
natural to the file system. These are not always the same. Furthermore,
in a network-based system that supports multiple file systems equally
(Symbolics Genera is an example), each file system might have a different
natural character type. BASE-CHARACTER should just mean the character type
implemented most efficiently by the Lisp. The default for :ELEMENT-TYPE
has two viable choices that I can see, and maybe you should just propose
both and let people vote:
(1) CHARACTER. This matches the behavior of MAKE-STRING and friends,
adheres to the principle that writing correct programs should be easier
than writing extra-efficient programs (since making a program correct
requires making every part of it correct, while making a program
efficient only requires improving the bottlenecks), and doesn't cost
anything in implementations that don't have extended characters.
(2) The most natural type for the particular pathname being opened.
In some systems this would be a constant, and in a subset of those
systems this would be BASE-CHARACTER, however in general this might
depend on the host, device, or even type fields of the pathname,
and might also depend on information stored in the file system.
In general this would always be an (improper) supertype of
BASE-CHARACTER, but it's probably a bad idea to make that a requirement,
as some file systems might not be able to implement it conveniently.
Again this doesn't cost anything in implementations that don't have
extended characters.
The relationship of option 2 to :ELEMENT-TYPE :DEFAULT (a feature that
already exists in Common Lisp) needs to be clarified. Perhaps they
are the same.
Also the following promise from 14 November did not show up in the report:
>> There should be a name for the "natural" encoding and there should be a
>> specification of the properties of the natural encoding that a programmer
>> can rely on. Suggestions for the name include :BASE, :NATURAL, and
>> :INTERCHANGE. The definition probably involves the concept of data
>> interchange with non-Lisp programs on the same system.
This will be added to the revision.
Appendix B -- I disagree with the way you've used deprecation. I'll
comment on each individual point:
- I see no justification for deprecating STANDARD-CHAR.
- I agree that STRING-CHAR should be deprecated, not deleted nor kept.
- I think fonts and bits should be removed outright, not deprecated,
because no portable program could possibly be using them.
- I think the CHAR-INT function needs to be kept, although the INT-CHAR
function should go away. This is for hashing. See comments below
on character attributes.
No particular page -- the use of strings for naming registries, labelling
characters, and naming external code formats is objectionable. Nothing
else in Common Lisp is named by strings. Use of strings might lead to
efficiency problems. We feel that keyword symbols are the appropriate
objects to use for these three kinds of names.
No particular page -- We agree with the deprecation or deletion of the two
particular character attributes defined by CLtL, but not with the
deprecation of the whole concept of character attributes. In fact on page
20 you say "characters are uniquely distinguished by their codes," which
makes it impossible to have character attributes at all. The language must
define how conforming programs should be written so that they will work
both in implementations with character attributes and in implementations
without them. For example, the value of (eql x (code-char (char-code x)))
is unspecified. Another thing that needs to be said is that the exact
character operations (char=, string=, etc.) respect all character
attributes, while the inexact character operations (char-equal,
string-equal, etc.) respect or ignore each character attribute in an
implementation-defined but consistent fashion. Some of what you say on
page 44 about attributes in general needs to be part of the spec, not
deprecated. I would retain everything on that page except for INT-CHAR and
the last bullet (referring to bits and fonts), and I would add a remark
that FIND-SYMBOL and INTERN respect character attributes. If you want,
perhaps I or someone else at Symbolics can provide exact text for what
to say about character attributes that you could insert into your report.
No particular page -- On the subject of defining character registries in a
separate document, and relating them to ISO standards for character
encoding: I think that's fine. I don't see anything wrong with introducing
the concept of character registry and the requirement that each character
object relates to exactly one registry. However, I think the somewhat
random list of character registries on pages 7-8 and again on page 21 does
not belong in the language specification. Even the names of the
standardized character registries belong in the character registry
standard, not in the Common Lisp language standard. I'm confused about the
meaning of BASE, STANDARD, and CONTROL as character registry names; these
are mentioned in your report but not explained very well. If these are
character registries that are required to exist in all Common Lisp
implementations, then unlike the others they do belong in the Common Lisp
language standard, not in the character registry standard.
At the meeting there was some discussion about the issue of enumerating all
characters in a character registry. People claimed incorrectly that it was
impossible. In fact it's possible to do this, with questionable
efficiency, by the following program:
(dotimes (code char-code-limit)
(let ((char (code-char code)))
(when char
(when (eq (char-registry-name char) desired-registry-name)
... process this char ...))))
Of course you have to change the EQ to EQUALP if you continue to use
strings to name character registries. For more efficiency, you could add
a way to iterate over all the codes in one character registry, but I think
that is unnecessary.
TYPOS:
25 -- base-string is missing from the Table 4-1 amendment.
26 -- general-string is not an array of BASE characters, also the first
two paragraphs under A.4.8 are garbled (the two separate sentences for
strings for symbols got smushed together).
37 -- This says the default for the :ELEMENT-TYPE option to MAKE-STRING
is SIMPLE-STRING. Actually it's CHARACTER.
VOTING:
You asked for suggestions on how to modularize the voting. Here is a
possible breakdown into separate issues, admittedly not very well thought
out. In general, I feel that breaking down the voting into separate issues
is a good idea even if some of the issues are interdependent. If people
don't understand the interdependencies well enough to vote properly, then I
would claim that the subcommittee report hasn't explained things well
enough.
Concept of character registries and character labels
Functions and variables for character registries and character labels
Page 9 rules for implementation-defined character registries
New syntax for #\
New syntax for the CHARACTER type specifier, new argument to CHARACTERP
New rules for names of symbols
Deprecation of STRING-CHAR
Deprecation of STANDARD-CHAR
BASE-CHARACTER type
New meaning of STRING type, and its subtypes
SCHAR
SBCHAR
SGCHAR
Type returned by (CONCATENATE 'STRING ...) and similar forms
Extensions to COERCE
EXTERNAL-WIDTH function
:ELEMENT-TYPE option to OPEN
:EXTERNAL-CODE-FORMAT option to OPEN
CHAR-CODED-CHARACTER-SET-VALUE function
Rules for implementation-defined character attributes
Removal or deprecation of bits and fonts, and implied arglist changes
Removal or deprecation of the semi-standard format effector characters
Support of extended characters in the readtable
Removal or deprecation of CHAR-INT
Removal or deprecation of INT-CHAR
Miscellaneous other and editorial changes
Wow, 26 ballot items! Democracy on the march! I think the complexity of
the issues amply justifies having about that many separate issues, though.
∂24-Jan-89 1312 CL-Characters-mailer Comments on the Character proposal dated January 1, 1989
Received: from Think.COM by SAIL.Stanford.EDU with TCP; 24 Jan 89 13:12:07 PST
Return-Path: <barmar@Think.COM>
Received: from sauron.think.com by Think.COM; Tue, 24 Jan 89 15:47:56 EST
Received: from OCCAM.THINK.COM by sauron.think.com; Tue, 24 Jan 89 16:08:30 EST
Date: Tue, 24 Jan 89 16:09 EST
From: Barry Margolin <barmar@Think.COM>
Subject: Comments on the Character proposal dated January 1, 1989
To: David A. Moon <Moon@stony-brook.scrc.symbolics.com>
Cc: Thom Linden <Baggins@ibm.com>, CL-Characters@sail.stanford.edu,
X3J13@sail.stanford.edu,
Common-Lisp-Implementors@stony-brook.scrc.symbolics.com,
KMP@stony-brook.scrc.symbolics.com,
Palter@stony-brook.scrc.symbolics.com
In-Reply-To: <19890124194625.1.MOON@EUPHRATES.SCRC.Symbolics.COM>
Message-Id: <19890124210921.6.BARMAR@OCCAM.THINK.COM>
Date: Tue, 24 Jan 89 14:46 EST
From: David A. Moon <Moon@stony-brook.scrc.symbolics.com>
No particular page -- the use of strings for naming registries, labelling
characters, and naming external code formats is objectionable. Nothing
else in Common Lisp is named by strings. Use of strings might lead to
efficiency problems. We feel that keyword symbols are the appropriate
objects to use for these three kinds of names.
I agree with your suggestion. However, there is at least one global
database in CL that is named by strings: the package name database.
barmar
∂24-Jan-89 1325 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Sorting on NxN Mesh.
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 24 Jan 89 13:24:57 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU (5.59/25-eef) id AA03811; Tue, 24 Jan 89 13:24:02 PDT
Message-Id: <8901242124.AA03811@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Tue, 24 Jan 89 13:23:04 PST
Received: by BYUADMIN (Mailer R2.01A) id 8345; Tue, 24 Jan 89 14:22:04 MST
Date: Tue, 24 Jan 89 14:00:49 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Math Dept U of Crete Greece Michalis Kolountzakis
<KOLOUTSAKIS%GRCRVAX1.BITNET@forsythe.stanford.edu>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Math Dept U of Crete Greece Michalis Kolountzakis
<KOLOUTSAKIS%GRCRVAX1.BITNET@forsythe.stanford.edu>
Subject: Sorting on NxN Mesh.
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
I would appreciate any suggestions, references or solutions for the following
problem:
We have a SIMD, 4-connected, NxN Mesh Connected Computer (MCC) and
the following
algorithm for sorting on it. The algorithm is an extension of the
so called "odd-even transposition sorting" (OETS) algorithm for a
sequence of N processors:
P <--> P <--> P <--> ... <--> P
0 1 2 N-1
OETS works by coupling all processors and performing a compare-and-
then-possibly-swap operation on every pair of processors. In even
time moments the set P={0,...,N-1} is partitioned in
{(0,1), (2,3), ..., (2i,2i+1), ...} and in odd time moments P is parti-
tioned in {(1,2), (3,4), ..., (2i-1,2i) ,...} (P and P are not always
0 N-1
in some pair). It is almost obvious that OETS is a sorting algorithm
for the sequence of processors but it takes some time to prove that it
is linear in N. So, in OETS, each prossesor compares its contents, first
with its left neighbour and then with its right neighbour and so on.
In two dimensions the most reasonable extension of OETS would be to
couple each processor first with its upper neighbour, then with its
lower, its left and finally irs right neighbour and perform a compare-
and-then-possibly-swap operation. More precisely in time T the NxN
grid G={(i,j): i, j in P /* i for rows */} is partitioned in
{ <(2i-1,j), (2i, j)> for all i, j } when T mod 4 = 0
{ <(2i,j), (2i+1,j)> for all i, j} when T mod 4 = 1
{ <(i,2j-1), (i,2j)> for all i, j} when T mod 4 = 2 and
{ <(i,2j), (i,2j+1)> for all i, j} when T mod 4 = 3,
and all these pairs of processors compare their contents and possibly
swap them.
It is obvious again that it is a sorting algorithm but what is its
time complexity? Is it linear ? is the question. I suspect it is not,
because if it were no other sorting alg. for the NxN mesh should have
been invented; this seems far simpler than any other I have seen.
But I do not have a bad example for this alg. Do you?
Thanks in advance
Michalis Kolountzakis,
Mathematics Dept, Univ. of Crete, Greece
e-mail: koloutsa@grcrvax1.bitnet
------------------------------------------------------------------------
Date: Tue, 24 Jan 89 21:28 O
From: Michalis Kolountzakis(Math Dept U of Crete Greece)
<KOLOUTSAKIS@GRCRVAX1>
Subject: More on sorting on the NxN mesh
To: theorynt@ndsuvm1
On the problem I have just mailed to the list (Sorting on the Mesh Connected
Computer) I have not given the desirable order on the Mesh for which the
algorithm I have described is supposed to work. I cannot expect this order
to be any one for which "local order" does not imply "global order", e.g. it
cannot be the row-major (lexicographic) order. If we want big elements to go
up and left, then the following configuration of values
4 2
3 1
for a 2x2 Mesh is not ordered (2 and 3 should be swapped) but it is locally
consistent with the row-major order (that is, every element in the Mesh is
consistent with its neighbours.)
An order for the Mesh which is good for our purposes is the "snake-like"
order for which such a configuration cannot exist and so we can prove that the
proposed algorithm is indeed a sorting algorithm.
Michalis Kolountzakis,
Math. Dept, Univ. of Crete, Greece
∂24-Jan-89 1736 misha@polya.Stanford.EDU This week's AFLB
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 24 Jan 89 17:36:26 PST
Received: by polya.Stanford.EDU (5.59/25-eef) id AA22830; Tue, 24 Jan 89 17:33:42 PDT
Date: Tue, 24 Jan 89 17:33:42 PDT
From: Michael Kharitonov <misha@polya.Stanford.EDU>
Message-Id: <8901250133.AA22830@polya.Stanford.EDU>
To: aflb-all@polya.Stanford.EDU
Subject: This week's AFLB
Eva Tardos will speak on Thursday, January 26, at 12:30 pm
in room 352. She will speak on:
Combinatorial algorithms for the generalized network flow problem
We consider a generalization of the maximum flow problem in which
the amounts of flow entering and leaving an arc are linearly related.
More precisely, if $x(e)$ units of flow enter an arc $e$,
$x(e) \gamma (e)$ units arrive at the other end.
For instance, nodes of the graph can correspond
to different currencies, with the multipliers being the exchange rates.
We require conservation of flow at every node except a given source
node. The goal is to maximize the amount of flow excess at the source.
This problem is a special case of linear programming, and therefore
can be solved in polynomial time.
We present a simple combinatorial algorithm for this problem, that is based
on ideas from maximum flow and minimum cost flow algorithms.
Joint work with Andrew Goldberg and Serge Plotkin.
∂24-Jan-89 1949 @Score.Stanford.EDU,@polya.Stanford.EDU:hayes@arisia.xerox.com teaching strategies
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 24 Jan 89 19:49:18 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Tue 24 Jan 89 19:46:22-PST
Received: from arisia.Xerox.COM by polya.Stanford.EDU (5.59/25-eef) id AA29380; Tue, 24 Jan 89 19:47:33 PDT
Received: by arisia.Xerox.COM
(5.59++/IDA-1.2.6) id AA29402; Tue, 24 Jan 89 19:46:05 PST
Date: Tue, 24 Jan 89 19:46:05 PST
From: Pat Hayes <hayes@arisia.xerox.com>
Message-Id: <8901250346.AA29402@arisia.Xerox.COM>
To: faculty@Polya.Stanford.EDU
Cc: hayes.pa@Xerox.COM
Subject: teaching strategies
The discussion this lunchtime on the role of courses, research and
quals in the PhD program stimulated some thoughts. It seems clear
that there are some quite profound differences among what some of the
senior faculty regard
The views expressed by Ed Feigenbaum and Bob Floyd this lunchtime
represented two positions which often arise in discussions of how to
do graduate teaching. It is the difference between thinking of a PhD
as primarily an apprenticeship to research, or as a certification in
professional competence. Of course, these are not incompatible; and
indeed if the competence in question is that of being a researcher,
then they should coincide. But since the world is less than perfect,
compromises are necessary, and ones willingness to compromise depends
on ones perspective.
According to the first view, graduate school is learning to do
research. To do this well requires a wide and sometimes deep knowledge
of the subject, of course, but chiefly it requires a certain skill
which - as Ed emphasises - can best be obtained by working closely
with active researchers. ( I chose the word "apprenticeship"
carefully, since the closest analogy is with the mediaeval craft
guilds. One cant learn how to be a smith by attending courses, one
has to work with iron. ) Part of this skill is, arguably, the ability
to bone up on the literature in some local area when it seems relevant
to ones work, so that rather than trying to know it all, one should
have a sort of perspective on the main ideas and an active curiosity.
On the second view, however, its not our job to make our students into
anything in particular, but rather to make sure that they have, and
can use, all the knowledge and abilities which a competent
professional computer scientist should have at their fingertips. Its
more like training a medical doctor, where the chief failing would be
simple ignorance of some vital part of the subject. Faculty members
have expressed this idea to me forcibly in the past.
Those who take the second perspective on graduate teaching often see
the PhD as a sort of stamp of approval, and so are especially anxious
that it not be applied to anyone who doesnt meet the professional
criteria to which the school adheres. To do so would be
irresponsible, and in the long run would simply devalue the schools
reputation in the professional community. This sort of view tends to
lead to the raising of qualification barriers of one sort or another.
But this is far less important to someone who thinks in terms of
research apprenticeship. After all, the performance of a scientist
cannot be predicted on the basis solely of what they do in graduate
school, and credit for their subsequent career performance must be
largely given to the individual in question. All that the school
certifies is that they have done a piece of genuine research - their
dissertation.
Now these are both extreme positions I have outlined, and most people
think that graduate school has something of both - and probably other
- roles to play. But I think it might be worth keeping these sort of
issues clear, because what seem to be disagreements about methods
might in fact be differences about goals.
Pat Hayes
∂25-Jan-89 0613 X3J13-mailer Issues DECLARATION-SCOPE and DEFINING-MACROS-NON-TOP-LEVEL
Received: from lucid.com by SAIL.Stanford.EDU with TCP; 25 Jan 89 06:13:30 PST
Received: from bhopal ([192.9.200.13]) by heavens-gate.lucid.com id AA00927g; Wed, 25 Jan 89 06:07:03 PST
Received: by bhopal id AA08310g; Wed, 25 Jan 89 06:09:24 PST
Date: Wed, 25 Jan 89 06:09:24 PST
From: Jon L White <jonl@lucid.com>
Message-Id: <8901251409.AA08310@bhopal>
To: Moon@STONY-BROOK.SCRC.Symbolics.COM
Cc: sandra%defun@cs.utah.edu, X3J13@sail.stanford.edu
In-Reply-To: David A. Moon's message of Mon, 23 Jan 89 13:49 EST <19890123184939.6.MOON@EUPHRATES.SCRC.Symbolics.COM>
Subject: Issues DECLARATION-SCOPE and DEFINING-MACROS-NON-TOP-LEVEL
re: The problem is that (LOCALLY (DECLARE ...) (DEFUN ...)) cannot be used as
the new way to say what used to be said as (DEFUN ... (DECLARE ...) ...),
even though side-discussion at the meeting indicated that some people
I didn't hear any of this "side discussion", but I can imagine it
happening. Actually, there might be less need for declarations that
apply to the whole defun than one might expect (but of course
there would some extreme cases where it is very cumbersome not
to have it). A "cumbersome" workaround is to wrap LOCALLY's
around all the defaulted computations in the &optional and &key
parameters, as well as having a regular declare in the DEFUN.
This style of "cumbersome" workaround _was_ mentioned in the
discussion section of the proposal:
One idiom which will be adversely affected by both of these proposals is:
(let ((*a* *a*))
;; rebind *a* to it's "old" value
(declare (special *a*))
...)
where *a* has not been proclaimed special. This idiom would likely
have to be written as:
(let ((*a* (locally (declare (special *a*)) *a*)))
;; rebind *a* to it's "old" value
(declare (special *a*))
...)
or [preferably!] *a* should be proclaimed special. Similar idiots
like this may be in use for LAMBDA-Expressions, or DEFUNs etc.
[sic. Hopefully, someone will correct the typo before it gets into
the standard]
This problem *was* discussed at some length about a year ago --
I recall KMP bringing it up, and I explicitly mentioned it to
you (maybe in that series of private interchanges we had on
the issue). Your reply to me looked as though you didn't
appreciate the problem back then. [If you are concerned about
the exact wordings, I could probably rummage around in old mail
files . . . ]
One problem with trying to say that LOCALLY "passes through"
top-level is that in fact it carries a non-null (syntatical)
lexical environment. If we remember Walter van Roggen's proposal
from long ago to say that "toplevel" merely means null lexical
environment, then LOCALLY won't make it. Consider for example
how the following functions work interpretively:
(defun bar (x) (macrolet ((flower (z) `(quote ,z)))
#'(lambda (y) (if y (flower x) 5))))
(defun baz (x) (locally (declare (special x ))
#'(lambda (y) (if y (flower x) 5))))
Several implementations I've tried BAR on seem to do it right;
maybe not so many will do BAZ right.
Now, I don't mind saying that the "special attention" paid
to top-level forms should also be paid to certain forms
in embedded places. It just seems that the notion "toplevel"
is becoming more and more artificial, and less related to
what the intuitive notion implies. It's possible that the
very complicated notion that Rob McLaughlin once tried to
espouse may be necessary to explain all this.
-- JonL --
∂25-Jan-89 0850 X3J13-mailer Issues DECLARATION-SCOPE and DEFINING-MACROS-NON-TOP-LEVEL
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 25 Jan 89 08:50:26 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 526603; Wed 25-Jan-89 11:48:00 EST
Date: Wed, 25 Jan 89 11:48 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: Issues DECLARATION-SCOPE and DEFINING-MACROS-NON-TOP-LEVEL
To: Jon L White <jonl@lucid.com>
cc: sandra%defun@cs.utah.edu, X3J13@SAIL.STANFORD.EDU
In-Reply-To: <8901251409.AA08310@bhopal>
Message-ID: <19890125164831.1.MOON@EUPHRATES.SCRC.Symbolics.COM>
Date: Wed, 25 Jan 89 06:09:24 PST
From: Jon L White <jonl@lucid.com>
If we remember Walter van Roggen's proposal
from long ago to say that "toplevel" merely means null lexical
environment, then LOCALLY won't make it.
But (when (oddp (random))
(defmacro frob ...))
clearly evaluates the defmacro in a null lexical environment, and just
as clearly does not have the defmacro in a top-level position.
∂25-Jan-89 0936 X3J13-mailer Issues DECLARATION-SCOPE and DEFINING-MACROS-NON-TOP-LEVEL
Received: from Think.COM by SAIL.Stanford.EDU with TCP; 25 Jan 89 09:36:00 PST
Return-Path: <barmar@Think.COM>
Received: from sauron.think.com by Think.COM; Wed, 25 Jan 89 12:11:19 EST
Received: from OCCAM.THINK.COM by sauron.think.com; Wed, 25 Jan 89 12:31:53 EST
Date: Wed, 25 Jan 89 12:32 EST
From: Barry Margolin <barmar@Think.COM>
Subject: Issues DECLARATION-SCOPE and DEFINING-MACROS-NON-TOP-LEVEL
To: David A. Moon <Moon@stony-brook.scrc.symbolics.com>
Cc: Jon L White <jonl@lucid.com>, sandra%defun@cs.utah.edu,
X3J13@sail.stanford.edu
In-Reply-To: <19890125164831.1.MOON@EUPHRATES.SCRC.Symbolics.COM>
Message-Id: <19890125173236.0.BARMAR@OCCAM.THINK.COM>
Date: Wed, 25 Jan 89 11:48 EST
From: David A. Moon <Moon@stony-brook.scrc.symbolics.com>
Date: Wed, 25 Jan 89 06:09:24 PST
From: Jon L White <jonl@lucid.com>
If we remember Walter van Roggen's proposal
from long ago to say that "toplevel" merely means null lexical
environment, then LOCALLY won't make it.
But (when (oddp (random))
(defmacro frob ...))
clearly evaluates the defmacro in a null lexical environment, and just
as clearly does not have the defmacro in a top-level position.
I think JonL meant that toplevel implies null lexical environment, not
the other way around.
barmar
∂25-Jan-89 1320 @Score.Stanford.EDU:chandler@polya.Stanford.EDU Forsythe Lectures/Ruzena Bajcsy
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 25 Jan 89 13:20:38 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Wed 25 Jan 89 13:17:08-PST
Received: by polya.Stanford.EDU (5.59/25-eef) id AA05247; Wed, 25 Jan 89 13:18:20 PDT
Date: Wed, 25 Jan 1989 13:18:17 PST
From: "Joyce R. Chandler" <chandler@polya.stanford.edu>
To: faculty@score
Subject: Forsythe Lectures/Ruzena Bajcsy
Message-Id: <CMM.0.87.601766297.chandler@polya.stanford.edu>
Professor Bajcsy will be here February 14 and I'll be working with her to set
up a schedule. If you would like to chat with her please contact me and I'll
put a tentative schedule together.
∂25-Jan-89 1555 snoeyink@polya.Stanford.EDU Next BATS
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 25 Jan 89 15:54:56 PST
Received: by polya.Stanford.EDU (5.59/25-eef) id AA15568; Wed, 25 Jan 89 15:53:55 PDT
Date: Wed, 25 Jan 89 15:53:55 PDT
From: Jack Snoeyink <snoeyink@polya.Stanford.EDU>
Message-Id: <8901252353.AA15568@polya.Stanford.EDU>
To: aflb-local@polya.Stanford.EDU
Subject: Next BATS
Advance Notice: The next BATS will be held at Berkeley on Feb 10.
∂25-Jan-89 1732 emma@csli.Stanford.EDU CSLI Calendar, January 26, 4:13
Received: from csli.Stanford.EDU by SAIL.Stanford.EDU with TCP; 25 Jan 89 17:32:14 PST
Received: by csli.Stanford.EDU (4.0/inc-1.0)
id AA22128; Wed, 25 Jan 89 16:36:02 PST
Date: Wed, 25 Jan 89 16:36:02 PST
From: emma@csli.Stanford.EDU (Emma Pease)
Message-Id: <8901260036.AA22128@csli.Stanford.EDU>
To: friends@csli.Stanford.EDU
Subject: CSLI Calendar, January 26, 4:13
C S L I C A L E N D A R O F P U B L I C E V E N T S
_____________________________________________________________________________
26 January 1989 Stanford Vol. 4, No. 13
_____________________________________________________________________________
A weekly publication of The Center for the Study of Language and
Information, Ventura Hall, Stanford University, Stanford, CA 94305
____________
CSLI ACTIVITIES FOR THIS THURSDAY, 26 January 1989
12 noon TINLunch
Cordura Hall Guarded Horn Clauses: Language Design and Future
Conference Room Directions
Kazunori Ueda
ICOT
3:30 p.m. Tea
Ventura Hall
____________
THIS WEEK'S TINLUNCH
Guarded Horn Clauses: Language Design and Future Directions
Kazunori Ueda
ICOT
January 26
Guarded Horn Clauses (GHC) is a logic programming language for
describing concurrent processes. The talk will introduce the purposes
and the motivations of the language and then give a simple trace set
semantics of it. The talk will be concluded by suggesting future
research directions.
____________
LINGUISTICS DEPARTMENT COLLOQUIUM
Free Word Order Structures as Evidence for a
Restrictive Theory of Parameters
Gert Webelhuth
University of Massaschusetts, Amherst
Friday, 27 January, 4:15
Cordura Conference Room
The talk will consist of two parts. In the first half, it will be
shown that the pro-drop, wh-movement, and directionality parameters
can be stated in such a way that they all share certain properties. It
will then be argued that the common properties should be extracted
from the individual formulations and be derived from the overall
organization of Universal Grammar, so that all (morphosyntactic)
parameters of natural language can be subjected to them. The result is
a principles and parameters framework where the power of parameters is
constrained in a fashion similar to the restrictions imposed on phrase
structure configurations by X-bar theory.
The second half of the talk will extend the scope of the above
mentioned theory of parameters to the configurationality parameter. It
will be demonstrated that German, as such a free word order language,
displays severe constraints on the availability of free word order
structures. In particular, a comparison with wh-movement will show
that free word order sentences obey eleven different constraints on
wh-movement (e.g., the Subject Condition), arguing that German is not
a free word order language in the sense of a W* approach but rather in
the same sense in which it can be said that German and English are
wh-movement languages. In a final step a number of pragmatic
properties of free word order structures are addressed.
It will be concluded that if the approach to free word order in
this talk can be carried over to other languages, then the
configurationality parameter also satisfies the general constraints on
parameters mentioned earlier, so that four important parameters will
have been shown to be subject to these universal constraints:
pro-drop, wh-movement, directionality, and the configurationality
parameter.
-----------
SYMBOLIC SYSTEMS FORUM
Quantification in Natural Language
Peter Sells
Dept. of Linguistics, Stanford
Friday, 27 January, 3:15
Room 60:61N
In this talk I'd like to look at the relation between a first-order
logic style representation for quantification and the way that
quantificational structures are manifest in natural languages, and the
way in which that interacts with other "variable"-like elements in
natural language, such as pronouns. There has been quite a lot of
work in recent years on existential quantification in natural
languages, which seems to diverge quite a lot from the picture you
would expect from standard logic, and I'll probably concentrate on
that, using data from English and Japanese.
Structure Yes, Symbols No
Jerome A. Feldman
Friday, 3 February, 3:15
Room 60:61G
Computer Science, Artificial Intelligence and many related fields have
followed symbol-processing paradigms almost without exception. Recent
work has suggested alternative views of intelligent activity based on
connectionist (or PDP or `neural') networks. This talk will discuss a
"structured" connectionist approach that attempts to capture the best
features of symbolic and neural-style computation. After some
preliminaries, the talk will focus on a connectionist model of visual
recognition, which is claimed to be (the only model) consistent with
the relevant biological, behavioral, and computational findings.
Finally, we will try to indicate what this model suggests about how
intelligence is realized in animals and artifacts.
∂26-Jan-89 0002 X3J13-mailer Re: Comments on the Character proposal dated January 1, 1989
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 26 Jan 89 00:02:45 PST
Received: from Semillon.ms by ArpaGateway.ms ; 25 JAN 89 23:59:20 PST
Date: 25 Jan 89 23:57 PST
From: masinter.pa@Xerox.COM
Subject: Re: Comments on the Character proposal dated January 1, 1989
In-reply-to: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>'s message
of Tue, 24 Jan 89 14:46 EST
To: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
cc: X3J13@SAIL.STANFORD.EDU,
Common-Lisp-Implementors@STONY-BROOK.SCRC.Symbolics.COM,
KMP@STONY-BROOK.SCRC.Symbolics.COM, Palter@STONY-BROOK.SCRC.Symbolics.COM
Message-ID: <890125-235920-8229@Xerox>
David,
I thought there were fewer than 26 "issues". I thought they might be split
up into issues as follows; I think these issues 'cover' the current
proposal with some exceptions. I've enclosed David's characterization of
the issues in <brackets>; as you see, I've lumped some of them together.
Exceptions:
<New rules for names of symbols.> What new rules?
<:ELEMENT-TYPE option to OPEN.> I thought this was removed from the
proposal.
<Removal or deprecation of the semi-standard format effector characters.> I
guess I don't understand this.
<Support of extended characters in the readtable.> I thought this falls out
of character type?
<Miscellaneous other and editorial changes> not sure what they are...
Sorry that the following are telegraphic. I'd guess they would need to be
fleshed out more.
!
Issue: CHAR-FONT-UNUSED
Problem: CHAR-FONT isn't used, CHAR-BITS isn't portable.
Proposal: eliminate of CHAR-FONT and CHAR-BITS, related parameters, and the
STRING-CHAR type. (I.e., identification of STRING-CHAR with CHARACTER).
<Removal or deprecation of bits and fonts, and implied arglist changes.
Deprecation of STRING-CHAR. Removal or deprecation of CHAR-INT. Removal or
deprecation of INT-CHAR. Rules for implementation-defined character
attributes.>
If this fails, or if people only wanted to eliminate CHAR-FONT and not
CHAR-BITS, most of the rest of the proposals get more complicated.
Issue: STRING-TYPE-RESTRICTIVE
Problem: STRING type doesn't allow thin & fat strings.
Proposal: change to the STRING type to be "all vectors with element type a
subtype of CHARACTER" rather than (VECTOR CHARACTER). Specify the
(modified) behavior of various functions that take a type specifier when
given STRING.
<New meaning of STRING type, and its subtypes. Type returned by
(CONCATENATE 'STRING ...) and similar forms. Extensions to COERCE.>
Issue: STRING-TYPE-ABBREVIATIONS
Problem: new types are awkward to name, want abbreviations.
Proposal: add convenient abbreviations for string types & accessors. Define
BASE-CHARACTER = (UPGRADED-ARRAY-ELEMENT-TYPE 'STANDARD-CHAR). Add SCHAR
SBCHAR SGCHAR BASE-STRING MOST-GENERAL-STRING SIMPLE-GENERAL-STRING
SIMPLE-BASE-STRING etc.
<SCHAR. SBCHAR. SGCHAR. BASE-CHARACTER type. Deprecation of STANDARD-CHAR.>
Issue: FILE-EXTERNAL-REPRESENTATION
Problem: can't specify external encoding even when there are lots
Proposal: add standard :EXTERNAL-CODE-FORMAT keyword to OPEN, with
unspecified range.
<:EXTERNAL-CODE-FORMAT option to OPEN>
Issue: CHARACTER-IDENTIFICATION-NONPORTABLE
Problem: Can't portably talk about non-standard characters
Proposal: introduce the notion of Registries, require a fixed set of
registries, standardize on #\registry:id, add all-implemented-registries
and find-character.
This part deals with the mechanism by which characters can be identified
portably between implementations that do not share the same coded character
set.
<Concept of character registries and character labels
Functions and variables for character registries and character labels
Page 9 rules for implementation-defined character registries
New syntax for #\
New syntax for the CHARACTER type specifier, new argument to CHARACTERP
>
Issue: CHARACTER-FUNCTIONS-UNDERSPECIFIED
Problem: how ALPHA-CHAR-P, LOWER-CASE-P work on Kanji, characters with
accents, etc. is not specified.
Proposal: Current proposal is to leave unspecified.
I'd rather specify the 'intent' of the behavior of ALPHA-CHAR-P,
LOWER-CASE-P etc for alphabetic and non-alphabetic scripts (e.g., works for
Greek, no-op for Hangul, etc.)
< Not in current list >
Issue: STRING-BINARY-WIDTH
Problem: Can't find out how many bytes a string will take when written as
text
Proposal: <EXTERNAL-WIDTH function>
Issue: CHAR-CODE-NON-PORTABLE
Problem: no way to talk about well-known external coding methods, only
internal codes
Proposal: Add CHAR-CODED-CHARACTER-SET-VALUE
<CHAR-CODED-CHARACTER-SET-VALUE function.>
∂26-Jan-89 0920 TAJNAI@Score.Stanford.EDU book signing at the Forum annual meeting
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 26 Jan 89 09:20:04 PST
Date: Thu 26 Jan 89 09:14:47-PST
From: Carolyn Tajnai <TAJNAI@Score.Stanford.EDU>
Subject: book signing at the Forum annual meeting
To: faculty@Score.Stanford.EDU
cc: hiller@Score.Stanford.EDU
Message-ID: <12465659865.15.TAJNAI@Score.Stanford.EDU>
Roy Hoyer of the Stanford Bookstore, and I invite
authors, who have published a book since the February 1988 meeting,
to have a book signing from 3 to 4 Wednesday, Feb. 15.
If you like, you may also place 2 or 3 books on the registration table to
give the attendees an advance glance.
Let me know by January 31, and arrangements will be made according to
book availability.
Each year the Bookstore arranges a 10% promotion on computer science books
during Forum week. This sounds like fun! Lunch will be at Tresidder, and
poster sessions will be held in CERAS from 1:30 to 4:00, so the traffic will
be around the Bookstore area.
So let me know, and I'll take it from there........
Carolyn
-------
∂26-Jan-89 0924 @Score.Stanford.EDU:goldberg@Jinn.stanford.edu Industrial Lecturer Appointment
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 26 Jan 89 09:24:28 PST
Received: from Jinn.stanford.edu by SCORE.STANFORD.EDU with TCP; Thu 26 Jan 89 09:15:07-PST
Received: by Jinn.stanford.edu (4.0/25-eef) id AA15701; Thu, 26 Jan 89 09:16:03 PST
Date: Thu, 26 Jan 89 09:16:03 PST
From: Andrew Goldberg <goldberg@Jinn.stanford.edu>
Message-Id: <8901261716.AA15701@Jinn.stanford.edu>
To: faculty@score
Subject: Industrial Lecturer Appointment
The Visiting Prof. Committee is considering appointing Douglas Lenat
as an Industrial Lecturer for the next year. Many of you know
him, both because of his work and because he was at Stanford for
several years.
Doug Lenant's resume is available from Rosemary Napier, MJH 340, for
any faculty member who wants to look at it.
--Andy
∂26-Jan-89 1349 GENESERETH@Score.Stanford.EDU Re: Industrial Lecturer Appointment
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 26 Jan 89 13:49:45 PST
Date: Thu 26 Jan 89 13:45:08-PST
From: Mike Genesereth <GENESERETH@Score.Stanford.EDU>
Subject: Re: Industrial Lecturer Appointment
To: goldberg@Jinn.Stanford.EDU
cc: faculty@Score.Stanford.EDU
In-Reply-To: <8901261716.AA15701@Jinn.stanford.edu>
Message-ID: <12465709081.31.GENESERETH@Score.Stanford.EDU>
Andy,
This seems inappropriate, since we just appointed hi a consulting
professor. Yes, it would be nice to have him give some lectures,
but his lectuires were one of the bases on which we made the
consulting propfessor appointment. Since he is already affiliated
with the department, what is the additional advantage of this
appointment?
mrg
PS Don't read anything between the lines here. Doug is a friend,
and I am interested in taking a look at his recent work. My
comment should be taken at face value. I odn't understand the
rationale for this proposal.
-------
∂26-Jan-89 1352 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Combinatorial Enumeration Question
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 26 Jan 89 13:51:55 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA03712; Thu, 26 Jan 89 13:50:59 -0800
Message-Id: <8901262150.AA03712@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Thu, 26 Jan 89 13:48:42 PST
Received: by BYUADMIN (Mailer R2.01A) id 4047; Thu, 26 Jan 89 14:47:06 MST
Date: Thu, 26 Jan 89 14:27:59 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
David Jones <djones@POLYA.STANFORD.EDU>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: David Jones <djones@POLYA.STANFORD.EDU>
Subject: Combinatorial Enumeration Question
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
I would very much appreciate any leads people can give me on
the following question:
How many non-isomorphic X's are there of order N?
where X= { group, graph }
Since I doubt the answers are known in general form, I'd be pleased
with bounds, or answers for particular values of N - say up to 10.
Please reply directly to:
djones@polya.stanford.edu
∂26-Jan-89 1403 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu TCS day at Maryland
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 26 Jan 89 14:03:49 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA04636; Thu, 26 Jan 89 14:02:56 -0800
Message-Id: <8901262202.AA04636@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Thu, 26 Jan 89 14:01:55 PST
Received: by BYUADMIN (Mailer R2.01A) id 4626; Thu, 26 Jan 89 14:58:24 MST
Date: Thu, 26 Jan 89 14:07:57 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Uzi Vishkin <vishkin@UZISUN.UMIACS.UMD.EDU>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Uzi Vishkin <vishkin@UZISUN.UMIACS.UMD.EDU>
Subject: TCS day at Maryland
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
PRELIMINARY ANNOUNCEMENT
Theoretical Computer Science Day
Institute for Advanced Computer Studies
University of Maryland
College Park, MD
The University of Maryland Institute for Advanced Computer Studies
(UMIACS) is organizing a theoretical computer science day
on Monday, April 17, 1989.
PROGRAM
9:30 -9:50 - Refreshments
9:50 -10:00 - Greeetings
Larry S. Davis
Director, UMIACS
10:00-11:00 - Speaker: Zvi Galil
Columbia University and Tel Aviv University
Title: Sparse Dynamic Programming
11:00-12:00 - Speaker: S. Rao Kosaraju
Johns Hopkins University
Title: Selection by a tree of processors
12:00-2:00 - Lunch break
2:00 -3:00 - Speaker: Gary L. Miller
Carnegie-Mellon University and University of Southern California
Title: Parallel Algorithm Design for Planar Graphs
3:00 -4:00 - Speaker: Andrew C. Yao
Princeton University
Title: Boolean circuits and neural networks
4:15 -5:30 - Reception
PLACE: Center for Adult Education, University of Maryland, College Park.
DIRECTIONS: College Park is just outside of Washington, DC. It is about
10 miles from the Capitol. The Center for Adult Education is located on
the western edge of the College Park campus at the intersection of
Adelphi Road, University Boulevard (Maryland Route 193), and campus Drive.
To reach the Center from the Washington Beltway, take the Route 1
exit south to University Boulevard westbound.
If you have any questions or would like a map, please contact
Cecilia Kullman at (301) 454-1808 or by e-mail (cecilia@umiacs.umd.edu)
PLEASE POST
∂26-Jan-89 1444 TAJNAI@Score.Stanford.EDU Affiliates "Tax"
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 26 Jan 89 14:44:07 PST
Return-Path: <hellman@isl.Stanford.EDU>
Received: from isl.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Thu 26 Jan 89 13:48:47-PST
Received: by isl.Stanford.EDU (3.2/4.7); Thu, 26 Jan 89 13:46:49 PST
Date: Thu, 26 Jan 89 13:46:49 PST
From: hellman@isl.Stanford.EDU (Martin Hellman)
To: leboeuf@sierra
Subject: Affiliates "Tax"
Cc: char@isl.Stanford.EDU, goodman@sierra, gray@isl.Stanford.EDU, inan@sierra,
pease@sierra, tajnai@score
ReSent-Date: Thu 26 Jan 89 14:39:49-PST
ReSent-From: Carolyn Tajnai <TAJNAI@Score.Stanford.EDU>
ReSent-To: faculty@Score.Stanford.EDU
ReSent-Message-ID: <12465719034.39.TAJNAI@Score.Stanford.EDU>
TO: Elliott Levinthal
Associate Dean for Research
FROM: Martin Hellman, Director Information Systems Lab, EE Dept.
I am responding to your memo on the possibility of taxing gift
and affiliate funds. I have attached the information you
requested at the end of this memo. I have also solicited input
from our faculty on this proposal and have incorporated their
input.
I think it is an excellent idea to review the whole question of
indirect costs. But the question of whether affiliate or gift
funds should be "taxed" needs to be dealt with along with the
question of whether contract and grant funds are being strangled
by overtaxation. I am attaching a copy of my memo of last
October 27 to Joe Goodman (copied to Jim Gibbons) which deals
with that issue.
A tax on affiliate funds would be particularly inappropriate and
galling because we use most of those funds to pay for things that
the university should pay for out of the overhead we already are
paying on our contracts and grants. For example, within the last
year, we used over $10k of our affiliate fund to pay for
maintenance of and improvement to our physical plant, which
clearly should be an overhead item. This year our normal
allocation from overhead for such expenses is only $900 for a
group of fifteen faculty, 75 grad students, six secretaries, plus
several research associates. Our annual sponsored research
budget is approximately $3 million which means that we
contributed over $1 million in overhead, and yet we are allocated
only $900 for furniture and physical plant maintenance. Clearly,
we have to augment these funds, as we have done. (The Dept and
School matched our funds, but I believe these too came from gift
funds, not overhead.)
I think you can imagine how we would feel at having to pay some
kind of overhead on affiliate funds that are used to pay for what
overhead should have paid for to begin with. From this end, a
lot of what is charged as overhead seems like a way for the
university to convert contract dollars into unrestricted funds,
as when a new building is paid for by a gift but depreciation on
that same building is then added to the overhead pool. Such
actions would not not be a problem if they had not been carried
to an extreme and resulted in an unbearable burden on our
faculty.
Gift funds are a slightly different matter. Some of them also
are used to pay for things that should be covered by overhead,
and taxing these would be just as inappropriate as taxing
affiliate funds. Other gift funds are close to contracts or
grants and, here, some kind of tax might be appropriate IF the
overhead charges to contracts and grants are reduced by the same
amount.
I know that accounting rules would theoretically require such a
reduction, but with the overhead rate reaching an embarrassing
level, I fear that taxing gift funds would be used as a way to
increase the "overhead take" without it appearing so bad. We
have reached such a ridiculous point that we cannot afford adding
to the overhead pool every expense which can be justified by
accounting rules. At some point, reason must prevail.
One of our faculty who is in the process of soliciting gift
support from industry asked me to note that he was told that the
gifts would be withdrawn if overhead or other taxes were added.
The perception of his donors seems to be that the university is
being greedy. (Another faculty member told me that DARPA is
complaining to him that their research dollar buys much less at
Stanford than at some other comparable institutions, notably
Berkeley, and that they might shift support accordingly.)
Another of our faculty felt that a small, perhaps 5%, "tax" on
gift funds used to support research might be appropriate but only
if the rate were guaranteed for a long period of time on the
order of ten years. He, along with many others, expressed
concern about the rate moving up rapidly once the precedent was
set. Looking at what has happened to overhead rates, I share
that concern.
I imagine that what I am proposing is not what the university had
in mind when it opened up the question of taxing gift funds. But
I hope that this memo explains why the broader issue is one that
must be addressed. Thank you.
Martin Hellman
Director, ISL
----- copy of my earlier memo of 10/27/88 to Prof. Goodman -----
To: goodman
Subject: overhead
Cc: gibbons@sierra
Bcc: faculty@isl
Oct 27, 1988
Dear Joe:
This message is a follow-up to our phone conversation of
yesterday evening concerning overhead rates. I have been
concerned with this issue for some time and, since becoming
Director of ISL earlier this year, I have been approached by a
number of faculty who also wished to bring it to my attention.
Basically, we are paying an outrageous overhead rate and getting
very little in return. Patience is wearing thin and, if things
continue along current lines, something will break. I know that
overhead funds have been a great asset to the university as a
whole and I do not wish to see that source of strength
eliminated. But there has to be a new sense of proportion and
reasonableness at all levels of the university.
The overhead percentage itself is quite high, but the real
overhead rate is even higher. In industry, overhead includes
copying, building repair and maintenance, postage and many other
things that we bill as direct costs. When all this is taken into
account, I would not be surprised if our overhead rate were
higher than many in industry.
To say the least, it is annoying when the faculty in our lab pay
over a million dollars a year in overhead to be expected to pay
for every little thing (e.g., new chairs to replace three that
are so badly broken they can't be sat on, window cleaning, rug
cleaning), or at a minimum, to have to make a case for Department
or School funds to be used for such small purchases.
I know the university must justify the full overhead percentage
to get the government approval. But, even if justified on
accounting grounds, one must look at reasonableness. For
example, the new building program is certainly needed. We
currently have research associates and visiting professors jammed
into grad student bull pens. But I do not believe it is right to
add the depreciation on new buildings into the overhead base if
they are paid for by gifts. That way the university gets the
money twice, first as a gift and again as overhead. If the
overhead rate were more reasonable, we might overlook such
accounting practices. But when the goose that lays the golden
egg is in danger of dying from exhaustion, it is time to think
differently.
Thanks very much for considering these thoughts.
Martin Hellman
Director, Information Systems Lab
------ Information Requested by Dean Levinthal ----------
I. Income:
a. Earnings last year $160,000
Current year estimate $220,000
b. 16 member companies last year
18 member companies this year
c. Annual fee $10,000
II. Allocations: (These are approximate averages per year.
Exact figures are difficult because of major variations from year
to year and other factors.)
a. General academic support: $10,000
b. Support of scheduled courses: $10,000
c. Administration of Program: $20,000
d. Group research support: $ 0
e. Individual faculty allocation: $50,000
f. Computers and maintenance: $50,000
g. Graduate Student support:
h. Visiting Scholars: $10,000
i. Physical plant maint & improvement: $10,000
∂26-Jan-89 1803 X3J13-mailer Re: Comments on the Character proposal dated January 1, 1989
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 26 Jan 89 18:03:05 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 527962; Thu 26-Jan-89 21:00:31 EST
Date: Thu, 26 Jan 89 21:01 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: Re: Comments on the Character proposal dated January 1, 1989
To: masinter.pa@Xerox.COM
cc: X3J13@SAIL.STANFORD.EDU, Common-Lisp-Implementors@STONY-BROOK.SCRC.Symbolics.COM,
KMP@STONY-BROOK.SCRC.Symbolics.COM, Palter@STONY-BROOK.SCRC.Symbolics.COM
In-Reply-To: <890125-235920-8229@Xerox>
Message-ID: <19890127020101.7.MOON@EUPHRATES.SCRC.Symbolics.COM>
Line-fold: No
Date: 25 Jan 89 23:57 PST
From: masinter.pa@Xerox.COM
<New rules for names of symbols.> What new rules?
There are several mentions of symbol names in the report, but maybe
those are just wording changes and nothing new. I think I was referring
mainly to the 8th and 9th bullets on p.44, relating to READ's handling
of implementation-defined character attributes.
<:ELEMENT-TYPE option to OPEN.> I thought this was removed from the
proposal.
Bottom of p.40, top of p.41. The terrible format of the proposal makes
it difficult to tell that these sections are referring to :element-type,
but they are.
You're probably thinking of the :character-set option to OPEN, which was
removed.
<Removal or deprecation of the semi-standard format effector characters.> I
guess I don't understand this.
Pages 19,37, 38 of the report and I think a couple of other pages as
well. CLtL p.21.
<Support of extended characters in the readtable.> I thought this falls out
of character type?
Top of p.39 of the report. I don't know what you mean by "falls out", except
perhaps that with the issues divided up, there are some combinations of votes
that only a lunatic would vote. True.
<Miscellaneous other and editorial changes> not sure what they are...
Pages 15 through 44 of the report, except for the 20% or so of that material
covered by explicit ballot items. I'm not sure what they are either.
Your bundlings of issues seem okay to me, although I suspect that if someone
wrote them up properly, they would discover that some of them had been
bundled too tightly and needed to be split. For instance, putting the
removal or deprecation of CHAR-INT and INT-CHAR into CHAR-FONT-UNUSED
doesn't entirely make sense. The others seem good.
If CHAR-FONT-UNUSED fails, or if people only wanted to eliminate CHAR-FONT and not
CHAR-BITS, most of the rest of the proposals get more complicated.
If that's really true, there is something wrong, as it must mean that
the other proposals wouldn't work in the face of implementation-defined
character attributes.
∂26-Jan-89 1926 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu SUMMER MEETING FOR YOUNG SCIENTISTS
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 26 Jan 89 19:26:38 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA22392; Thu, 26 Jan 89 19:25:51 -0800
Message-Id: <8901270325.AA22392@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Thu, 26 Jan 89 19:25:00 PST
Received: by BYUADMIN (Mailer R2.01A) id 3317; Thu, 26 Jan 89 20:23:26 MST
Date: Thu, 26 Jan 89 21:10:25 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
lescanne%CARTAN.CRIN.FR@Forsythe.Stanford.EDU
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: lescanne%CARTAN.CRIN.FR@Forsythe.Stanford.EDU
Subject: SUMMER MEETING FOR YOUNG SCIENTISTS
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
INTERNATIONAL SUMMER MEETING FOR YOUNG SCIENTISTS
ALGEBRAIC AND LOGIC PROGRAMMING
Dresden University of Technology, Department of Mathematics intends to
organize a meeting for young scientists on Algebraic and logic
Programming. The notion of a young scientist ought to be understood
liberally (students and Ph.D. students, e.g.) The meeting is planned
to take place in Dresden
September 4-8 1989
and will be organized by Peter Bachmann and Michael Beetz.
The scientific program of the five days will contain the following issues:
Invited lecturers will give tutorials on the following topics:
Algebraic foundations, term rewriting techniques or logic programming
and its implementation.
The main aim is the informal discussion. Therefore, each participant
is asked to give a short presentation of his current field of
research. Complete results are not always expected for these talks.
To realize low costs (about 50 DM without meal) it is planned to
accommodate the participants in a student hotel. Please return the
application form for taking part by
March 3, 1989
Peter Bachmann Michael Beetz
------------------- cut here ------------------------------------------
Peter Bachmann, Michael Beetz
International Summer Meeting
Dresden University of Technology
Department of Mathematics
Mommenstrasse 13
8027 DRESDEN
German Democratic Republic
Application form
In order to take part in the summer meeting, please, fill in this form
and mail it to above address by March 3, 1989. Please use capitals or
typewriter.
I WISH TO PARTICIPATE IN THE SUMMER MEETING.
Personal details:
Name: __________________________________ _____________________
family name maiden name
__________________________________ male [] / female []
given name
Academic degree: ________________________________________________
College/Institute: ______________________________________________
Telephone/Telex: _______________________________________________
Title of contribution (if already known): ________________________
_________________________________________________________________
_________________________________________________________________
For visa applications:
Date of birth: __________________________________________________
Place of birth: _________________________________________________
Home address : __________________________________________________
____________________________________________________________
Citizenship: ____________________________________________________
Passport Number: _____________________ Issued by: ______________
Border crossing point (if known): ______________________________
Duration of the stay in the GDR from ________ to ________________
___________________ _____________________
date signature
tel. (3751) 46 35 355 Telex 2278z teuni dd
∂26-Jan-89 1928 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu bibliography on semantics of inheritance
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 26 Jan 89 19:28:34 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA22426; Thu, 26 Jan 89 19:27:47 -0800
Message-Id: <8901270327.AA22426@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Thu, 26 Jan 89 19:26:55 PST
Received: by BYUADMIN (Mailer R2.01A) id 3391; Thu, 26 Jan 89 20:24:07 MST
Date: Thu, 26 Jan 89 21:13:20 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Diptendu Dutta <dutta%SKORPIO.USASK.CA@Forsythe.Stanford.EDU>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Diptendu Dutta <dutta%SKORPIO.USASK.CA@Forsythe.Stanford.EDU>
Subject: bibliography on semantics of inheritance
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
In connection with my research work I made up this list. With the
recent interest in OOP and inheritance, I hope there would be more
interest in this area. All the papers referred to in the bibliography are
not hard-core "semantics" papers. I included some relevant papers
which are more general.
Please post about other references in this subject which are known to
you.
------------------------------------------------------------------------
Bibliography on Semantics of Inheritance
----------------------------------------
1. [Ait-Kaci 84] Hassan Ait-Kaci. A Lattice Theoretic Approach to
Computation Based On A Calculus of Partially Ordered Type Structures.
Ph.D dissertation, Computer & Information Sciences Dept., Univ. of
Pennsylvania. 1984.
2. [Albano 83] Antonio Albano. Type Hierarchies & Semantic Data
Models. Sigplan Notices, vol. 18, no. 6, pp 178-186,June 1983.
3. [Bruce & Wegner 86] Kim B. Bruce & Peter Wegner. An Algebraic Model
of Subtypes In Object Oriented Languages. Sigplan Notices, vol. 21,
no. 10, October 1986.
4. [Bruce & Longo 88] Kim B. Bruce & Giuseppe Longo. A Modest Model of
Records, Inheritance & Bounded Quantification. Proceedings of the 3rd
Logic in Computer Science conf. 1988.
5. [Cardelli 84] Luca Cardelli. A Semantics of Multiple Inheritance.
In LNCS #173, Semantics of Data Types. Springer-Verlag. 1984.
6. [Cardelli 88] Luca Cardelli. Structural Subtyping and the notion of
Power Types. In POPL 88.
7. [Cardelli & Wegner 85] L. Cardelli & P. Wegner. On Understanding
Types, Data Abstraction, and Polymorphism. Computing Surveys, vol. 17,
no. 4, Dec. 1985.
8. [Cook 87] W.R.Cook. A Denotational Semantics of Inheritance
(extended abstract). Brown University. Dept. of CS. July 1987.
9. [Danforth & Tomlinson 88] Scott Danforth & Chris Tomlinson. Type
Theories and Object Oriented Programming. Computing Surveys, vol. 20,
no. 1, March 1988.
10. [Dugerdil 86] P. Dugerdil. The Filtering Process: A Mechanism for
Modelling Inheritance in Object Oriented Languages. Advantages In
Artificial Intelligence. Kogan Page Ltd. 1987.
11. [Goguen & Meseguer 88] Joseph A. Goguen & Jose Meseguer. Ordered
Sorted Algebras I: Equational Deduction for Multiple Inheritance,
Polymorphism & Partial Operation. SRI International. 1988.
12. [Kamin 88] Samuel Kamin. Inheritance in Smalltalk80: A
Denotational Definition. POPL 88.
13. [Liskov 87] Barbara Liskov. Data Abstraction & Hierarchy.
OOPSLA87.
14. [Martini 88] Simone Martini. Bounded Quantifiers Have Interval
Models. ACM conf. on Lisp & FP. 1988.
15. [Reddy 87] U. Reddy. On The Semantics Of Object Oriented Languages
(manuscript). Univ. of Illinois. May 1987.
16. [Reynolds 80] John C. Reynolds. Using Category Theory to Design
Implicit Conversions and Generic Operators. LNCS #94,
Semantics-Directed Compiler Generation. Springer-Verlag. 1980.
17. [Toureztky 86] D. Toureztky. The Semantics of Inheritance Systems.
Morgan-Kaufman. 1986.
18. [Wegner 87] Peter Wegner. The Object Oriented Classification
Paradigm. In Research Directions in Object Oriented Programming,
edited by Bruce Shriver & Peter Wegner. Prentice Hall. 1987.
19. [Wolczko 87] M. Wolczko. Semantics of Smalltalk-80. European Conf.
on OO Prgramming. Paris. June 1987.
20. [Zamulin 87] A. V. Zamulin. Relation Between Data Types.
Programmirovanie, no. 4, July-Aug, 1987.
-----------------------------------------------------------------
Diptendu Dutta
Dept of Computational Science
Univ. of Saskatchewan
Saskatoon S7N 0W0 Canada
email adress: dutta@skorpio.usask.ca
∂26-Jan-89 2139 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu PODS 89 - advanced program
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 26 Jan 89 21:39:11 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA26005; Thu, 26 Jan 89 21:38:10 -0800
Message-Id: <8901270538.AA26005@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Thu, 26 Jan 89 21:37:18 PST
Received: by BYUADMIN (Mailer R2.01A) id 3831; Thu, 26 Jan 89 22:33:21 MST
Date: Thu, 26 Jan 89 23:15:15 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
imielins@MARCIN.RUTGERS.EDU
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: imielins@MARCIN.RUTGERS.EDU
Subject: PODS 89 - advanced program
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
Eighth ACM SIGACT-SIGMOD-SIGART Symposium
on
PRINCIPLES OF DATABASE SYSTEMS
Philadelphia, Pennsylvania, March 29-31, 1989
INFORMATION
LOCATION
The 8th ACM Symposium on Principles of Database Systems will be held
at The Warwick, a four star hotel, situated in the heart of downtown
Philadelphia, within walking distance from first class restaurants,
concert halls, theaters and galleries. The Warwick Hotel,
a Historical Landmark, combines 19th-century atmosphere with
20th-century amenities.
Checkout and checkin time is noon;
A block of rooms has been reserved until March 6th, 1989.
Please reserve a room by using the form provided or by calling 800-523-4210
Room rates and availability are not guaranteed past March 6th.
REGISTRATION
Advanced registration is requested using the form provided.
Registration rates go up markedly after March 6th. A registration
desk will be open Tuesday night from 7:30pm to 10:00pm, and during the
day on Wednesday (8:30 am to 4:30 pm). Registrants, other than
students, receive admission to the technical sessions, one copy of the
proceedings, reception, lunch, and a banquet at the historical
Franklin Institute.
Student registration, available to full-time students only, includes
the technical sessions, reception and one copy of the proceedings.
Additional copies of the proceedings will be available for sale at
the registration desk.
TRANSPORTATION
There are two choices for ground transportation from the airport to the hotel.
The limousine service from the airport to major Philadelphia hotels including
Warwick is available for about 6 dollars/person. Additionally, taxi fare
to the hotel is about 25 dollars.
For participants driving to The Warwick, parking is available at
the rate 8.50/day at Penn Warwick lot on Chancellor and 17th street.
5 dollar/day rebate is provided for those participants who stay in the hotel.
CLIMATE
Normal daily temperatures in Philadelphia
in March range from 35 to 50 degrees F.
Occasional cold fronts bring northerly winds but snow is rare
at this time of the year.
EVENT LOCATION
All technical sessions, reception, lunch, and business meeting will be held
at The Warwick Hotel. On Thursday night there will be a reception
and banquet at the historical Franklin institute at 20th & the Parkway,
walking distance from the hotel.
TECHNICAL PROGRAM
TUESDAY, MARCH 28, 1989
Reception: 7:30 pm - 10:00 pm, Crystal Room
WEDNESDAY, MARCH 29, 1989
Note: All talks will take place in the Ballroom
TUTORIAL 1: 8:15 am - 9:15 am
Non-monotonic Reasoning,
Teodor C. Przymusinski (University of Texas at El Paso)
SESSION 1: 9:30 am - 10:40 am
Chair: Tomasz Imielinski (Rutgers University)
The Alternating Fixpoint of Logic Programs with Negation
Allen Van Gelder (University of California, Santa Cruz)
Every Logic Program has a Natural Stratification and an Iterated Fixed
Point Model, Teodor C. Przymusinski (University of Texas at El Paso)
A Procedural Semantics for Well Founded Negation in Logic Programs,
Kenneth A. Ross (Stanford University)
Coffee Break: 10:40 am - 11:15 am
SESSION 2: 11:15 am - 12:45 pm
Chair: Teodor C. Przymusinski (University of Texas at El Paso)
Logic Programming as Constructivism: A Formalization and its Application
to Databases, Francois Bry (ECRC, Munich)
Complexity of Query Processing in Databases with OR-Objects,
T. Imielinski and K. Vadaparty (Rutgers University)
A Sound and Complete Query Evaluation Algorithm for Relational Databases
with Disjunctive Information, Li Yan Yuan and Ding-An Chiang (University
of Alberta)
Horn Tables - An Efficient Tool for Handling Incomplete Information in
Databases, Gosta Grahne (University of Helsinki)
Lunch: 12:45 pm - 2:15 pm
SESSION 3: 2:15 pm - 3:45 pm
Chair: Carlo Zaniolo (MCC)
Invited Talk: Automata Theory for Database Theoreticians,
Moshe Y. Vardi (IBM Almaden Research Center)
Declarative Expression of Deductive Database Updates,
Sanjay Manchanda (University of Arizona)
Updating Databases in the Weak Instance Model,
Paolo Atzeni (Universita di Napoli and IASI-CNR) and Riccardo Torlone
(IASI-CNR)
Coffee Break: 3:45 pm - 4:15 pm
SESSION 4: 4:15 pm - 5:45 pm
Chair: Daniel J. Rosenkrantz (SUNY at Albany)
Attribute Agreement,
Y. C. Tay (National University of Singapore)
Can Constant-time-maintainability be More Practical?
Ke Wang (Chongqing University, PRC)
Practical Algorithms for Finding Prime Attributes and Testing Normal Forms,
Heikki Mannila (University of Helsinki) and Kari-Jouko Raiha (Univeristy
of Tampere)
A Decision Procedure for Conjunctive Query Disjointness,
Charles Elkan (Cornell University)
Business Meeting: 8:30 pm - 10:00 pm,
THURSDAY, MARCH 30, 1989
TUTORIAL 2: 8:15 am - 9:15 am
Recursive Query Processing,
Catriel Beeri (Hebrew University)
SESSION 5: 9:30 am - 10:40 am
Chair: Catriel Beeri (Hebrew University)
Bottom-up Beats Top-down for Datalog,
Jeffrey D. Ullman (Stanford University)
On the Power of Alexander Templates,
Hirohisa Seki (Institute for New Generation Computer Technology, Tokyo)
Safety of Datalog Queries over Infinite Databases,
Yehoshua Sagiv (Hebrew University) and Moshe Y. Vardi
(IBM Almaden Research Center)
Coffee Break: 10:40 am - 11:15 am
SESSION 6: 11:15 am - 12:45 pm
Chair: Michael Kifer (SUNY at Stony Brook)
Proof-tree Transformation Theorems and Their Applications,
Raghu Ramakrishnan (University of Wisconsin), Yehoshua Sagi
(Hebrew University), Jeffrey D. Ullman (Stanford University), and
Moshe Y. Vardi (IBM Almaden Research Center)
Linearising Nonlinear Recursions in Polynomial Time,
Yatin P. Saraiya (Stanford University)
Inference of Monotonicity Constraints in Datalog Programs,
Alexander Brodsky and Yehoshua Sagiv (Hebrew University)
Why a Single Parallelization Strategy is Not Enough in Knowledge Bases,
Simona Cohen and Ouri Wolfson (Technion)
Lunch: 12:45 pm - 2:15 pm
SESSION 7: 2:15 pm - 3:45 pm
Chair: William E. Weihl (MIT)
Invited Talk: Modular Architectures for Distributed and Database Systems,
Alfred Z. Spector (Carnegie-Mellon University)
Clustered Multiattribute Hash Files,
Doron Rotem (University of California, Berkeley)
Utilization of B-trees with Inserts, Deletes and Modifies,
Theodore Johnson and Dennis Shasha (New York University)
Coffee Break: 3:45 pm - 4:15 pm
SESSION 8: 4:15 pm - 5:30 pm
Chair: Hector Garcia-Molina (Princeton University)
Fractals for Secondary Key Retrieval,
Christos Faloutsos and Shari Roseman (University of Maryland, College Park)
Declustering Using Error Correcting Codes,
Christos Faloutsos and Dimitrios Metaxas (University of Maryland, College Park)
The Impact of Recovery on Concurrency Control,
William E. Weihl (MIT)
Concurrency Control for Nested Transactions Accessing B-trees,
Ada Fu and Tiko Kameda (Simon Fraser University)
Reception and Banquet at Franklin Institute, 6-10 pm.
FRIDAY, MARCH 31, 1989
TUTORIAL 3: 8:15-9:15
Expressive Power of Query Languages,
Victor Vianu (University of California, San Diego)
SESSION 9: 9:30 am - 10:40 am
Chair: Victor Vianu (University of California, San Diego)
Hypothetical Datalog with Stratification: Complexity and Expressibility,
Anthony J. Bonner (Rutgers University)
Inductive Pebble Games and the Expressive Power of Datalog,
V. S. Lakshmanan and A. O. Mendelzon (University of Toronto)
On the First-Order Expressibility of Recursive Queries,
Stavros S. Cosmadakis (IBM T.J. Watson Research Center)
Coffee Break: 10:40 am - 11:15 am
SESSION 10: 11:15 am - 12:45 pm
Chair: Ashok K. Chandra (IBM T.J. Watson Research Center)
Expressibility of Bounded-Arity Fixed-Point Query Hierarchies,
Pratul Dublish and S. N. Maheshwari (IIT Delhi)
Relational Database Behavior: Utilizing Relational Discrete Event Systems
and Models, Zvi M. Kedem and Alexander Tuzhilin (New York University)
Untyped Sets, Invention, and Computable Queries,
Richard Hull and Jianwen Su (University of Southern California)
Lunch: 12:45 pm - 2:15 pm
SESSION 11: 2:15 pm - 3:45 pm
Chair: Oded Shmueli (Technion)
Modeling Complex Structures in Object-Oriented Databases,
C. Lecluse and P. Richard (GIP Altair)
C-Logic of Complex Objects,
Weidong Chen and David S. Warren (SUNY at Stony Brook)
A Logic for Object-Oriented Logic Programming (Maier's O-Logic: Revisited),
Michael Kifer and James Wu (SUNY at Stony Brook)
Type Systems for Querying Class Hierarchies with Non-Strict Inheritance,
Alexander Borgida (Rutgers University)
-------------------------------------------------------------------------------
CONFERENCE ORGANIZATION
Sponsors: SIGACT, SIGMOD, and SIGART
Executive Committee: Ashok K. Chandra, Seymour Ginsburg,
Tomasz Imielinski, Avi Silberschatz,
Moshe Y. Vardi, Mihalis Yannakakis
Conference Chair: Avi Silberschatz, Dept. of Computer Sciences,
University of Texas at Austin, Austin, Texas 78712.
(512) 471-9706, avi@cs.utexas.edu
Program Chair: Ashok K. Chandra, IBM T.J. Watson Research Center
P.O. Box 218, Yorktown Heights, NY 10598.
(914) 945-1752, ashok@ibm.com (bitnet ASHOK@YKTVMV)
Local Arrangements Chair: Tomasz Imielinski, Dept. of Computer Science,
Rutgers University, New Brunswick, NJ 08903.
(201) 932-3551, imielinski@aramis.rutgers.edu
Program Committee: Catriel Beeri, Ashok K. Chandra, Hector Garcia-Molina,
Michael Kifer, Teodor C. Przymusinski, Daniel J. Rosenkrantz, Oded Shmueli,
Victor Vianu, William E. Weihl, Carlo Zaniolo.
ADVANCE REGISTRATION FORM, ACM-PODS
Please send this form or a facsimile along with a money order or check
(payable to 8th ACM SYMPOSIUM ON PRINCIPLES OF DATABASE SYSTEMS) to:
ACM-PODS Registration
c/o Carol Petty
Dept. of Computer Science
Rutgers University
New Brunswick, NJ 08903
(Before Mar. 6) (After)
ACM and SIG member $220 $285
ACM member only $230 $295
SIG member only $235 $300
Nonmember $285 $350
Student $ 50 $ 60
Requests for refunds will be honored until March 6, 1989.
Name_____________________________________________________________
Affiliation_________________________________________________________
City_____________________________State________________Zip__________
Country_____________________________Telephone______________________
Net Address________________________________________________________
_____ Check here if confirmation of registration is required.
Dietary restrictions: _______Kosher _______Vegetarian
HOTEL RESERVATION FORM, ACM-PODS March 1989
Please mail this form or a facsimile (being sure to mention the ACM-PODS
Conference) by March 6 to:
The Warwick Hotel,
17th at Locust Street
Philadelphia, PA 19103
Tel: (215) 735-6000
or (800) 523-4210
Accomodations desired:
_____Single $80
_____Double $90
Arrival date_____________________________________Time__________________________
Departure date___________________________________Time__________________________
Name_________________________________________________________________________
Sharing room with______________________________________________________________
Address________________________________________________________________________
City_______________________________State__________________Zip__________________
Country________________________________________________________________________
All rooms will be held until 4pm the day of arrival without deposit/guarantee.
For arrivals later than 4pm please guarantee to a major credit card:
_____Amer. Express _____VISA _____Mastercard _____Diners _____Discover
Credit Card number____________________________________________________________
Exp. Date___________________________________________________________________
Signature____________________________________________________________________
∂26-Jan-89 2300 @polya.Stanford.EDU:tah@linz MTC Seminar
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 26 Jan 89 23:00:49 PST
Received: from linz.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA27812; Thu, 26 Jan 89 22:59:21 -0800
Received: by linz.stanford.edu (5.59/25-eef) id AA27752; Thu, 26 Jan 89 22:53:13 PDT
Message-Id: <8901270653.AA27752@linz.stanford.edu>
To: lop@polya
Subject: MTC Seminar
Reply-To: tah@cs.stanford.edu
Date: 26 Jan 89 22:53:11 PST (Thu)
From: Tom Henzinger <tah@linz>
Jan. 27, MJH 301:
Martin Rinard will talk about Kahn semantics for dataflow networks,
the Brock-Ackerman anomaly, and fully abstract trace models (from
the paper of B. Jonsson at POPL 89).
We'll start a bit late, at 12:10.
∂27-Jan-89 0307 X3J13-mailer Issues DECLARATION-SCOPE and DEFINING-MACROS-NON-TOP-LEVEL
Received: from lucid.com by SAIL.Stanford.EDU with TCP; 27 Jan 89 03:07:49 PST
Received: from bhopal ([192.9.200.13]) by heavens-gate.lucid.com id AA13678g; Fri, 27 Jan 89 03:02:12 PST
Received: by bhopal id AA17641g; Fri, 27 Jan 89 03:04:33 PST
Date: Fri, 27 Jan 89 03:04:33 PST
From: Jon L White <jonl@lucid.com>
Message-Id: <8901271104.AA17641@bhopal>
To: barmar@Think.COM
Cc: Moon@stony-brook.scrc.symbolics.com, sandra%defun@cs.utah.edu,
X3J13@sail.stanford.edu
In-Reply-To: Barry Margolin's message of Wed, 25 Jan 89 12:32 EST <19890125173236.0.BARMAR@OCCAM.THINK.COM>
Subject: Issues DECLARATION-SCOPE and DEFINING-MACROS-NON-TOP-LEVEL
re: I think JonL meant that toplevel implies null lexical environment, not
the other way around.
You're quite right. The context of the two examples I gave was to make
very clear that LOCALLY implies a non-null lexical environment, and that
you can't simply "fake it" at toplevel. As Bacher points out, it is
rather unsettling to have "toplevel" pass through this construct with
lexical appendages, but be blocked by the straightforward EVAL-WHEN.
[However, it's not clear to me whether Walters original suggestion really
did have the implication that moon inferred. I found Rob MacLaughlin's
"early-eval/late-eval" semantics for compilation processing a bit hard
to follow; but it's entirely possible that he *would* have processed
the defmacro in moon's oddp example.]
Still waiting for someone to suggest that the term "toplevel" be
abandoned for this purpose, and some more agressive term taken on.
-- JonL --
∂27-Jan-89 0825 @Score.Stanford.EDU:chandler@polya.Stanford.EDU 1/31 Faculty Lunch
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 27 Jan 89 08:25:35 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Fri 27 Jan 89 08:21:48-PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA09219; Fri, 27 Jan 89 08:22:53 -0800
Date: Fri, 27 Jan 1989 8:22:51 PST
From: "Joyce R. Chandler" <chandler@polya.stanford.edu>
To: faculty@score, bureaucrats@score
Cc: linvill@sierra, reis@sierra
Subject: 1/31 Faculty Lunch
Message-Id: <CMM.0.87.601921372.chandler@polya.stanford.edu>
This is to remind you of next week's faculty lunch...12/15 in Margaret Jacks
Hall, room 146. John Linvill and Rick Reis will be our guests and will
discuss the CIS mentor program. Don't forget to mark your calendars!
∂27-Jan-89 0833 @Score.Stanford.EDU:tom@polya.Stanford.EDU NCUBE
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 27 Jan 89 08:33:28 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Fri 27 Jan 89 08:24:14-PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA09293; Fri, 27 Jan 89 08:25:18 -0800
Date: Fri, 27 Jan 89 08:25:18 -0800
From: Tom Dienstbier <tom@polya.Stanford.EDU>
Message-Id: <8901271625.AA09293@polya.Stanford.EDU>
To: csd@polya.Stanford.EDU, su-computers@score, faculty@polya.Stanford.EDU
Subject: NCUBE
Once again the people from NCUBE have asked me if someone may be interested
in using the NCUBE, located in the Department of Computer Science machine
room. The configuration is 64 processors, basically very little memory,
small disk, and tape drive. NCUBE would like to be responsive to research
that could be done on the system, specially if it would be of interest to
NCUBE. My feeling is, the system is pretty archaic to be used sensibly
in the state that it is in. To be usuful, upgraded processors, much
larger cache/memory, software, and ethernet connectivity would be
needed/required.
All this is very expensive and if NCUBE doesn't come through to help out,
it won't make much sense.
Please contact me if you are interested in using this machine or for more
information. I might add that the NCUBE is not currently operated/maintained
by anyone. So whomever may want to use this machine assumes this
responsibility.
I(CSDCF) am a contact with NCUBE for the simple reason that it sits in
my machine room.
The NCUBE folks will be getting back to me early next week. So if there is
interest let me know soon.
If there is not any interest I suspect that it will soon disappear.
Tom Dienstbier
CSDCF
∂27-Jan-89 0918 @Score.Stanford.EDU:tom@polya.Stanford.EDU alto's/dovers
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 27 Jan 89 09:18:17 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Fri 27 Jan 89 09:12:58-PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA10887; Fri, 27 Jan 89 09:14:04 -0800
Date: Fri, 27 Jan 89 09:14:04 -0800
From: Tom Dienstbier <tom@polya.Stanford.EDU>
Message-Id: <8901271714.AA10887@polya.Stanford.EDU>
To: csd@polya.Stanford.EDU, su-computers@polya.Stanford.EDU,
faculty@polya.Stanford.EDU
Subject: alto's/dovers
I am in the process of disposing the Alto's and DOVER printers.
In the past there has been some interest by some of you for this equipment.
If you are still interested please contact me.
Tom Dienstbier
415-723-1767
∂27-Jan-89 1041 @Score.Stanford.EDU:goldberg@Jinn.stanford.edu Potential visitor
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 27 Jan 89 10:41:15 PST
Received: from Jinn.stanford.edu by SCORE.STANFORD.EDU with TCP; Fri 27 Jan 89 10:37:39-PST
Received: by Jinn.stanford.edu (4.0/25-eef) id AA16573; Fri, 27 Jan 89 10:38:35 PST
Date: Fri, 27 Jan 89 10:38:35 PST
From: Andrew Goldberg <goldberg@Jinn.stanford.edu>
Message-Id: <8901271838.AA16573@Jinn.stanford.edu>
To: faculty@score
Subject: Potential visitor
Prof. Mei-rui Xu, Director of the Institute of Information Science
of Beijing University, has applied for a visiting position for the
next year. He has his own support.
Prof. Xu's interests are in VLSI algorithms, computation complexity,
and formal languages.
Is anybody interested in having him as a visitor next year?
I think we should not invite anybody without a faculty "sponsor",
especially since we have many strong candidates and very little space.
Prof. Hu's vitae is available from Rosemary Napier, MJH 340.
--Andy
∂27-Jan-89 1101 @Score.Stanford.EDU:goldberg@Jinn.stanford.edu Industrial Lecturer
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 27 Jan 89 11:00:57 PST
Received: from Jinn.stanford.edu by SCORE.STANFORD.EDU with TCP; Fri 27 Jan 89 10:57:36-PST
Received: by Jinn.stanford.edu (4.0/25-eef) id AA16489; Fri, 27 Jan 89 09:07:39 PST
Date: Fri, 27 Jan 89 09:07:39 PST
From: Andrew Goldberg <goldberg@Jinn.stanford.edu>
Message-Id: <8901271707.AA16489@Jinn.stanford.edu>
To: faculty@score
Subject: Industrial Lecturer
Gio suggested to me that Litwin, who was supposed to teach 309C
as an Industrial Lecturer this spring but cannot make it, may
be able to teach a course next fall. If there are no objections,
I will try to arrange this.
--Andy
∂27-Jan-89 1329 @Score.Stanford.EDU,@polya.Stanford.EDU:hayes@arisia.xerox.com NCUBE
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 27 Jan 89 13:28:58 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Fri 27 Jan 89 13:25:37-PST
Received: from arisia.Xerox.COM by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA28069; Fri, 27 Jan 89 13:26:36 -0800
Received: by arisia.Xerox.COM
(5.59++/IDA-1.2.6) id AA24059; Fri, 27 Jan 89 13:25:12 PST
Date: Fri, 27 Jan 89 13:25:12 PST
From: Pat Hayes <hayes@arisia.xerox.com>
Message-Id: <8901272125.AA24059@arisia.Xerox.COM>
To: csd@polya.Stanford.EDU, su-computers@score.ARPA,
faculty@polya.Stanford.EDU
In-Reply-To: Tom Dienstbier's message of Fri, 27 Jan 89 08:25:18 -0800 <8901271625.AA09293@polya.Stanford.EDU>
Subject: NCUBE
I too have this thing which people might like to use, I guess. You
dont need to know anything about it in detail. Its pretty oldfashioned
and needs a lot of work to make it into something which is more than a
bad joke. Whats more, people using it can only be a damn nuisance to
me. But if thats what you want, then let me know. Sigh. Oh, by the
way, if it breaks, its YOUR FAULT. If you still want it, let me have a
written proposal in the next two days.
Pat
∂29-Jan-89 1101 @Score.Stanford.EDU:nilsson@Tenaya.stanford.edu CIS Mentor program
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 29 Jan 89 11:01:54 PST
Received: from Tenaya.stanford.edu by SCORE.STANFORD.EDU with TCP; Sun 29 Jan 89 10:58:44-PST
Received: by Tenaya.stanford.edu (5.59/25-eef) id AA02236; Sun, 29 Jan 89 10:58:52 PDT
Date: Sun, 29 Jan 89 10:58:52 PDT
From: Nils Nilsson <nilsson@Tenaya.stanford.edu>
Message-Id: <8901291858.AA02236@Tenaya.stanford.edu>
To: faculty@score
Subject: CIS Mentor program
The CIS has worked out an excellent arrangement with their member
companies that associates graduate students with companies and
provides PhD research assistantships in the process. This program
will undoubtedly be of interest to many faculty in CS. It will be
explained at our faculty lunch this coming Tuesday, January 31, by
Rick Reis and John Linvill. 12:15, MJH 146.
[For future planning: The 2/7 faculty lunch will discuss the
proposed "tax" on gifts with guests Bienenstock, Byer, and Devaney.
The 2/14 faculty lunch will continue discussion of the PhD program.
The next three after that our still open; suggestions welcome.]
-Nils
∂29-Jan-89 1251 hoffman@csli.Stanford.EDU The Symbolic Systems Forum Feb. 3rd
Received: from csli.Stanford.EDU by SAIL.Stanford.EDU with TCP; 29 Jan 89 12:51:44 PST
Received: by csli.Stanford.EDU (4.0/inc-1.0)
id AA00278; Sun, 29 Jan 89 12:20:50 PST
Date: Sun 29 Jan 89 12:20:50-PST
From: Reid Hoffman <HOFFMAN@CSLI.Stanford.EDU>
Subject: The Symbolic Systems Forum Feb. 3rd
To: TheForum@csli.Stanford.EDU
Message-Id: <602108450.0.HOFFMAN@CSLI.Stanford.EDU>
Mail-System-Version: <SUN-MM(242)+TOPSLIB(128)@CSLI.Stanford.EDU>
This week's Symbolic Systems Forum will be
Structure Yes, Symbols No
a talk by
Professor Jerome A. Feldman
Institute for Cognitive Science,
Berkeley, CA
Abstract:
Computer Science, Artificial Intelligence and many related fields have
followed symbol-processing paradigms almost without exception. Recent
work has suggested alternative views of intelligent activity based on
connectionist (or PDP or `neural') networks. This talk will discuss a
``Structured" connectionist approach which attempts to capture the
best features of symbollic and neural-style computation. After some
preliminaries, the talk will focus on a connectionist model of visual
recognition which is claimed to be (the only model) consistent with
the relevant biological, behavioral and computational findings.
Finally, we will try to indicate what this model suggests about how
intelligence as realized is animals and artifacts.
Time: Friday, Feb. 3rd, 3:15
Place: Building 60, Room 60-61G
The talk will be open to the general public. To join the mailing list,
send mail to hoffman@csli
Next week: Professor Bernardo Huberman (Xerox PARC, Physics) will speak on
"The Ecology of Computation"
-------
∂29-Jan-89 1433 @Score.Stanford.EDU:JMC@SAIL.Stanford.EDU Protesting the censorship of a newsgroup
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 29 Jan 89 14:33:07 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Sun 29 Jan 89 14:29:38-PST
Message-ID: <vhr$U@SAIL.Stanford.EDU>
Date: 29 Jan 89 1431 PST
From: John McCarthy <JMC@SAIL.Stanford.EDU>
Subject: Protesting the censorship of a newsgroup
To: faculty@SCORE.Stanford.EDU
Recently AIR and SDC have censored the newsgroup rec.humor.funny.
This has resulted in about 40 messages in su-etc objecting to the
purge and no messages in its favor. There follows a draft
statement on the issue. Individual "signatures" will be
solicited for a final version.
rec.humor.funny is still available on Polya and other computers
not under the control of AIR and SDC. It has been added to
gang-of-four. The following messages include Ralph Gorin's purge
memo, a general exposition of the situation including
recommendations.
I hope the Department will eventually make an explicit
decision not to censor csd-cf and publicize the decision.
∂29-Jan-89 1436 @Score.Stanford.EDU:Mailer@SAIL.Stanford.EDU rec.humor.funny
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 29 Jan 89 14:36:22 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Sun 29 Jan 89 14:31:24-PST
Message-ID: <LhraH@SAIL.Stanford.EDU>
Date: 29 Jan 89 1431 PST
From: John McCarthy <JMC@SAIL.Stanford.EDU>
Subject: rec.humor.funny
To: su-etc@SAIL.Stanford.EDU, faculty@SCORE.Stanford.EDU
Statement of protest about the AIR purge of rec.humor.funny.
Computer scientists and computer users have been involved in
making information resources widely available since the 1960s.
Such resources are analogous to libraries. The newsgroups are
available on various networks are the computer analog of
magazines and partial prototypes of future universal computer
libraries. These libraries will make available the information
resources of the whole world to anyone's terminal or personal
computer.
Therefore, the criteria for including newsgroups in computer
systems or removing them should be identical to those for
including books in or removing books from libraries. For this
reason, and since the resource requirements for keeping
newsgroups available are very small, we consider it contrary to
the function of a university to censor the presence of newsgroups in
University computers. We regard it as analogous to removing a
book from the library. To be able to read anything subject only
to cost limitations is an essential part of academic freedom.
We therefore think that AIR and SDC should rescind the purge of
rec.humor.funny.
∂29-Jan-89 1449 @Score.Stanford.EDU:Mailer@SAIL.Stanford.EDU Censoring rec.humor.funny
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 29 Jan 89 14:49:22 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Sun 29 Jan 89 14:46:23-PST
Message-ID: <Lhrmo@SAIL.Stanford.EDU>
Date: 29 Jan 89 1445 PST
From: John McCarthy <JMC@SAIL.Stanford.EDU>
Subject: Censoring rec.humor.funny
To: su-etc@SAIL.Stanford.EDU, faculty@SCORE.Stanford.EDU
This is an explanation for people not familiar with newsgroups.
To understand the issue, you have to know something
about network newsgroups.
1. There are about 500 national ``newsgroups'' coming
into the Computer Science Department's VAX computer named Polya.
You may think of them as magazines to which the library aspect of
Polya subscribes, but they are all free. Many Stanford computers
receive about the same list.
2. A user of one of these computers can give the command
rn, and the computer will show him the first new item in the first
newsgroup to which he personally has ``subscribed''. He can read
items or skip them or move on to the next newgroup. One can spend
a lot of time at this. One can add or remove newsgroups from one's
personal list.
3. One can also send items to a newsgroup by electronic mail.
4. There are two kinds of newsgroups, unmoderated and moderated.
Electronic mail received by the computer program maintaining an
unmoderated newsgroup automatically remails it to all the subscribers.
Moderated newsgroups have human editors that select what will be
included. Both kinds flourish.
5. Because some of the newsgroups are received in batches,
it is doubtful that every newsgroup received on Stanford computers
has been selected by anybody. Maybe some of them are not read
by anybody.
6. The cost of receiving newsgroups is very low. The installation
sets a policy on how long the items are kept, and this is implemented
by a program that usually is automatically activated nightly.
7. The subjects of newsgroups include the following.
a. Technical discussions of various scientific and engineering and
philosophical topics.
b. Political and social controversy.
c. Material of interest to subgroups: feminists, gays, Jews, sex,
drugs.
d. Material concerning users of particular kinds of computer and
particular programming languages.
e. Recipes and jokes.
f. Things for sale. Product announcements.
\noindent THE PRESENT CONTROVERSY
Brad Templeton, who runs a small company in Waterloo, Canada
has operated as a hobby a moderated newsgroup for jokes called
rec.humor.funny. Templeton selects jokes for humorousness and
explicitly abjures ``political correctness'' as a criterion.
Jokes that might be considered offensiveness are encrypted in
the C13 cipher, i.e. letters are displaced by 13 in the alphabet.
If a joke is classified as potentially offensive, the reader
can skip it without decrypting it. Templeton also maintains the
newsgroup rec.humor.d that anyone can use to comment on his selection
policy.
Templeton was attacked by an M.I.T graduate student in civil
engineering. The attack first appeared in some other newsgroups,
and later in the newspapers in Waterloo. The attack was triggered
by the following joke.
A Jew and a Scotsman had dinner in a restaurant. At the end, the
Scotsman was heard to say, ``I'll pay''. The next day there was
a newspaper headline, ``Jewish ventriloquist murdered''.
No Jew to whom I have told this joke was offended, but I haven't
had a chance to try Scots.
According to Templeton, this is a joke he would normally encrypt,
but he forgot that time. His apology for this didn't satisfy his
critic(s).
The upshot in Waterloo was that he no longer distributes rec.humor.funny
through the University of Waterloo computer and the University only
receives G-rated jokes.
\noindent THE STANFORD FLAP
Early in December, a programmer at SDC pointed out the
controversy to John Sacks, apparently just as an item of gossip,
making no suggestion that Stanford do anything to prevent Stanford
people from reading rec.humor.funny.
However, the matter gurgled through the Stanford computer
bureaucracy, the upper reaches of the Stanford Administration and
Stanford legal counsel. The matter was kept confidential among
these officials for no reason that was ever made explicit. Perhaps
it was just habit. After a month and a half, Ralph Gorin, head
of AIR and John Sack, head of SDC, jointly announced that rec.humor.
funny was to be purged from the computers under their control.
Here are some related facts.
1. There are many computers not under their control including
those operated by various research groups in the Engineering School,
the Computer Science Department and the Center for Studies in Language
and Information and the Music Department. None of these other
organizations have taken any action or seem inclined to do so as yet.
rec.humor.funny has been added to the gang-of-four computer operated
by the Qlisp research project.
2. This bit of censorship is a random thrust in the dark.
A few number of other newsgroups are in far worse taste than
rec.humor.funny ever is.
3. The effort to remove rec.humor.funny has taken several
man days of programmer time by people who have no personal taste
for this particular job. It may not have been entirely successful
for technical reasons. The costs are in purging the library---not in
maintaining it.
4. Stanford has a legal right to do what its administration
pleases, just as it has a legal right to purge the library or
fire tenured faculty for their opinions.
\noindent OPINION
Newsgroups are a new communication medium just as printed
books were in the 15th century. I believe they are one step
towards universal access through everyone's computer terminal to
the whole of world literature. AIR and SDC setting up an index
of prohibited newsgroups is in the same tradition as the Pope's
15th century Index Liber Prohibitorum.
Stanford should consider the newsgroups received by its
various computers as analogous to books and magazines in its
library. Costs require a library to be selective in the books
and magazines in its library. Costs don't seem to be a factor
here as long as there are a mere 500 newsgroups.
Stanford should maintain the part of the tradition of academic
freedom in case of newsgroups.
Should Stanford not persist in its foolish decision and even
attempt to enforce it Campus wide, it will acquire somewhat of
a reputation as a boobocracy, but doubtless it will survive this.
One might regard this as another sign of a more general
censorious trend, but maybe it won't get worse.
∂29-Jan-89 1508 @Score.Stanford.EDU:JMC@SAIL.Stanford.EDU rec.humor.funny
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 29 Jan 89 15:08:33 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Sun 29 Jan 89 15:05:13-PST
Message-ID: <dhrew@SAIL.Stanford.EDU>
Date: 29 Jan 89 1436 PST
From: John McCarthy <JMC@SAIL.Stanford.EDU>
Subject: rec.humor.funny
To: faculty@SCORE.Stanford.EDU
Here is the Gorin and Sack message
To the Stanford community,
In Information Resources, we have been confronted with the existence
of a Usenet (Unix users') bulletin board, rec.humor.funny, that
contains jokes including, among others, jokes based on racial, ethnic,
sexual, religious, and other stereotypes. Jokes based on such
stereotypes perpetuate racism, sexism, and intolerance; they undermine
an important University purpose: our collective search for a better
way, for a truly pluralistic community in which every person is
acknowledged an individual, not a caricature.
We have weighed our love of freedom of expression and the free
exchange of ideas in contrast to our respect for the dignity and
rights of every individual. In this situation we find: this bulletin
board does not serve a University educational purpose; its content is
offensive; it does not, in itself, provide a forum for the examination
and discussion of intolerance, an exchange of views, or the expression
of views of the members of the University community.
Stanford University has no commitment to maintain our computing
facilities as a generalized forum for outsiders' indiscriminate
purposes. We are sensitive to the pain caused by racial, religious,
and sexual affronts. For these reasons, we have decided not to have
that bulletin board file on the computers operated by Information
Resources.
We endorse the continued use of our local, unmoderated computer
bulletin boards by members of the University community for the
discussion of ideas, including those that are unpopular. In such a
forum, ideas are subject to the thoughtful judgement of others.
Ralph Gorin, Director John Sack, Director
Academic Information Resources Stanford Data Center
-------
∂29-Jan-89 1721 @Score.Stanford.EDU:coraki!pratt@Sun.COM rec.humor.funny
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 29 Jan 89 17:21:19 PST
Received: from Sun.COM by SCORE.STANFORD.EDU with TCP; Sun 29 Jan 89 17:18:09-PST
Received: from sun.Sun.COM (sun-bb.sun.com) by Sun.COM (4.1/SMI-4.0)
id AA13400; Sun, 29 Jan 89 17:21:09 PST
Received: from coraki.UUCP by sun.Sun.COM (4.0/SMI-4.0)
id AA20223; Sun, 29 Jan 89 17:18:53 PST
Received: by (4.0/SMI-4.0Beta)
id AA14509; Sun, 29 Jan 89 17:18:31 PST
Date: Sun, 29 Jan 89 17:18:31 PST
From: Vaughan Pratt <coraki!pratt@Sun.COM>
Message-Id: <8901300118.AA14509@>
To: faculty@score.stanford.edu
Subject: rec.humor.funny
Electronic bboards should observe the prevailing limits on propriety
for comparably *accessible* and *protected* media.
Accessibility. The Stanford Daily is at least as accessible as the
most publicly accessible electronic bboard. Would the Daily get off
scot-free, so to speak, if it ran that joke?
Protection. Do AIR and SDC receive all the freedom-of-speech and
freedom-of-press protections accorded the Daily? If not then
appropriately tighter controls may be prudent.
But neither of these factors were mentioned in the official Information
Resources justification. What did appear instead was the following
most disquieting distinction between external and internal sources,
with only the former being subject to censorship of "unpopular" ideas.
We endorse the continued use of our local, unmoderated computer
bulletin boards by members of the University community for the
discussion of ideas, including those that are unpopular.
High time H&S replaced its overly broad Western Culture program
with a more focused Stanford Culture program.
In twenty years time you'll be able to tell if the after-dinner speaker
is a Stanford alumnus by his jokes.
-v
∂29-Jan-89 1804 LOGMTC-mailer Logic seminar
Received: from csli.Stanford.EDU by SAIL.Stanford.EDU with TCP; 29 Jan 89 18:04:39 PST
Received: by csli.Stanford.EDU (4.0/inc-1.0)
id AA05795; Sun, 29 Jan 89 18:02:57 PST
Date: Sun 29 Jan 89 18:02:56-PST
From: Sol Feferman <SF@CSLI.Stanford.EDU>
Subject: Logic seminar
To: logic@csli.Stanford.EDU
Message-Id: <602128976.0.SF@CSLI.Stanford.EDU>
Mail-System-Version: <SUN-MM(242)+TOPSLIB(128)@CSLI.Stanford.EDU>
Seminar in Logic and Foundations
Speaker: Philip Scowcroft, Mathematics, Stanford
Title: "Introduction to Intuitionistic Mathematics" (second of two lecture{)
Place: Room 381-T, Math Corner Stanford
Time: Tuesday, January 31, 4:15-5:30 PM
* * * *
The speaker for Tuesday, Feb.7 will be Michael Beeson of San Jose State Univ.
The title of his talk will be:
"Applications of Gentzen's proof theory to automated deduction."
This talk will assume some familiarity with Gentzen's sequential systems
G1 and G3 from Kleene's "Introduction to Metamathematics" and Horn clause
logic programming, including the unification algorithm, as presented for
example in Clocksin and Mellish, "Programming in Prolog".
S. Feferman
-------
∂30-Jan-89 0743 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Faculty Lunch: The PhD Program
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 30 Jan 89 07:42:56 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Sun 29 Jan 89 23:56:04-PST
Message-ID: <xhE3b@SAIL.Stanford.EDU>
Date: 29 Jan 89 2357 PST
From: Arthur Keller <ARK@SAIL.Stanford.EDU>
Subject: Faculty Lunch: The PhD Program
To: faculty@SCORE.Stanford.EDU
∂24-Jan-89 1515 @Score.Stanford.EDU:bhayes@polya.Stanford.EDU Faculty Lunch: The PhD Program
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 24 Jan 89 15:12:20 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Tue 24 Jan 89 15:10:30-PST
Received: from LOCALHOST by polya.Stanford.EDU (5.59/25-eef) id AA12360; Tue, 24 Jan 89 15:11:38 PDT
Message-Id: <8901242311.AA12360@polya.Stanford.EDU>
To: csd-bboard@polya.Stanford.EDU, phd-program@polya.Stanford.EDU
Subject: Faculty Lunch: The PhD Program
Date: Tue, 24 Jan 89 15:11:36 -0800
From: bhayes@polya.Stanford.EDU
A real humdinger of a lunch this time, the topic being, of course, The
PhD Program. It was advertised as a flamefest, but many toe-toasters
were disappointed.
Mike Genesereth led off by saying that one of the main concerns of the
PhD committee, which he chairs, is the increasing amount of time it
takes to get a PhD here. The committee is also concerned with the
general student unhappiness. The committee proposed a research
requirement, implimented with some added bureaucracy, to get students
started on the research trail quickly. Neither the bureauracy nor the
requirement were wholeheartedly supported by the faculty. There are a
number of proposals under consideration, including changes to the comp,
but there should be an attempt to keep the discussion on target:
research.
[I can tell, by the way, that this is going to be a long message. I
may add a few pithy remarks at the end, so even if you get bored, I,
as their author expectant, urge you to read them.]
Ed Feigenbaum spoke next. We are a research university, and research
is the soul of this department. When the department was founded, it
was founded with the Carnegie model in mind. Bring students in,
"indoctrinate" them, get them "married" to research projects, more or
less ignore courses. We went half way on this: the courses are taught,
but they aren't required.
Over the years, we've drifted more to courses, and students, paranoid
over the comp, put off their research. Students are admitted not for
their transcripts, not for the GRE scores, but for an elusive spark and
desire to do research. Then the adventure is postponed, and the spark
is snuffed out.
The argument is often made that the field has grown. But at the same
time, the number of abstractions have grown, and so the total which
must be learned has remained fairly constant. We underestimate the
ability of students to learn things on their own when they need to
know. The comp, if testing the leaves of the tree, is wrong. We
should be testing more for the abstractions, and less for the details.
Research advisors should ensure early exciting research. The comp is
too much of a drain on the energy of the students.
Bob Floyd provided the last keynote. We need to turn out people with
large views, not sub-specialists. Some bredth is needed, and we need
to enforce that requirement somehow. An exam provides a certain
objectivity. The comp gives us a chance to deal with mistakes we may
have made at admission time. The bredth requirement should come before
the depth requirement, since the bredth benifits the depth more than
the other way around. But this shouldn't be a time-sink. We should
reexamine the goals of the comp; it's getting wider and deeper. We
should be testing the ability to integrate ideas across areas.
Ed Feigenbaum brought up a few more points. Classes don't teach the
essential: the heuristics of research. How to shape a problem into a
research topic, and fit it in with the work elsewhere. How to cut
through a mass of detail and find the essential track of the problem.
Unless students are really involved, they won't learn this.
Nils asked that we hear from some of the younger faculty how things
worked at their universities, and how Electrical Engineering here
works. A quick summary:
CMU:
The program takes longer, and nobody is happy about the length of time.
They keep restructuring the breadth exam. Currently there are four
exams of three parts each. There is a survey course for each exam
lasting one quarter. The exams have to be passed eventually, but
there's no time limit. If you fail the exams and you're doing
research, you won't get booted. Each exam is three parts, two take
home and one not. It's not a monolithic comp like here, and students
treat it lighter then we treat the comp.
There are two Black Friday meetings each year. They are long, every
student is discussed, and all the faculty go. Quarterly evaluations
are used to establish progress through the system, as well as the exams.
Students are happier there than here. They gripe and moan, but they
wouldn't tell prospective students that they should go elsewhere, as
students here do.
Students are "married" to researchers by a committee after a few weeks
there. Faculty recruit if they want students; they send out senior
students, they hold parties. Students are usually given their first
choice of advisor. The "divorce" rate is about 50%, and divorce is
no-fault.
MIT:
There are seven obstacles. [Hmm. I didn't count then, so I may not
have seven here.] There are four exams, which are roughly four finals
from survey courses. You need to pass the exam, with or without the
course. There's a Master's thesis. There's an oral exam to enter
candidacy. It's not pass/fail, just numerical grade on the exams. You
never take the exam again. One strategy that can work is to ignore the
exams, fail them if you do, and write a good thesis. This can still
pass you into candidacy for the PhD. No course requirements.
Students almost always are in a research group, starting early on.
There's social pressure to get into a group, their are advisors out
pitching for students.
UC Berkeley:
[This got a bit muddled in my notes because time was running short, and
the two UCB grads couldn't agree on what the requirements were. Seems
they've changed quite a bit over the last few years.]
Prelims [like our comps] are offered twice yearly. Students stop their
work for two months to stude for them, and generally pass. Once a
student has done some research, it is presented to the faculty, who
then give feedback to the student.
There's a BIG course requirement, about two years. But professors
don't take courses seriously. In the old days, Berkeley had a 50%
failure rate, with a Master's as the parting gift. Now they admit
separately to the MS and PhD programs.
Well, by now it was getting late, people were bailing out in droves,
and it was Marcia, Ed, and Geoff's turn to speak, as the student reps
on the PhD program committee. Hardly seems fair, does it? Good sense
was abundant, and the discussion will be resumed at a later lunch,
starting with Marcia, Ed, and Geoff.
I've posted this to the phd-program bboard, and hope that if you have
any comments, you'll direct them there. Also, as I said, the three
students from the PhD committee [say it with me...], Marcia, Ed, and
Geoff, will be presenting the student view of things. If you've got
things to say, but don't want to sling it around the bboard, they're
who you should get in touch with.
∂30-Jan-89 0747 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Spokespersons meeting of Jan. 23, 1989
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 30 Jan 89 07:47:23 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Sun 29 Jan 89 23:56:17-PST
Message-ID: <xhE40@SAIL.Stanford.EDU>
Date: 29 Jan 89 2357 PST
From: Arthur Keller <ARK@SAIL.Stanford.EDU>
Subject: Spokespersons meeting of Jan. 23, 1989
To: faculty@SCORE.Stanford.EDU
∂25-Jan-89 1141 @Score.Stanford.EDU:kos@polya.Stanford.EDU Spokespersons meeting of Jan. 23, 1989
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 25 Jan 89 11:41:38 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Wed 25 Jan 89 11:39:47-PST
Received: by polya.Stanford.EDU (5.59/25-eef) id AA25829; Wed, 25 Jan 89 11:25:18 PDT
Date: Wed, 25 Jan 1989 11:25:15 PST
Sender: Andrew Kosoresow <kos@polya.stanford.edu>
From: Andrew P. Kosoresow <kos@polya.stanford.edu>
To: csd@score
Cc: bureaucrats@polya.Stanford.EDU
Subject: Spokespersons meeting of Jan. 23, 1989
Message-Id: <CMM.0.87.601759515.kos@polya.stanford.edu>
From the spokespersons meeting of January 29, 1988:
o As space is getting tighter at Jacks, various alternatives were discussed
including renting more space at Welch Road or staying at Tresidder for
longer than previously anticipated. The Space Committee will be looking
into these and other alternatives.
o The format and existence of the CSD Colloquiums was discussed. Due to the
low attendance at last Tuesday's colloquium, several ways of bolstering
attendance were suggested. There is a possibility of making it into a
distinguished speaker series on a monthly or quarterly basis next year.
The current format of bi-weekly talks will continue till the end of this
school year.
o As Nils will be resigning as chairman in 1-1/2 years, a replacement will
have to be found. If an outside search is required, it will have to
begin soon. In the worst case that a new chairman is not found, Nils
mentioned the worst case scenario of CS being absorbed into EE.
o The time, location, and format of the Faculty Retreat were debated. More
on this later.
#andrew
∂30-Jan-89 0750 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Teaching Strategies
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 30 Jan 89 07:50:09 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Sun 29 Jan 89 23:56:31-PST
Message-ID: <xhE4t@SAIL.Stanford.EDU>
Date: 29 Jan 89 2358 PST
From: Arthur Keller <ARK@SAIL.Stanford.EDU>
Subject: Teaching Strategies
To: faculty@SCORE.Stanford.EDU
∂25-Jan-89 1641 @Score.Stanford.EDU:peyton@polya.Stanford.EDU Teaching Strategies
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 25 Jan 89 16:39:46 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Wed 25 Jan 89 16:09:46-PST
Received: by polya.Stanford.EDU (5.59/25-eef) id AA16710; Wed, 25 Jan 89 16:10:56 PDT
Date: Wed, 25 Jan 1989 16:10:53 PST
Sender: "Liam H. Peyton" <peyton@polya.stanford.edu>
From: "Liam H. Peyton" <peyton@polya.stanford.edu>
To: csd@polya.Stanford.EDU
Subject: Teaching Strategies
Message-Id: <CMM.0.87.601776654.peyton@polya.stanford.edu>
The current approach seems to be to cover BOTH extremes, and indeed, anything
that can be remotely qualified as good and worthwhile should be required
before someone is given a Stanford PhD in computer science. Thats why the
program takes 6 2/3 years on average. (For example, the programming project
requirement is there because "every computer science PhD should know how
to program". Which was fine 20 years ago, but these days it seems more
relevant to substitute the phrase "6th grader" for computer science PhD.)
It seems to me that the day has long past when a computer science PhD
should assume empty vessels coming in and computer science complete
vessels going out. As the body of knowledge which is computer
science continues to grow at an accelerated rate, it is not unreasonable
to expect prior knowledge coming in and allow immediate specialization
during the program. Without both the 6 2/3 years will continue to balloon.
So, I would say that Prof. Floyd is absolutely correct in his view - he just
doesnt go far enough. His ideal of a complete professional should be a
PREREQUISITE for admission to the program. Then, one could have a short
apprenticeship to doing research and teaching in the field. In no area
that I know of is a PhD a professional degree (especially medicine) but
it does makes sense to say that one has to be a professional before one can
benefit from a PhD program.
---Liam
I am only sending this to the csd bboard, but anyone may retransmit all
or part of this with or without my name attached.
∂30-Jan-89 0753 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Comps and PhD program
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 30 Jan 89 07:53:34 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Sun 29 Jan 89 23:57:47-PST
Message-ID: <LhE5J@SAIL.Stanford.EDU>
Date: 29 Jan 89 2359 PST
From: Arthur Keller <ARK@SAIL.Stanford.EDU>
Subject: Comps and PhD program
To: faculty@SCORE.Stanford.EDU
∂26-Jan-89 0911 @Score.Stanford.EDU,@polya.Stanford.EDU:postmaster@score.stanford.edu Comps and PhD program
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 26 Jan 89 09:11:25 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Thu 26 Jan 89 09:09:39-PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA15959; Thu, 26 Jan 89 09:10:48 -0800
Date: 26 Jan 89 17:10:42 GMT
From: mkatz@Sesame.Stanford.EDU (Morris Katz)
Organization: Stanford University
Subject: Comps and PhD program
Message-Id: <6366@polya.Stanford.EDU>
Sender: postmaster@score.stanford.edu
To: csd@score.stanford.edu
I believe that the first step necessary in evaluating the Comps is to identify
their purpose. For every purpose I have heard stated, I have heard other
faculty members strongly deny that purpose. I suggest that the faculty be
forced (encouraged) to identify the purpose(s) of the Comp. Given that
(those), we can then evaluate whether the Comps actually serve to further the
goals outlined and whether there are other more effective means of achieving
those goals.
As a second issue, the faculty should identify what their goals are for the PhD
program. Are there some set of qualities which they desire to be true of all
individuals holding Stanford Phd's in Computer Science. One can then evaluate
the complete PhD program as to whether it is achieving its goals. I have heard
some faculty members say that research is important. Others have stated that
breadth is important; but, just what is meant by breadth and to what extent is
not clear. Should everybody have to have a minor in some other field in order
to demonstrate true breadth? (This is true at many other universities.) Once
all of the goals of the entire program have been listed, the faculty must
prioritize them since it is clear that no individual will actually meet all of
the possible laudable goals. Given all of the above information, we as members
of the Computer Science Department are then in a position to make reasonable
suggestions as to how the current program should be modified in the interest of
improvement.
Morry Katz
katz@polya.stanford.edu
--
∂30-Jan-89 0756 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Re: A Comp Retrospective
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 30 Jan 89 07:56:38 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Sun 29 Jan 89 23:59:06-PST
Message-ID: <$hP0R@SAIL.Stanford.EDU>
Date: 30 Jan 89 0000 PST
From: Arthur Keller <ARK@SAIL.Stanford.EDU>
Subject: Re: A Comp Retrospective
To: faculty@SCORE.Stanford.EDU
∂26-Jan-89 0938 @Score.Stanford.EDU,@polya.Stanford.EDU:postmaster@score.stanford.edu Re: A Comp Retrospective
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 26 Jan 89 09:38:41 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Thu 26 Jan 89 09:36:51-PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA17168; Thu, 26 Jan 89 09:38:03 -0800
Date: 26 Jan 89 17:37:54 GMT
From: mkatz@Sesame.Stanford.EDU (Morris Katz)
Organization: Stanford University
Subject: Re: A Comp Retrospective
Message-Id: <6369@polya.Stanford.EDU>
References: <6342@polya.Stanford.EDU>
Sender: postmaster@score.stanford.edu
To: csd@score.stanford.edu
In article <6342@polya.Stanford.EDU>, anderson@polya (Jennifer-Ann Anderson)
writes:
>Why can't the comps be more of a diagnostic rather than yet another hoop
>to jump through? We could see what our weak areas are and
>then take the appropriate classes (or perhaps TA the classes).
*************************
To punish a class full of students for a given PhD student's lack of knowledge
is inexcusable. It is bad enough that some faculty members think that merely
passing the Comps qualifies one to teach any introductory Computer Science
class (an appallingly minimal criterion), but this is really a bad idea.
Students deserve a TA who can add something to their learning experience, not
one who is doing his or her best just to keep up.
>
> -- Jennifer Anderson
-- Morry Katz
--
∂30-Jan-89 0759 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Re: Comps and PhD program
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 30 Jan 89 07:59:48 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Sun 29 Jan 89 23:59:13-PST
Message-ID: <xhP0w@SAIL.Stanford.EDU>
Date: 30 Jan 89 0000 PST
From: Arthur Keller <ARK@SAIL.Stanford.EDU>
Subject: Re: Comps and PhD program
To: faculty@SCORE.Stanford.EDU
∂26-Jan-89 1012 @Score.Stanford.EDU,@polya.Stanford.EDU:postmaster@score.stanford.edu Re: Comps and PhD program
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 26 Jan 89 10:12:20 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Thu 26 Jan 89 10:10:30-PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA18762; Thu, 26 Jan 89 10:11:40 -0800
Date: 26 Jan 89 18:11:31 GMT
From: young@polya.Stanford.EDU (R. Michael Young)
Organization: Stanford University
Subject: Re: Comps and PhD program
Message-Id: <6373@polya.Stanford.EDU>
References: <6366@polya.Stanford.EDU>
Sender: postmaster@score.stanford.edu
To: csd@score.stanford.edu
I agree with Morris. It seems the comps enjoy the luxury of being so
ill-defined that no one can say definitely what their content will be,
what their purpose is, what their purpose is not, what kind of grading
criteria will be used, what circumstances, if any, will help someone
who failed to pass all the comps before the end of whetever time
period or what techniques might be viable alternatives.
To have a "procedure" like the comps (I can't call it a milestone,
hurdle, filter, or checkpoint because we can't even agree on whether
the comp is any one of those) without a clear and definitely _policy_
is irresponsible, and to try and deal with such an important issue
without looking first to define their intent seems counterproductive.
-R
--
∂30-Jan-89 0802 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Re: Comps and PhD program
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 30 Jan 89 08:02:43 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Sun 29 Jan 89 23:59:30-PST
Message-ID: <LhP0l@SAIL.Stanford.EDU>
Date: 30 Jan 89 0001 PST
From: Arthur Keller <ARK@SAIL.Stanford.EDU>
Subject: Re: Comps and PhD program
To: faculty@SCORE.Stanford.EDU
∂26-Jan-89 1017 @Score.Stanford.EDU,@polya.Stanford.EDU:postmaster@score.stanford.edu Re: Comps and PhD program
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 26 Jan 89 10:17:24 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Thu 26 Jan 89 10:15:26-PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA19152; Thu, 26 Jan 89 10:16:36 -0800
Date: 26 Jan 89 18:16:24 GMT
From: max@polya.Stanford.EDU (Max Hailperin)
Organization: Stanford University
Subject: Re: Comps and PhD program
Message-Id: <6374@polya.Stanford.EDU>
References: <6366@polya.Stanford.EDU>
Sender: postmaster@score.stanford.edu
To: csd@score.stanford.edu
In article <6366@polya.Stanford.EDU> mkatz@Sesame.Stanford.EDU
(Morris Katz) writes:
>Once all of the goals of the entire program have been listed, the faculty must
>prioritize them since it is clear that no individual will actually meet all of
>the possible laudable goals.
Instead of a prioritized list of goals for the program, the goals can be
treated as a menu of possibilities from which each individual student
(with the advice/consent of his faculty advisor) can choose. The PhD
program, contrary to Katz's (and others') supposition, need not have
*a* purpose, but rather should be flexible enough that each student can
use it to serve whatever purpose suits them.
∂30-Jan-89 0805 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Apprenticeship
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 30 Jan 89 08:05:21 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Mon 30 Jan 89 00:00:02-PST
Message-ID: <LhP1Q@SAIL.Stanford.EDU>
Date: 30 Jan 89 0001 PST
From: Arthur Keller <ARK@SAIL.Stanford.EDU>
Subject: Apprenticeship
To: faculty@SCORE.Stanford.EDU
∂26-Jan-89 1127 @Score.Stanford.EDU:jbn@glacier.stanford.edu Apprenticeship
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 26 Jan 89 11:27:18 PST
Received: from glacier.stanford.edu by SCORE.STANFORD.EDU with TCP; Thu 26 Jan 89 11:25:22-PST
Received: by glacier.stanford.edu; Thu, 26 Jan 89 11:25:41 PST
Date: Thu, 26 Jan 89 11:25:41 PST
From: John B. Nagle <jbn@glacier.stanford.edu>
Subject: Apprenticeship
To: csd-bboard@score.stanford.edu
Pat Hayes writes:
>( I chose the word "apprenticeship"
>carefully, since the closest analogy is with the mediaeval craft
>guilds. One cant learn how to be a smith by attending courses, one
>has to work with iron. )
As I write this, Doug Freund is teaching blacksmithing to design
students over at the foundry in the Mechanical Engineering Department's
Design Division Shops. Students see it done, and then do it themselves.
This is part of the Design Division's determined effort to provide its
students with a clear understanding of the ways by which tangible
things are made, in both a practical and theoretical sense. The
Design Division operates a machine shop, a wood shop, a welding shop,
a foundry, an injection-moulding facility, and a CAD facility for this
purpose. Graduates are ready to design new manufactured objects.
Now this is an area in which an apprenticeship program might seem
to be quite appropriate, in that the transmission of some rather traditional
skills is required, and a learning-by-doing experience is quite necessary.
But the program is not structured in that way. Rather, it is structured
in terms of a sequence of design exercises in various media intended
to teach both creativity and competence.
It's not that you can't learn to do research by attending courses,
it's that CS courses aren't typically about doing research, but rather
about acquiring specific subject matter.
Having been affiliated with both organizations (I have an MSCS and
have been a visiting scholar with the Design Division), I have to say
that the Design Division has a much more coherent vision of what they are
trying to teach their students, and are quite successful at so doing,
unusually so, in that few schools undertake to create product designers
and fewer succeed.
John Nagle
∂30-Jan-89 0808 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Re: Comps and PhD program
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 30 Jan 89 08:08:23 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Mon 30 Jan 89 00:00:29-PST
Message-ID: <LhP1k@SAIL.Stanford.EDU>
Date: 30 Jan 89 0002 PST
From: Arthur Keller <ARK@SAIL.Stanford.EDU>
Subject: Re: Comps and PhD program
To: faculty@SCORE.Stanford.EDU
∂26-Jan-89 1145 @Score.Stanford.EDU,@polya.Stanford.EDU:postmaster@score.stanford.edu Re: Comps and PhD program
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 26 Jan 89 11:44:57 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Thu 26 Jan 89 11:42:35-PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA22997; Thu, 26 Jan 89 11:19:19 -0800
Date: 26 Jan 89 19:19:05 GMT
From: mkatz@Sesame.Stanford.EDU (Morris Katz)
Organization: Stanford University
Subject: Re: Comps and PhD program
Message-Id: <6375@polya.Stanford.EDU>
References: <6366@polya.Stanford.EDU>, <6374@polya.Stanford.EDU>
Sender: postmaster@score.stanford.edu
To: csd@score.stanford.edu
In article <6374@polya.Stanford.EDU>, max@polya (Max Hailperin) writes:
>In article <6366@polya.Stanford.EDU> mkatz@Sesame.Stanford.EDU
>(Morris Katz) writes:
>>Once all of the goals of the entire program have been listed, the faculty
>>must prioritize them since it is clear that no individual will actually meet
>>all of the possible laudable goals.
>
>Instead of a prioritized list of goals for the program, the goals can be
>treated as a menu of possibilities from which each individual student
>(with the advice/consent of his faculty advisor) can choose. The PhD
>program, contrary to Katz's (and others') supposition, need not have
>*a* purpose, but rather should be flexible enough that each student can
>use it to serve whatever purpose suits them.
It was not my intension to lock all PhD students into a rigid program, but
merely to force the faculty to at least seriously consider what they believe to
be the important constituents of a PhD program. Prioritization should consist
of identify ing those few criterion which are felt to be essential (e.g. a
thesis), as well as a number of those which are desirable (possibly a set from
which students would have to fulfill some reasonable sized subset). The
essence of my ideas is that to discuss improvements before knowing the
objectives is a futile effort.
--
--
∂30-Jan-89 0811 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Re: Comps and PhD program
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 30 Jan 89 08:11:21 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Mon 30 Jan 89 00:00:53-PST
Message-ID: <LhP2D@SAIL.Stanford.EDU>
Date: 30 Jan 89 0002 PST
From: Arthur Keller <ARK@SAIL.Stanford.EDU>
Subject: Re: Comps and PhD program
To: faculty@SCORE.Stanford.EDU
∂26-Jan-89 1146 @Score.Stanford.EDU,@polya.Stanford.EDU:postmaster@score.stanford.edu Re: Comps and PhD program
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 26 Jan 89 11:46:15 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Thu 26 Jan 89 11:43:57-PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA25336; Thu, 26 Jan 89 11:45:05 -0800
Date: 26 Jan 89 19:44:50 GMT
From: max@polya.Stanford.EDU (Max Hailperin)
Organization: Stanford University
Subject: Re: Comps and PhD program
Message-Id: <6378@polya.Stanford.EDU>
References: <6366@polya.Stanford.EDU>, <6374@polya.Stanford.EDU>, <6375@polya.Stanford.EDU>
Sender: postmaster@score.stanford.edu
To: csd@score.stanford.edu
Let me go on record as saying that I *do* support discussion of program
objectives rather than mere quibling about specific exams or what not.
Let me also clarify my previous point. I did not mean to cast Morry's or
anyone else's ideas as narrow or rigid, and apologize for creating that
impression. What I did mean is this:
Conventional wisdom assigns a purpose to the Ph.D. program. I instead
assign the purpose to the student. The program is a tool, which the
student uses to forge himself into whatever he wants to be. The
department, as caretaker of that tool, has a limited responsibility to
make sure it is not misused. It has a far greater responsibility to
ensure that the tool is versatile enough that people will come to use
it for a variety of purposes.
∂30-Jan-89 0814 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Re: Apprenticeship
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 30 Jan 89 08:14:04 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Mon 30 Jan 89 00:01:11-PST
Message-ID: <LhP2U@SAIL.Stanford.EDU>
Date: 30 Jan 89 0002 PST
From: Arthur Keller <ARK@SAIL.Stanford.EDU>
Subject: Re: Apprenticeship
To: faculty@SCORE.Stanford.EDU
∂26-Jan-89 1154 @Score.Stanford.EDU,@polya.Stanford.EDU:postmaster@score.stanford.edu Re: Apprenticeship
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 26 Jan 89 11:54:41 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Thu 26 Jan 89 11:50:26-PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA25810; Thu, 26 Jan 89 11:51:27 -0800
Date: 26 Jan 89 19:51:16 GMT
From: max@polya.Stanford.EDU (Max Hailperin)
Organization: Stanford University
Subject: Re: Apprenticeship
Message-Id: <6379@polya.Stanford.EDU>
References: <8901261926.AA23642@polya.Stanford.EDU>
Sender: postmaster@score.stanford.edu
To: csd@score.stanford.edu
In article <8901261926.AA23642@polya.Stanford.EDU> jbn@GLACIER.STANFORD.EDU
(John B. Nagle) writes:
> Pat Hayes writes: . . . "apprenticeship" . . .
> . . . [Mech E design division] . . .
>But the program is not structured in that way. Rather, it is structured
>in terms of a sequence of design exercises in various media intended
>to teach both creativity and competence.
>
> It's not that you can't learn to do research by attending courses,
>it's that CS courses aren't typically about doing research, but rather
>about acquiring specific subject matter.
In the unlikely even that the analogy was lost on anybody: Nagle could
have been describing Knuth's CS 304.
∂30-Jan-89 0817 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU re: Comps and PhD program
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 30 Jan 89 08:17:16 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Mon 30 Jan 89 00:02:38-PST
Message-ID: <LhP3m@SAIL.Stanford.EDU>
Date: 30 Jan 89 0004 PST
From: Arthur Keller <ARK@SAIL.Stanford.EDU>
Subject: re: Comps and PhD program
To: faculty@SCORE.Stanford.EDU
∂26-Jan-89 1449 @Score.Stanford.EDU:RWF@SAIL.Stanford.EDU re: Comps and PhD program
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 26 Jan 89 14:49:52 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Thu 26 Jan 89 14:39:58-PST
Message-ID: <xfxjt@SAIL.Stanford.EDU>
Date: 26 Jan 89 1441 PST
From: Robert W Floyd <RWF@SAIL.Stanford.EDU>
Subject: re: Comps and PhD program
To: young@POLYA.Stanford.EDU, csd@Score.Stanford.EDU
[In reply to message from young@polya.Stanford.EDU sent 26 Jan 89 18:11:31 GMT.]
I agree that the purpose of the comp is unclear, but one thing
is clear to me historically: the comp was instituted as both final
filter on an exception basis (our admissions procedure admits very
few students who prove unable to pass it, mainly students whose
prior education is remote in place or time) and as our sole way
of enforcing a breadth requirement (we dropped all course
requirements at around the time we instituted the comp). The original
intent was that the comp be integrative, showing ability to coordinate
knowledge from the branches of CS; I think the current format
actually discourages design of such exams. I expect that the comp.
committee will be examining this question.
I think the loss of a sense of purpose is inherent in the continual
turnover in the comp committee. We should have a committee with
long term membership. This would be cruel and unusual punishment
if nonmember faculty do not contribute proposed questions and
grading.
In general, in fact, I think the current size of the department
calls for specialization in long term committee assignments,
especially to the PhD, MS, admissions, and comp committees.
This is happening to some extent already. Not having been
on the comp committee in the current exam format, I found that
my judgment was inaccurate about the timing difficulties
(though I pushed the exam in the right direction, it wasn't far enough).
∂30-Jan-89 0820 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU re: Comps and PhD program
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 30 Jan 89 08:20:16 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Mon 30 Jan 89 00:02:59-PST
Message-ID: <LhP4B@SAIL.Stanford.EDU>
Date: 30 Jan 89 0004 PST
From: Arthur Keller <ARK@SAIL.Stanford.EDU>
Subject: re: Comps and PhD program
To: faculty@SCORE.Stanford.EDU
∂26-Jan-89 1450 @Score.Stanford.EDU:RWF@SAIL.Stanford.EDU re: Comps and PhD program
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 26 Jan 89 14:50:31 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Thu 26 Jan 89 14:47:17-PST
Message-ID: <18fy1p@SAIL.Stanford.EDU>
Date: 26 Jan 89 1448 PST
From: Robert W Floyd <RWF@SAIL.Stanford.EDU>
Subject: re: Comps and PhD program
To: max@POLYA.Stanford.EDU, csd@Score.Stanford.EDU
[In reply to message from max@polya.Stanford.EDU sent 26 Jan 89 19:44:50 GMT.]
To add to Max's message about purposes, any human institution
is used by people to achieve their own purposes, whatever the
purposes of its founders. It is difficult to anticipate
what purposes the users will try to achieve until experience
is gained. The cleverer the users, the more ways they will
game the system. Good intentions guarantee nothing.
This is why rehabilitation as a goal of incarceration
has hisorically failed; noone has invented a version that
does not lend itself to gaming for very different purposes.
Not that that exampple has much to do with graduate study.
∂30-Jan-89 0822 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Comprehensive Exams
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 30 Jan 89 08:22:33 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Mon 30 Jan 89 00:03:34-PST
Message-ID: <LhP4f@SAIL.Stanford.EDU>
Date: 30 Jan 89 0005 PST
From: Arthur Keller <ARK@SAIL.Stanford.EDU>
Subject: Comprehensive Exams
To: faculty@SCORE.Stanford.EDU
∂27-Jan-89 0805 @Score.Stanford.EDU:sankar@mycroft.STANFORD.EDU Comprehensive Exams
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 27 Jan 89 08:05:07 PST
Received: from mycroft.STANFORD.EDU by SCORE.STANFORD.EDU with TCP; Fri 27 Jan 89 08:03:21-PST
Received: by mycroft.STANFORD.EDU (3.2/4.7); Fri, 27 Jan 89 08:01:33 PST
Date: Fri, 27 Jan 89 08:01:33 PST
From: sankar@mycroft.STANFORD.EDU (Sriram Sankar)
To: csd@score
Subject: Comprehensive Exams
As someone who has taken these exams 5 years ago and not kept track of the
changes that have taken place since I may be a bit out of date. But anyway ...
Given a choice between having to take required courses and the comprehensive
exam, I would prefer the latter. My view of the comprehensive exam is as a
mechanism to decide whether or not the student has sufficient background to
embark on a PhD, given the variety of backgrounds from which new students
enroll.
I believe it is still possible to be admitted to the CS PhD program with
no formal background in CS. For example, you could have majored in math
or EE or something else for that matter. At my time, we were not
required to take the GRE subject test in CS. We could take it in Math
or Engineering also. So those without the background could take the
courses and then take the exam, while others could take the exam directly.
If the comp. syllabus and the way the exam is conducted still achieves
the above purpose, I am happy.
Sriram.
∂30-Jan-89 0826 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Sr Staff Meeting
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 30 Jan 89 08:25:56 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Mon 30 Jan 89 00:06:09-PST
Message-ID: <xhP7s@SAIL.Stanford.EDU>
Date: 30 Jan 89 0007 PST
From: Arthur Keller <ARK@SAIL.Stanford.EDU>
Subject: Sr Staff Meeting
To: faculty@SCORE.Stanford.EDU
∂28-Jan-89 1429 @Score.Stanford.EDU:bhayes@polya.Stanford.EDU Sr Staff Meeting
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 28 Jan 89 14:29:07 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Sat 28 Jan 89 14:27:21-PST
Received: from LOCALHOST by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA11965; Sat, 28 Jan 89 14:28:25 -0800
Message-Id: <8901282228.AA11965@polya.Stanford.EDU>
To: csd-bboard@polya.Stanford.EDU
Subject: Sr Staff Meeting
Date: Sat, 28 Jan 89 14:28:24 -0800
From: bhayes@polya.Stanford.EDU
Robotics will be growing into Poplar Hall, over by Pine Hall. It's
either the 9th or 10th computer science site, but people are losing
count. This may open some space for theory people in Jacks, and a good
thing too, since new faculty and visitors may cause some students to be
evicted from MJH outside offices. Sorry, folks...
The new building is meeting with some indecision. The presentation to
the Trustees may be delayed until April at the decision of the Provost.
Faculty retreat is coming on May 5th, 6th, and 7th. Slip out and have
some fun that weekend if your advisor is leaving town.
James Wilson of administrative computing will be leaving that post to
start on his own company.
The University is trying to pass a new "tax on gifts". As you might
guess, lots of faculty object. It could cause a lot of problems for
the Forum.
Which is, of course, coming up very soon. The book store will be
offering a 10% discount on CS books by Stanford faculty, and a book
signing. They'll make wonderful Christmas gifts.
Elizabeth Buss, the Forum's Multimedia Coordinator, will also be
leaving soon after this years Forum. She's off to school, dispite
having seen what grad school is like. Last chance to warn her...
Thursday the 16th from 4:30 to 6 is the closing reception for Forum,
and all are invited. A chance to schmooze with big guns from industry
and see the sort of food that makes fat cats fat.
The Forum is disappointed in the turnout of resumes for the
undergraduate book. We DO have undergraduates, you know. We had to
sweet-talk Carolyn into not discontinuing the service for
undergraduates. Folks use these books for finding employees, summer
and fulltime, and for looking for people for fellowships. Undergrads,
even if you're not looking for a job, keep a resume with Carolyn so
she'll keep doing the book. Likewise grad students.
-b
∂30-Jan-89 0830 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU A Comp Retrospective
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 30 Jan 89 08:30:12 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Mon 30 Jan 89 01:05:35-PST
Message-ID: <$hPQQ@SAIL.Stanford.EDU>
Date: 30 Jan 89 0035 PST
From: Arthur Keller <ARK@SAIL.Stanford.EDU>
Subject: A Comp Retrospective
To: faculty@SCORE.STANFORD.EDU
∂25-Jan-89 1236 usenet@polya.stanford.edu A Comp Retrospective
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 25 Jan 89 12:34:29 PST
Received: by polya.Stanford.EDU (5.59/25-eef) id AA02515; Wed, 25 Jan 89 12:33:40 PDT
Date: 25 Jan 89 20:33:32 GMT
From: anderson@polya.Stanford.EDU (Jennifer-Ann Anderson)
Organization: Stanford University
Subject: A Comp Retrospective
Message-Id: <6342@polya.Stanford.EDU>
Sender: usenet@polya.stanford.edu
To: phd-program@polya.stanford.edu
I just finished taking the comps, and found that there are two
things that bothered me the most about the exams: the randomness
of the difficulty level, and the fact that we could get booted out
of the program for not passing.
This year's Theory Comp is a case in point. It was *significantly*
more difficult than previous theory exams. Consider a second
year student who only has one chance left at passing. He could
get handed an exam like this one, fail, and get thrown out of the
program. On the other hand, he could end up with a reasonable exam,
pass, and be allowed to stay. It's completely random.
Although, this scenario is a bit extreme (I realize that very few
people actually get thrown out because of comps) the fact that it
could happen under our present system is cause for concern.
Please note that I'm not protesting how hard the comps are,
just the variability from exam to exam. If the powers-that-be
think Stanford students should know certain things about computer
science that's fine with me, but if staying in the program is
contingent upon passing these exams, keep them consistent.
But, you might say, the comps are graded on a curve so that should
offset any fluctuations in the difficulty level.
I don't think grading an exam like this on a curve helps much.
How can you judge the abilities of students by comparing test
scores when the mean is 35-45% (just a guess as to what the
mean of the theory comp will be)? All that tells me is that the exam
was much harder than the students expected. Also, curving the
exam may breed a negative form of competition among the students --
"I hope 7 people do worse than me so that I can be in the top
2/3rds and pass". Not a healthy attitude towards your fellow comp-takers.
Well, I can't complain this much without offering some sort of
suggestion.
Why can't the comps be more of a diagnostic rather than yet another hoop
to jump through? We could see what our weak areas are and
then take the appropriate classes (or perhaps TA the classes).
This way, we would have a good idea of how much work we will need
to put in to pass the breadth requirement. With the comps, you
could study for an unlimited amount of time and still not know
what you're going to be up against.
With the present system, we spend too much time worrying about comps,
and not enough thinking about research. But what do you expect from
students when you tell them that they have to pass these exams
in two years or they're out? Although we'd much rather start in
on research early, the comps end up becoming a priority.
Even if the comp becomes more of a diagnostic, we will still
have the problem of inconsistency from exam to exam. However,
the stakes will be much lower (just taking a class or two as
opposed to being asked to leave the program).
I'd like to hear what others think.
-- Jennifer Anderson
∂30-Jan-89 0833 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Re: A Comp Retrospective
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 30 Jan 89 08:33:41 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Mon 30 Jan 89 01:05:38-PST
Message-ID: <$hPRE@SAIL.Stanford.EDU>
Date: 30 Jan 89 0036 PST
From: Arthur Keller <ARK@SAIL.Stanford.EDU>
Subject: Re: A Comp Retrospective
To: faculty@SCORE.STANFORD.EDU
∂25-Jan-89 2237 usenet@polya.stanford.edu Re: A Comp Retrospective
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 25 Jan 89 22:37:41 PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA03944; Wed, 25 Jan 89 22:37:12 -0800
Date: 26 Jan 89 06:37:07 GMT
From: robert@polya.Stanford.EDU (James R. Kennedy)
Organization: Stanford University
Subject: Re: A Comp Retrospective
Message-Id: <6362@polya.Stanford.EDU>
References: <6342@polya.Stanford.EDU>
Sender: usenet@polya.stanford.edu
To: phd-program@polya.stanford.edu
In article <6342@polya.Stanford.EDU> anderson@polya.Stanford.EDU (Jennifer-Ann Anderson) writes:
> suggestion.
> Why can't the comps be more of a diagnostic rather than yet another hoop
> to jump through? We could see what our weak areas are and
> then take the appropriate classes (or perhaps TA the classes).
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
Good heavens!! What are you saying?!?!? THIS PHENOMENON COULD BE WHY
I'M FAILING COMPS!!! Maybe if I had had TA's that were COMPETENT,
rather than TA's who were teaching me something because they didn't
know it themselves, I would have nothing to worry about on the
comps...
> I'd like to hear what others think.
You asked...
Sorry this is so terse -- I really agree with most of the posting. But
I think it's really important that people learn something BEFORE they
teach it, rather than after.
-- Robert
∂30-Jan-89 0837 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Re: A Comp Retrospective
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 30 Jan 89 08:37:12 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Mon 30 Jan 89 01:05:41-PST
Message-ID: <$hPRR@SAIL.Stanford.EDU>
Date: 30 Jan 89 0036 PST
From: Arthur Keller <ARK@SAIL.Stanford.EDU>
Subject: Re: A Comp Retrospective
To: faculty@SCORE.STANFORD.EDU
∂25-Jan-89 2239 usenet@polya.stanford.edu Re: A Comp Retrospective
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 25 Jan 89 22:39:35 PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA04049; Wed, 25 Jan 89 22:39:07 -0800
Date: 26 Jan 89 06:38:59 GMT
From: robert@polya.Stanford.EDU (James R. Kennedy)
Organization: Stanford University
Subject: Re: A Comp Retrospective
Message-Id: <6363@polya.Stanford.EDU>
References: <6342@polya.Stanford.EDU>, <6362@polya.Stanford.EDU>
Sender: usenet@polya.stanford.edu
To: phd-program@polya.stanford.edu
In article <6362@polya.Stanford.EDU> robert@polya.Stanford.EDU (James R. Kennedy) writes:
> I think it's really important that people learn something BEFORE they
> teach it, rather than after.
↑↑↑↑↑
Oops. I meant "during." Sorry.
-- Robert
∂30-Jan-89 0842 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Re: More-on the Faculty Lunch
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 30 Jan 89 08:42:35 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Mon 30 Jan 89 01:05:49-PST
Message-ID: <$hPPx@SAIL.Stanford.EDU>
Date: 30 Jan 89 0034 PST
From: Arthur Keller <ARK@SAIL.Stanford.EDU>
Subject: Re: More-on the Faculty Lunch
To: faculty@SCORE.STANFORD.EDU
∂24-Jan-89 2139 usenet@polya.stanford.edu Re: More-on the Faculty Lunch
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 24 Jan 89 21:39:52 PST
Received: by polya.Stanford.EDU (5.59/25-eef) id AA05278; Tue, 24 Jan 89 21:39:24 PDT
Date: 25 Jan 89 05:39:12 GMT
From: gangolli@wolvesden.Stanford.EDU (Anil R. Gangolli)
Organization: Stanford University
Subject: Re: More-on the Faculty Lunch
Message-Id: <6331@polya.Stanford.EDU>
References: <6326@polya.Stanford.EDU>
Sender: usenet@polya.stanford.edu
To: phd-program@polya.stanford.edu
I agree with the point of view that we should be more research-oriented.
I also agree with an old message on the csd.bboard that suggested that
many students are more motivated on entry to the program than after
quals; certainly that describes me, and while I can only speak of with
assurance of myself, I have seen evidence of more of that than there
should be. We should make a real department-wide effort to remedy
that, but I know that at least in my case, my sporadic motivational
slumps could not wholly be attributed to the department or the
program.
We have not devoted enough real effort to get ourselves and the
department moving again. The way to do that is to work hard at
research, keeping up on it and trying to obtain new results, and to
talk a lot to your colleagues in an effort to collaborate. I think
this is just much harder to do (at least at start-up time) than we
come in thinking. But I think that is the only way. Everything the
faculty does to engender this is likely to help. Anything we do to
the phd program that doesn't is unlikely to help.
Students who have not passed the comp and qual have stronger but less
enlightened opinions on the utility of exams, or the lack thereof.
Having passed both, and NOT being amongst the brightest in mine or the
immediately succeeding classes, I know it was both possible and worth
SOME while. The comp has since gotten both broader and deeper, (read
harder), to the detriment of the program. That is perhaps the only
current legitimate complaint about the program itself. The rest has
to do with us, the students and the faculty, and I don't think
procedural/programmatic methods will provide any solution.
--anil.
∂30-Jan-89 0850 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Forwarding Mail
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 30 Jan 89 08:50:53 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Mon 30 Jan 89 08:05:32-PST
Message-ID: <4hW1#@SAIL.Stanford.EDU>
Date: 30 Jan 89 0759 PST
From: Arthur Keller <ARK@SAIL.Stanford.EDU>
Subject: Forwarding Mail
To: faculty@SCORE.STANFORD.EDU
I have twice recently re-mailed messages from various places to the CS
faculty mailing list (faculty@score). These messages were taken from
the CSD bulletin board (CSD@SAIL, CSD@SCORE, csd.bboard on the UNIX machines
including Polya) and from the PhD program BBoard.
I mailed them out because I'm not sure that everyone was aware that these
existed as separate entities, and I thought the content was useful in the
context of current discussions.
I want people to know that these are my my personal opinions, but those
of other people forwarded on.
If there is sentiment that I should stop doing this, please let me know.
(I won't do it forever anyway, nor in general.) If you would like to know
how to read these BBoards for yourself, perhaps James Wilson can provide
you with instructions for Score or Polya (I'll be happy to provide them
for SAIL).
Arthu
∂30-Jan-89 0857 @Score.Stanford.EDU:hayes@arisia.xerox.com rec.humor.funny
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 30 Jan 89 08:56:58 PST
Received: from arisia.Xerox.COM by SCORE.STANFORD.EDU with TCP; Mon 30 Jan 89 08:21:52-PST
Received: by arisia.Xerox.COM
(5.59++/IDA-1.2.6) id AA27708; Mon, 30 Jan 89 00:29:46 PST
Date: Mon, 30 Jan 89 00:29:46 PST
From: Pat Hayes <hayes@arisia.xerox.com>
Message-Id: <8901300829.AA27708@arisia.Xerox.COM>
To: JMC@SAIL.STANFORD.EDU
Cc: su-etc@SAIL.STANFORD.EDU, faculty@SCORE.STANFORD.EDU
In-Reply-To: John McCarthy's message of 29 Jan 89 14:31 PST <LhraH@SAIL.Stanford.EDU>
Subject: rec.humor.funny
Dear John
I think that your not having tried out the "joke" on a Scot is
revealing. After all, it makes no attack on the character of the
Jewish gentlemen: he indulges, ironically, in a harmless prank which
results in his being promptly murdered by the Scot, motivated
presumably by Scottish meanness, coldbloodedness and temper. This is
just the sort of dangerous stereotyping which Gorin and Sack complain
of, and is liable to lead to the sort of anti-Scottish feeling which
gave rise to Culloden. AS someone who numbers many Scots among his
friends, and lived there for several years, I think I can say that any
true Scottish Nationalist would find this attempt at humor quite
unacceptable in any civilised publication. If Stanford is to be a
place where one can eat haggis proudly, then we must take this sort of
neo-English hatred seriously.
Pat Hayes
∂30-Jan-89 1118 @Score.Stanford.EDU:tom@polya.Stanford.EDU Large automated NFS file/archive server
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 30 Jan 89 11:18:29 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Mon 30 Jan 89 11:14:27-PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA00820; Mon, 30 Jan 89 09:43:12 -0800
Date: Mon, 30 Jan 89 09:43:12 -0800
From: Tom Dienstbier <tom@polya.Stanford.EDU>
Message-Id: <8901301743.AA00820@polya.Stanford.EDU>
To: faculty@polya.Stanford.EDU, g.gorin@othello, hansen@sierra,
su-computers@polya.Stanford.EDU
Subject: Large automated NFS file/archive server
On February 15th, in room 252, Margaret Jacks Hall, from 1:30 to 3:00,
Ephoch Systems will be providing a 60-minute technical presentation on
its Epoch-1 InfiniteStorage Server, a high-capacity, high performance,
and fully automated NFS file server system for technical workstation
networks experiencing a chronic shortage of Winchester disk space.
The Epoch-1 features a hierarchical storage architecture that transparently
integrates optical disk drive and jukeboxes into a high-speed Winchester
disk system. The company will explain how it has applied virtual memory
concepts to disk storage to achieve capacity and cost advantages of optical
disks yet operate with the look and feel of an all-magnetic disk file server.
The company will also discuss its multiprocessor architecture for high
performance NFS file access, and its online backup facility that allows
for unattended backups while the system is serving workstation users.
Tom Dienstbier
CSDCF
-------
∂30-Jan-89 1124 @Score.Stanford.EDU:Mailer@SAIL.Stanford.EDU misquote
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 30 Jan 89 11:24:50 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Mon 30 Jan 89 11:17:56-PST
Message-ID: <1dhYkW@SAIL.Stanford.EDU>
Date: 30 Jan 89 1117 PST
From: John McCarthy <JMC@SAIL.Stanford.EDU>
Subject: misquote
To: su-etc@SAIL.Stanford.EDU, faculty@SCORE.STANFORD.EDU
A search for the word MOTIVATING in su-etc revealed that today's
Daily's supposed quote from me was from Joseph Jacobs, a PhD
student in computer science. That isn't the only incompetence
shown by the Stanford Daily in this story. Since I attempted to
distinguish between what the University has a legal right to do
and what the traditions of academic freedom require, I lost badly
by this.
∂30-Jan-89 1142 @Score.Stanford.EDU,@polya.Stanford.EDU:TAJNAI@Score.Stanford.EDU Re: Large automated NFS file/archive server
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 30 Jan 89 11:42:07 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Mon 30 Jan 89 11:37:58-PST
Received: from Score.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA08300; Mon, 30 Jan 89 11:38:43 -0800
Date: Mon 30 Jan 89 11:30:23-PST
From: Carolyn Tajnai <TAJNAI@Score.Stanford.EDU>
Subject: Re: Large automated NFS file/archive server
To: tom@Polya.Stanford.EDU, faculty@Polya.Stanford.EDU,
g.gorin@Macbeth.Stanford.EDU, hansen@Sierra.Stanford.EDU,
su-computers@Polya.Stanford.EDU
In-Reply-To: <8901301743.AA00820@polya.Stanford.EDU>
Message-Id: <12466733125.23.TAJNAI@Score.Stanford.EDU>
Tom, that is right in the middle of the Computer Forum 21st Annual meeting.
Could the presentation date be changed?
Carolyn
-------
∂30-Jan-89 1225 @Score.Stanford.EDU:katiyar@polya.Stanford.EDU winter potluck (volunteer wanted)
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 30 Jan 89 12:25:07 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Mon 30 Jan 89 12:21:16-PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA12056; Mon, 30 Jan 89 12:22:22 -0800
Date: Mon, 30 Jan 1989 12:22:19 PST
Sender: "Dinesh H. Katiyar" <katiyar@polya.stanford.edu>
From: Potluck Committee <katiyar@polya.stanford.edu>
To: faculty@score, research-associates@score, secretaries@score
Subject: winter potluck (volunteer wanted)
Message-Id: <CMM.0.87.602194939.katiyar@polya.stanford.edu>
It has become a tradition within the department to hold a
Winter Quarter potluck every year. In the past, these events have been
hosted by faculty members and research associates who have graciously
volunteered their homes for an evening.
Plans are underway to continue with the traditional potluck,
but a location for this year's event has not yet been found. If you
are interested in serving as this year's host, please let us know.
The only timing constraint is that the potluck should take place some
time soon after midterms (the following dates seem quite appropriate -
17th,18th,24th or 25th of February).
As the organizational details of the event will all be handled
by the Student Social Committee, the inconvenience to the host should
be kept to a minimum. Thanks!
Jennifer Anderson
anderson@polya
Jaikumar Ramanathan
jaikumar@polya
Dinesh Katiyar
katiyar@polya
∂30-Jan-89 1336 LOGMTC-mailer Carl Gunter talk 2/8
Received: from ra.stanford.edu by SAIL.Stanford.EDU with TCP; 30 Jan 89 13:36:09 PST
Received: by ra.stanford.edu (5.59/25-eef) id AA02712; Mon, 30 Jan 89 13:34:49 PDT
Date: Mon, 30 Jan 89 13:34:49 PDT
From: John Mitchell <jcm@ra.stanford.edu>
Message-Id: <8901302134.AA02712@ra.stanford.edu>
To: csd@score, logmtc@sail
Subject: Carl Gunter talk 2/8
INHERITANCE AND EXPLICIT COERCION
speaker:
Carl Gunter (Penn CIS)
work joint with:
Val Breazu-Tannen (Penn CIS)
Thierry Coquand (INRIA)
Andre Scedrov (Penn Mathematics)
time and place:
Wed Feb 8 at 4:15 PM in MJH 352
We present a method for providing semantic interpretations for
languages which feature INHERITANCE in the framework of statically
checked, rich type disciplines. We illustrate our approach on an
extension of the language Fun of Cardelli and Wegner, which we
interpret via a translation into an extended polymorphic lambda
calculus. Our approach interprets inheritances in Fun as COERCION
FUNCTIONS already DEFINABLE in the target of the translation. Existing
techniques in the theory of semantic domains can be then used to
interpret the extended polymorphic lambda calculus, thus providing
many models for the original language. Our method allows the
simultaneous modeling of PARAMETRIC POLYMORPHISM, RECURSIVE TYPES, and
INHERITANCE, something that was regarded as problematic because of the
seemingly contradictory characteristics of inheritance and type
recursion on higher types.
We identify the main difficulty in providing interpretations for
explicit type disciplines featuring inheritance, namely that programs
can type-check in more than one way. Since interpretations
follow the type-checking derivations, COHERENCE theorems are required,
(that is, one must prove that the meaning of a program does not depend on the
way it was type-checked), and we do prove them for our semantic method.
Interestingly, proving coherence in the presence of recursive types,
variants, and abstract types forced us to reexamine fundamental equational
properties that arise in proof theory (in the form of commutative reductions)
and domain theory (in the form of strict vs. non-strict functions).
∂31-Jan-89 0132 X3J13-mailer Comments on the Character proposal dated January 1, 1989
Received: from lucid.com by SAIL.Stanford.EDU with TCP; 31 Jan 89 01:31:58 PST
Received: from bhopal ([192.9.200.13]) by heavens-gate.lucid.com id AA03960g; Tue, 31 Jan 89 01:21:13 PST
Received: by bhopal id AA14594g; Tue, 31 Jan 89 01:23:28 PST
Date: Tue, 31 Jan 89 01:23:28 PST
From: Jon L White <jonl@lucid.com>
Message-Id: <8901310923.AA14594@bhopal>
To: Moon@STONY-BROOK.SCRC.Symbolics.COM
Cc: Baggins@IBM.COM, CL-Characters@SAIL.STANFORD.EDU, X3J13@SAIL.STANFORD.EDU,
Common-Lisp-Implementors@STONY-BROOK.SCRC.Symbolics.COM,
KMP@STONY-BROOK.SCRC.Symbolics.COM,
Palter@STONY-BROOK.SCRC.Symbolics.COM
In-Reply-To: David A. Moon's message of Tue, 24 Jan 89 14:46 EST <19890124194625.1.MOON@EUPHRATES.SCRC.Symbolics.COM>
Subject: Comments on the Character proposal dated January 1, 1989
re:
Date: Tue, 24 Jan 89 14:46 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: Comments on the Character proposal dated January 1, 1989
. . . what to do about the
SCHAR, SBCHAR, and SGCHAR mess. First of all, you only need two functions,
not three, because there are only two specified specialized representations.
SCHAR should be for what I've called SIMPLE-STRING, SBCHAR should be
for SIMPLE-BASE-STRING, and SGCHAR is not needed. (In fact I would prefer
to remove all of the specialized versions of AREF from the language, in
favor of THE or type declarations, but I know that would only pass over
some peoples' dead bodies so I won't push it.)
. . .
You might be surprised at the kinds of people who really don't care
about whether or not names for the specialized versions of AREF are
defined in the portable languages. Me, for one.
But what I am very leary about is a definition of an important data
type that is too wishy-washy to be portable. SIMPLE-BASE-STRING may be
in this category. By way of explanation, let me draw the parallel with
some numeric types.
Ostensibly, FIXNUM is in this non-portable category, since up until the
Hawaii meeting, there wasn't even any requirement in the language the
type FIXNUM mean anything at all (i.e., it could be the null subset of
INTEGER). At least now (TYPEP x 'FIXNUM) will imply that <x> is useful
for array/vector indices. For example, the following very reasonable
program might work in implementation A, but fail in implementation B,
*** merely because of the variance of the FIXNUM datatype between the
two implementations ***:
(defun fills-out-p (i b)
;; Ascertain whether bit 'i' of the bit vector 'b' is the same as
;; all the remaining bits (in the higher bit positions).
(check-type i fixnum)
(check-type b simple-bit-vector)
(locally (declare (fixnum i) (simple-bit-vector b))
;; Declarations for "fast, open-coding"
(or (>= i (length b))
(null (position (logxor 1 (aref b i)) ;bit 'i', "inverted"
b
:start (the fixnum (1+ i)))))))
(setq i (position 1 <long-bit-vector>)) ==> say, 100000
(fills-out-p <long-bit-vector> i)
Given our resolution passed in Hawaii about "tightening" the definition
of the type FIXNUM, the above program is now fully portable. True,
there are still some areas of the type FIXNUM that aren't portable;
but the situation isn't nearly as bad as it was before.
Contrast this with the situation regarding the type FLOAT. Although
there are many aspects of non-portability regarding the _use_ of
floating point numbers, there is no permitted variance in the definition
of the type FLOAT. It is never permissible, for example, for one
implementation to implement the FLOAT datatype as lists of integers,
and another to implement it as some low-level primitive datatype.
Thus if a user's "declaration" (CHECK-TYPE X FLOAT) fails in one
implementation, but works in another, it is not due to an inherent
weakness in the specification of the type FLOAT.
As I pointed out during the Hawaii meeting, the types SIMPLE-BASE-STRING
and SIMPLE-GENERAL-STRING contain all the seeds of disaster that the
original definition of FIXNUM did. I would almost rather not see them
put into the language at all if there isn't some minimal statement of
portability about them. The question is: "Is it worth it to make these
types be part of the portable language?". The answer to that will depend
on whether or not there are serious contenders for "optimization". It
is my current belief that Lucid's optimization strategies for STRINGs are
_not_ particularly dependent on having a distinction between SIMPLE-STRING
and SIMPLE-BASE-STRING. I.e., we considered the problem some time ago,
and decided that we could "swallow" a union type, if necessary, for
SIMPLE-STRING, given that the union was only concerning one of two
primitive element types.
So, now, the question is: What implememtations -- current, or seriously
conceived -- would benefit greatly from a portable definition of the
type SIMPLE-BASE-STRING? Let them come forward now, or for the next
few years hold their peace.
-- JonL --
∂31-Jan-89 0942 STAGER@Score.Stanford.EDU Autumn Quarter Tau Beta Pi
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 31 Jan 89 09:42:50 PST
Date: Tue 31 Jan 89 09:39:29-PST
From: Claire Stager <STAGER@Score.Stanford.EDU>
Subject: Autumn Quarter Tau Beta Pi
To: faculty@Score.Stanford.EDU
Office: CS-TAC 29, 723-6094
Message-ID: <12466975081.17.STAGER@Score.Stanford.EDU>
The Autumn Quarter Tau Beta Pi course survey results have arrived, and will
be delivered to your mailboxes later today.
Claire
-------
∂31-Jan-89 1357 CL-Characters-mailer Comments on the Character proposal dated January 1, 1989
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 31 Jan 89 13:57:06 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 531105; Tue 31-Jan-89 16:53:00 EST
Date: Tue, 31 Jan 89 16:53 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: Comments on the Character proposal dated January 1, 1989
To: Jon L White <jonl@lucid.com>
cc: Baggins@IBM.COM, CL-Characters@SAIL.STANFORD.EDU, X3J13@SAIL.STANFORD.EDU,
Common-Lisp-Implementors@STONY-BROOK.SCRC.Symbolics.COM, KMP@STONY-BROOK.SCRC.Symbolics.COM,
Palter@STONY-BROOK.SCRC.Symbolics.COM
In-Reply-To: <8901310923.AA14594@bhopal>
Message-ID: <19890131215325.7.MOON@EUPHRATES.SCRC.Symbolics.COM>
Maybe I shouldn't reply to this, since the content doesn't seem to be
directed to me, but on the other hand I was the only non-CC recipient.
Date: Tue, 31 Jan 89 01:23:28 PST
From: Jon L White <jonl@lucid.com>
....
But what I am very leary about is a definition of an important data
type that is too wishy-washy to be portable. SIMPLE-BASE-STRING may be
in this category....
As I pointed out during the Hawaii meeting, the types SIMPLE-BASE-STRING
and SIMPLE-GENERAL-STRING contain all the seeds of disaster that the
original definition of FIXNUM did.
I'm afraid I don't understand your comment. What's inadequately specified
about SIMPLE-BASE-STRING? Is the problem with the SIMPLE part or with
the BASE part, i.e. are you complaining that SIMPLE arrays aren't well
enough specified, or that the BASE-CHARACTER element-type isn't well
enough specified, or something else?
It
is my current belief that Lucid's optimization strategies for STRINGs are
_not_ particularly dependent on having a distinction between SIMPLE-STRING
and SIMPLE-BASE-STRING. I.e., we considered the problem some time ago,
and decided that we could "swallow" a union type, if necessary, for
SIMPLE-STRING, given that the union was only concerning one of two
primitive element types.
I find this rather surprising, although it's really not my place to question
it. You really don't generate just a move.b instruction followed by some kind
of instruction to add in the type bits, on 68000's, for aref of a simple
1-dimensional array of base characters, at highest speed optimization level
and lowest safety optimization level? Instead you generate some kind of type
check followed by branches to either a move.b or a move.l depending on the
string's element type?
Answering the first part is much more important than answering the second
part, in fact maybe I didn't really care about the second part anyway.
∂31-Jan-89 1405 misha@polya.Stanford.EDU This week's AFLB
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 31 Jan 89 14:04:57 PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA22680; Tue, 31 Jan 89 14:01:54 -0800
Date: Tue, 31 Jan 89 14:01:54 -0800
From: Michael Kharitonov <misha@polya.Stanford.EDU>
Message-Id: <8901312201.AA22680@polya.Stanford.EDU>
To: aflb-all@polya.Stanford.EDU
Subject: This week's AFLB
The next AFLB will be this Thursday at 12:30 in room 352.
Status: RO
Arvind Raghunathan from Berkeley will speak about
A CONSTRUCTIVE RESULT FROM GRAPH MINORS: LINKLESS EMBEDDINGS
We consider the problem of checking whether a graph can be embedded
in 3-space such that no collection of vertex disjoint cycles is
topologically linked. The Robertson-Seymour theory of graph minors is
applicable to this problem and guarantees the existence of an O(n↑3)
algorithm for this decision problem. However, not even a finite time
decision procedure was explicitly known for this problem.
We exhibit a small set of forbidden minors for linkless emebddable
graphs and show that any graph with these minors cannot be embedded
without linked cycles. We further establish that any graph which does
not contain these minors is embeddable without linked cycles. Thus, we
demonstrate an O(n↑3) algorithm for the decision problem. This is one
of the first problems for which a polynomial time algorithm has been
constructed after it was shown that such an algorithm must exist.
An important consequence of our work is a proof that a linkless
embeddable graph is also knotless embeddable. We also show that
a graph which is embeddable without any two cycles being linked is
linkless embeddable. Motivated by these results, we define the notion of
a "good" three-dimensional embedding of a graph and show that a graph
has a good embedding if and only if it is linkless embeddable. This
notion of a good embedding gives us a finite time alogrithm to
actually embed a graph without linked cycles, if such an embedding
exists.
(This is joint work with Rajeev Motwani and Huzur Saran)
-----------------------------------------------------------------
Next week we'll have two AFLB meetings again. On Tuesday at 4:15 in
room 352 A. Razborov from Moscow will speak on the method of approximations
for boolean circuit complexity.
∂31-Jan-89 1528 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu sorting on nxn mesh
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 31 Jan 89 15:28:23 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA28457; Tue, 31 Jan 89 15:27:19 -0800
Message-Id: <8901312327.AA28457@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Tue, 31 Jan 89 15:26:55 PST
Received: by BYUADMIN (Mailer R2.01A) id 6131; Tue, 31 Jan 89 16:25:19 MST
Date: Tue, 31 Jan 89 17:07:54 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Hartmut Schmeck <NIP77%DKIUNI0.BITNET@forsythe.stanford.edu>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Hartmut Schmeck <NIP77%DKIUNI0.BITNET@forsythe.stanford.edu>
Subject: sorting on nxn mesh
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
In the research group on algorithms for VLSI at the University of Kiel (FRG)
we studied the problem of sorting on an nxn mesh quite intensively.
The algorithm mentioned by Koloutsakis is a special case of a
partition sort algorithm (see H. Schroeder,"Partition Sorts for VLSI," Proc.
GI-13. Jahrestagung, Hamburg, Oct. 1983, Informatik-Fachberichte 73, Springer
Verlag, 101-116 (1983)). We do not know of any partition sort
algorithm (i.e. an algorithm sorting repeatedly the blocks of a fixed
sequence of partitions, where all the blocks have constant size and
all the elements of a block have constant distance) having a worst case
time less than O(n*n), although simulations on random sequences showed
a sorting time of O(n).
A bad case for Koloutsakis algorithm is the following:
000000000000
000010000000
000011000000
000111100000
000111110000
001111111000
001111111100
011111111110
011111111111
111111111111
111111111111
111111111111
We call it "sand dune", because it takes a long time (O(n*n)) before
the "sorting wind" has flattened the dune. We do not have a formal
proof so far that every partition sort algorithm has a worst case
time of Omega(n*n).
Hartmut Schmeck, Institut f. Informatik, Universitaet Kiel,
D-2300 Kiel, F. R. Germany
e-mail: NIP77@DKIUNI0.BITNET
∂31-Jan-89 2321 @Score.Stanford.EDU:ag@pepper.stanford.edu acquiring a multiprocessor
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 31 Jan 89 23:21:52 PST
Received: from pepper.stanford.edu by SCORE.STANFORD.EDU with TCP; Tue 31 Jan 89 23:18:18-PST
Received: by pepper.stanford.edu (5.57/Ultrix2.4-C)
id AA10622; Tue, 31 Jan 89 23:15:49 PST
Message-Id: <8902010715.AA10622@pepper.stanford.edu>
To: faculty@score.Stanford.EDU
Subject: acquiring a multiprocessor
Date: Tue, 31 Jan 89 23:15:47 PST
From: ag@pepper.stanford.edu
During the last few months I have been trying to persuade AIR (Academic
Information Resources) to acquire a multiprocessor. I primarily need it
for the CS411 course (Parallel Computer Architectures and Programming) that
I teach every winter quarter. The course has an enrollment of 50+ students,
and requires several programming assignments and a final project to be done
on a multiprocessor. For the past two years I have been using our research
machine, an Encore Multimax with 16 processors, to provide the parallel
computing cycles. The use of the Encore by CS411 students hampers our
research on that machine, and these coursework cycles should really be
provided by AIR.
Ralph Gorin (Director of AIR) has responded favorably so far, but he is
interested in knowing how many other faculty members would also find such a
resource useful. The kind of machine we have in mind would have about 10-30
processors, provide for shared memory, and have a UNIX-like operating
system. The question we would like to have answered is:
For the courses that you are currently teaching or are likely to develop
within the next couple of years, would you use such a multiprocessor?
Please mail your responses to ag@pepper and I will collate and forward them
to Ralph Gorin. Thanks. --- Anoop.
∂01-Feb-89 0910 HEMENWAY@Score.Stanford.EDU Meeting Reminder
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 1 Feb 89 09:10:48 PST
Date: Wed 1 Feb 89 09:07:52-PST
From: Sharon Hemenway <HEMENWAY@Score.Stanford.EDU>
Subject: Meeting Reminder
To: phd-adm@Score.Stanford.EDU
Reply-To: Hemenway@Score.Stanford.EDU
Message-ID: <12467231469.23.HEMENWAY@Score.Stanford.EDU>
Just a reminder of our meeting tomorrow, at 12 noon in MJH 252. Lunch
(sandwiches, etc.) will be provided.
An advance apology to those of you who have to come in from off-campus
but we are not going to be able to get the first sets out until Friday
afternoon. To have them ready by our meeting tomorrow would mean that
we would, in effect, lose two days worth of material which could make
many more folders "complete" (folders will only go out to be read when
they are complete). Right now, we have only about 180 complete
folders so every little bit helps. I'm sure that we would be able to
arrange an after-hours or Saturday pick-up point, if necessary.
See you all tomorrow...
Sharon
-------
∂01-Feb-89 1353 X3J13-mailer Fairfax information and registration form
Received: from lucid.com by SAIL.Stanford.EDU with TCP; 1 Feb 89 13:51:58 PST
Received: from challenger ([192.9.200.17]) by heavens-gate.lucid.com id AA01841g; Wed, 1 Feb 89 13:46:50 PST
Received: by challenger id AA07139g; Wed, 1 Feb 89 13:42:36 PST
Date: Wed, 1 Feb 89 13:42:36 PST
From: Jan Zubkoff <jlz@lucid.com>
Message-Id: <8902012142.AA07139@challenger>
To: x3j13@sail.stanford.edu
Subject: Fairfax information and registration form
**PLEASE NOTE DATE CHANGE:
In order to include Subcommittee meetings prior to the Committee meeting, the
Committee meeting start date has been moved from 3/27 to 3/28.
Please let me know ASAP if you are planning to attend and whether you'll be
staying at the Marriott. On Monday I have to confirm the number rooms we
need.
Mailings should be completed by March 15 to avoid the ``two week rule''.
While we will have access to a copier, participants are encouraged to bring
their copies of subcommittee reports to the meeting.
---jan---
X3J13/ISO Meeting
X3J13: 3/27/89 - 3/30/89
ISO: 3/31/89 - 4/1/89
Fairfax, VA
SUBCOMMITTEE MEETINGS:
DATE: 3/27
PLACE: CONTEL (building is now shared with Lockheed and is so marked)
COMMITTEE MEETING:
DATES: 3/28 - 3/30
TIME: 9:00 - 5:00
CITY: Fairfax
PLACE: CONTEL
ADDRESS: 12015 Lee Jackson Highway (Route 50)
Note: We will not have to be escorted by secutity on the first floor,
but we will have to sign out and in again if we leave the building.
(THANKS BOB, for talking to security!)
DIRECTIONS FROM HOTEL: Route 50 West => Fair Oaks Shopping Center ramp
Turn right once in the complex and follow the circle half way around,
turning right into the CONTEL Parking area.
REGISTRATION FEE: $50 Payable to: LUCID, Inc.
HOTEL ACCOMODATIONS:
HOTEL: Marriott Courtyard
ADDRESS: 11220 Lee Jackson Highway, Fairfax, VA 22030 (Route 50)
PHONE: 800/447-7472, 703/273-6161
DIRECTIONS from airport:
Dullus Access Road => first exit, Route 28, turn right, heading south
Route 28 => Route 50 (Lee Jackson Highway) turn left, east towards Washington
Drive 8 1/2 - 9 miles (past Fair Oaks Shopping Center, on right)
The hotel is on the left just after Route 66.
RATE: $72/night
MENTION: "X3J13" for rate
ISO MEETING:
DATES: 3/31 - 4/1
TIME: 9:00 - 5:00
CITY: Fairfax
PLACE: CONTEL
ADDRESS: 12015 Lee Jackson Highway (Route 50)
For further information contact:
Jan Zubkoff
Lucid, Inc.
707 Laurel Street
Menlo Park, CA 94025
jlz@lucid.com
(415) 329-8400
!
X3J13 March 1989 Meeting Registration Form
Please include check for $50.00 payable to Lucid mail to:
Jan Zubkoff
Lucid, Inc.
707 Laurel Street
Menlo Park, CA 94025
(415) 329-8400
jlz@lucid.com
Name: _____________________________________________________________
Institution: ______________________________________________________
Phone: ____________________________________________________________
Lunch 3/28: _________ yes _______ no
Lunch 3/29: _________ yes _______ no
Lunch 3/30: _________ yes _______ no
If Subcommitte Room is Needed:
Subcommittee Name? ___________________________
How many people will attend? __________
Meeting time? __________
Length of meeting? __________
∂01-Feb-89 1759 emma@csli.Stanford.EDU CSLI Calendar, February 2, 4:14
Received: from csli.Stanford.EDU by SAIL.Stanford.EDU with TCP; 1 Feb 89 17:59:16 PST
Received: by csli.Stanford.EDU (4.0/inc-1.0)
id AA04588; Wed, 1 Feb 89 16:37:13 PST
Date: Wed, 1 Feb 89 16:37:13 PST
From: emma@csli.Stanford.EDU (Emma Pease)
Message-Id: <8902020037.AA04588@csli.Stanford.EDU>
To: friends@csli.Stanford.EDU
Subject: CSLI Calendar, February 2, 4:14
C S L I C A L E N D A R O F P U B L I C E V E N T S
_____________________________________________________________________________
2 February 1989 Stanford Vol. 4, No. 14
_____________________________________________________________________________
A weekly publication of The Center for the Study of Language and
Information, Ventura Hall, Stanford University, Stanford, CA 94305
____________
LINGUISTICS DEPARTMENT COLLOQUIUM
The Mapping Between Phonological Categories and Phonetic Continua
Some Case Studies
Michel T. T. Jackson
Yale University
Friday, 3 February, 4:15
Cordura Conference Room
____________
LINGUISTICS DEPARTMENT COLLOQUIUM
The Expression of Arguments in Serial Verb Constructions
Mark Baker
McGill University
Tuesday, 7 February, 7:30
Cordura Conference Room
-----------
COMMONSENSE AND NONMONOTONIC REASONING SEMINAR
A Minimal Model Semantics with Default Priorities
Paul Morris
IntelliCorp
Monday, 6 February, 3:15pm
MJH 301
Existing default reasoning systems may be divided into minimality
based formalisms, such as circumscription, and those that depend on a
fixed point construction, like default logic. The fixed point schemes
have appeared to possess an advantage in allowing implicit
specification of arbitrary priorities among defaults. However, they
also have disadvantages, including a lack of cumulativity, and
difficulty in properly representing some situations where a mere
possibility of some contingency is sufficient to overcome a default.
We present a model minimization scheme that supports implicit
specification of priorities among defaults. The system enjoys
cumulativity (like other model preference systems), and gives more
satisfactory results in situations where a possibility overcomes a
default.
-----------
SYMBOLIC SYSTEMS FORUM
The Ecology of Computation
Bernard A. Huberman
Dynamics of Computation Group, Xerox PARC
Friday, 10 February, 3:15
Room 60:61G
A most advanced instance of concurrent computation is provided by
distributed processing in open systems that have no global controls.
These emerging heterogeneous networks are becoming self-regulating
entities, which in their behavior are very different from their
individual components. Their ability to remotely spawn processes in
other computers and servers of the system offers the possibility of
having a community of computational agents that, in their
interactions, are reminiscent of biological and social organizations.
This talk will give a perspective on computational ecologies, and
describe a theory of their behavior, which explicitly takes into
account incomplete knowledge and delayed information on the part of
its agents. When processes can choose among many possible strategies
while collaborating in the solution of computational tasks, the
dynamics leads to asymptotic regimes characterized by fixed points,
oscillations, and chaos. We will also describe Spawn, an ongoing
project that utilizes idle computational resources in a distributed
network of high-performance workstations. Finally, we will discuss
the possible existence of a universal law regulating the way in which
the benefit of cooperation is manifested in the system.
∂01-Feb-89 2146 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Thirteenth Columbia University Theory Day
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 1 Feb 89 21:46:34 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA14905; Wed, 1 Feb 89 21:45:29 -0800
Message-Id: <8902020545.AA14905@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Wed, 1 Feb 89 21:37:22 PST
Received: by BYUADMIN (Mailer R2.01A) id 3446; Wed, 01 Feb 89 18:25:40 MST
Date: Wed, 1 Feb 89 19:23:59 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Zvi Galil <galil@CS.COLUMBIA.EDU>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Zvi Galil <galil@CS.COLUMBIA.EDU>
Subject: Thirteenth Columbia University Theory Day
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
THE 13TH THEORY DAY
at Columbia University
SPONSORED BY THE DEPARTMENT OF COMPUTER SCIENCE
FRIDAY, APRIL 14, 1989
10:00 PROFESSOR JEFFREY D. Ullman
Stanford University
EFFICIENT PROCESSING OF LOGIC PROGRAMS
11:00 DR. JON L. BENTLEY
A.T.& T. Bell Laboratories
HOW TO SOLVE A MILLION-CITY TRAVELLING SALESMAN PROBLEM
2:00 PROFESSOR LANE A. HEMACHANDRA
University of Rochester
BEYOND THE FALLEN HIERARCHIES
3:00 DR. ALOK AGGARWAL
IBM T.J. Watson Research Center
ON SEARCHING IN MULTIDIMENSIONAL MONOTONE ARRAYS
Coffee will be available at 9:30 am.
All lectures will be in the Kellogg Conference Center on the fifteenth
floor of the International Affairs Building, 118th Street and
Amsterdam Avenue.
The lectures are free and open to the public.
Call (212) 854-2736 for more information.
Theory Day is supported in part by a grant from the National Science
Foundation.
∂02-Feb-89 0859 @Score.Stanford.EDU:chandler@polya.Stanford.EDU Minutes to 1/10 Faculty Meeting
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 2 Feb 89 08:59:00 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Thu 2 Feb 89 08:55:05-PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA26991; Thu, 2 Feb 89 08:56:11 -0800
Date: Thu, 2 Feb 1989 8:56:08 PST
From: "Joyce R. Chandler" <chandler@polya.stanford.edu>
To: faculty@score, srstaff@score
Subject: Minutes to 1/10 Faculty Meeting
Message-Id: <CMM.0.87.602441768.chandler@polya.stanford.edu>
I apologize for a typo that appears on page 3 of the minutes to the 1/10
faculty meeting. Under the heading "Financial", this year's budget has been
set at $3,644,000.00, not $3,644.00. Please correct your copy. Thanks.
∂02-Feb-89 0927 TAJNAI@Score.Stanford.EDU program for the Forum Conference
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 2 Feb 89 09:26:55 PST
Date: Thu 2 Feb 89 09:19:21-PST
From: Carolyn Tajnai <TAJNAI@Score.Stanford.EDU>
Subject: program for the Forum Conference
To: faculty@Score.Stanford.EDU, students@Score.Stanford.EDU,
ras@Score.Stanford.EDU, staff@Score.Stanford.EDU
Message-ID: <12467495704.21.TAJNAI@Score.Stanford.EDU>
I posted the pogram on the CSD Bulletin Board. If you want me to mail it
to you on-line, let me know. It is long, and I don't want to clutter your
personal mailbox.
Carolyn Tajnai
-------
∂02-Feb-89 1102 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu What Exit Seminar Series
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 2 Feb 89 11:02:20 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA03902; Thu, 2 Feb 89 11:01:01 -0800
Message-Id: <8902021901.AA03902@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Thu, 2 Feb 89 10:41:30 PST
Received: by BYUADMIN (Mailer R2.01A) id 6251; Thu, 02 Feb 89 08:46:28 MST
Date: Thu, 2 Feb 89 09:30:43 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Joan Feigenbaum <jf@RESEARCH.ATT.COM>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Joan Feigenbaum <jf@RESEARCH.ATT.COM>
Subject: What Exit Seminar Series
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
DIMACS, the new NSF Science and Technology Center for
DIscrete MAth and Computer Science, is pleased to announce
THE WHAT EXIT SEMINAR SERIES.
Tentatively, we are planning to sponsor a series of
day-long seminars, each organized around a specific topic
in discrete math or theoretical computer science. The
participating institutions are Rutgers, Princeton, Bellcore,
and AT&T Bell Labs, and the location of the meetings will
rotate among these four.
This is a preliminary announcement of the first seminar.
Topic: Approximation Algorithms for NP-Complete Problems
Date: Friday, March 3, 1989
Place: Princeton
There will probably be three formal talks, a lunch, and an
informal problem session. More information, including
speakers, titles, abstracts, directions, etc., will follow
in future announcements. In the meantime, please mark your
calendars.
Joan Feigenbaum
jf@research.att.com
∂02-Feb-89 1121 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Conference on Math. Foundations of Prog. Semantics
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 2 Feb 89 11:21:37 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA04995; Thu, 2 Feb 89 11:19:50 -0800
Message-Id: <8902021919.AA04995@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Thu, 2 Feb 89 10:57:43 PST
Received: by BYUADMIN (Mailer R2.01A) id 1620; Thu, 02 Feb 89 00:28:13 MST
Date: Wed, 1 Feb 89 23:33:05 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Dave Schmidt <SCHMIDT%KSUVAX1.BITNET@forsythe.stanford.edu>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Dave Schmidt <SCHMIDT%KSUVAX1.BITNET@forsythe.stanford.edu>
Subject: Conference on Math. Foundations of Prog. Semantics
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
ADVANCE PROGRAM
5th Conference on the Mathematical Foundations of Programming Semantics
Tulane University
New Orleans, Louisiana
March 29-April 1, 1989
Wednesday, March 29
8:30am Registration
9:00 Invited Speaker: Samson Abramsky, Imperial College
10:10 Connections between a concrete and an abstract model of
concurrent systems, Eugene W. Stark, SUNY Stony Brook
10:50 break
11:10 A hierarchy of domains for real-time distributed computing,
G.M. Reed, Oxford Univ.
11:50 Factorizing proofs in timed CSP,
Jim Davies and Steve Schneider, Oxford Univ.
12:30pm lunch
2:00 Invited speaker: Luca Cardelli, Digital SRC
3:10 Inductively defined types in the calculus of constructions,
Frank Pfenning, Carnegie-Mellon Univ.
3:50 break
4:10 On some semantic issues in the reflective tower,
Karoline Malmkjaer, University of Copenhagen
4:50 Semantic models for total correctness and fairness,
Michael Main and David Black, Univ. of Colorado
5:30 end of program
5:45 reception
Thursday, March 30
9:00am Invited speaker: John Reynolds, Carnegie-Mellon Univ.
10:10 Equationally fully abstract models of PCF,
Allen Stoughton, Univ. of Sussex
10:50 break
11:10 Final semantics for languages of specifications,
Lawrence Moss, IBM Research, and Satish Thatte, Univ. of California,
San Diego
11:50 Does ``N+1 times'' prove more programs correct than ``N times''?
Ana Pasztor, Florida Intl. Univ.
12:30pm lunch
2:00 Invited speaker: Peter Johnstone, Cambridge Univ.
3:00 break
3:30 Organizers' session (short presentations of invited abstracts)
6:00 end of program
7:30 banquet
Friday, March 31
9:00am Termination, deadlock, and divergence,
L. Aceto and M. Hennessy, Univ. of Sussex
9:40 A category-theoretic semantics for unbounded indeterminacy,
Prakash Panangadan and James Russell, Cornell Univ.
10:20 break
10:40 Unbounded nondeterminism in CSP,
A.W. Roscoe, Oxford Univ.
11:20 The semantics of priority and fairness in Occam,
Geoff Barrett, Oxford Univ.
noon lunch
1:15pm Invited speaker: Robin Milner, Edinburgh Univ.
2:15 end of program
Saturday, April 1
9:00am Algebraic types in PER models,
J.M.E. Hyland, Cambridge Univ., E.P. Robinson, Queen's Univ.,
and G. Rosolini, Universita degli Studi
9:40 Pseudo-retract functors for local lattices and bifinite L-domains,
Elsa Gunter, Univ. of Pennsylvania
10:20 break
10:40 L-domains and lossless powerdomains,
Radhakrishnan Jagadeesan, Cornell Univ.
11:20 Invited speaker: Peter Freyd, Univ. of Pennsylvania
12:20 end of program
Local Information for Participants
The meetings will take place in the Lupin Theater of the Dixon Performing Arts
Center on the campus of Tulane University. Attendees can choose to stay at
the Avenue Plaza Hotel, which is a 15 minute ride by streetcar from the
University, or at a dormitory on the Tulane University campus.
The Avenue Plaza Hotel is located at 2111 St. Charles Avenue; registration
information is listed below. Transportation to the meeting is
provided by the St. Charles Streetcar line, which travels directly from the
hotel to the University. The fare is 60 cents, and exact change is required.
The meeting room for the conference is a ten minute walk from the Tulane street
car stop.
Dormitory accomodations are located on the Tulane University campus.
Registration information is listed below. The meeting room is about a ten
minute walk from the dormitories.
A map will be sent to those who register in advance.
The weather in New Orleans in late March is spring-like, with high temperatures
in the 60s or higher. Rain is a possibility.
Transportation from the airport to the hotel is available from the airport
limousine service or from taxis. The limousine service costs $7 per person and
runs virtually continuously. Taxis are always available, and the cost for
transportation to the hotel or the dormitory is about $18 for 4 people or less.
Since the limousine takes a rather long fixed route, stopping at major hotels
only, a taxi might be the preferred transportation for those staying at the
dormitory or for a group of three or more staying at the hotel.
In addition to the scientific program at the workshop, there are two planned
social events. A reception will be held on Wednesday afternoon, immediately
following the last talk of the day. A banquet will occur Thursday evening.
Spouses and friends are welcome; additional tickets for the banquet will be
available for purchase at the meeting. No organized excursions are planned,
but Friday afternoon and evening are left open for individual activities.
Please note that the University has no provisions for accepting credit cards,
so registrants should be prepared to pay registration fees by cash or check.
Lastly, reservations for the limousine service from the hotel to the airport
must be made at least 3 hours in advance of when one plans to leave the hotel.
The limo will take approximately 1 hour to reach the airport from the hotel.
Registration Form----------------------------------------------------
Conference on Mathematical Foundations of Programming Semantics
Name:
Address:
E-mail:
Telephone:
Registration fee (mark one; payment may be enclosed with this form or can be
made on the first day of the workshop) Note: registration fee includes price
of one banquet ticket.
__ Regular (payment made by March 10) $70
__ Regular (payment made after March 10) $80
__ Student $35
Extra banquet tickets (add $30 per ticket): ___
Make checks payable to: Conference on Mathematical Foundations
Please mail to:
Ms. Geralyn Caradona
Mathematics Department
Tulane University
New Orleans, LA 70118
Telephone (504) 865-5727
Accomodation Information-------------------------------------------
Avenue Plaza Hotel, 2111 St. Charles Ave., New Orleans, LA 70130
Telephone: 800-535-9575 or 504-566-1212.
Room Rates: 1 person $55/night
2 persons $55/night
3 persons $70/night
Contact the hotel directly to make reservations. Please mention that you are
attending the Mathematical Foundations Conference sponsored by the Mathematics
Department of Tulane University.
To make reservations for a dormitory room on the campus, contact the local
arrangements chairman, Dr. Boumediene Belkhouche, whose address and phone are
listed below. Since space in the dormitories is limited, contact him as soon
as possible.
Room Rates: 1 person $20/night (or $35/night for "luxury dorm room")
2 persons $25/night (or $45/night for "luxury dorm room")
For further information, contact the Local Arrangements Chairman
Dr. Boumediene Belkhouche
Computer Science Dept.
Tulane University
New Orleans, LA 70118
504-865-5840 bb@cs.tulane.edu
∂02-Feb-89 1307 X3J13-mailer Really about TYPEP failures: Comments on the Character proposal dated January 1, 1989
Received: from lucid.com by SAIL.Stanford.EDU with TCP; 2 Feb 89 13:07:23 PST
Received: from bhopal ([192.9.200.13]) by heavens-gate.lucid.com id AA03279g; Thu, 2 Feb 89 13:02:01 PST
Received: by bhopal id AA29703g; Thu, 2 Feb 89 13:04:21 PST
Date: Thu, 2 Feb 89 13:04:21 PST
From: Jon L White <jonl@lucid.com>
Message-Id: <8902022104.AA29703@bhopal>
To: Moon@STONY-BROOK.SCRC.Symbolics.COM
Cc: Baggins@IBM.COM, CL-Characters@SAIL.STANFORD.EDU, X3J13@SAIL.STANFORD.EDU,
Common-Lisp-Implementors@STONY-BROOK.SCRC.Symbolics.COM,
KMP@STONY-BROOK.SCRC.Symbolics.COM,
Palter@STONY-BROOK.SCRC.Symbolics.COM
In-Reply-To: David A. Moon's message of Tue, 31 Jan 89 16:53 EST <19890131215325.7.MOON@EUPHRATES.SCRC.Symbolics.COM>
Subject: Really about TYPEP failures: Comments on the Character proposal dated January 1, 1989
re: I'm afraid I don't understand your comment. What's inadequately
specified about SIMPLE-BASE-STRING?
Sorry, I wasn't clear enough here. The phrase used was "wishy-washy",
and it didn't mean that the specification was unclear or something;
rather, it called in question the enforcement of the specification. As
I understand it, it's entirely permissible for one implementation to
merge SIMPLE-BASE-STRING and SIMPLE-GENERAL-STRING into one type,
whereas another may make them type-disjoint.
This is a problem not specific to SIMPLE-BASE-STRING etc, but also applies
to any "wishy-washyness" about the disjointedness of types, where
there is good reason to believe that some implementations will truly
utilize that disjointnedness. Recall my comment about the situation
with the FLOAT datatype:
Contrast this with the situation regarding the type FLOAT. Although
there are many aspects of non-portability regarding the _use_ of
floating point numbers, there is no permitted variance in the definition
of the type FLOAT. It is never permissible, for example, for one
implementation to implement the FLOAT datatype as lists of integers,
and another to implement it as some low-level primitive datatype.
Thus if a user's "declaration" (CHECK-TYPE X FLOAT) fails in one
implementation, but works in another, it is not due to an inherent
weakness in the specification of the type FLOAT.
Suppose for the moment that one implementation merges the FLOAT and CONS
datatypes by implementing FLOATs as a list of three integers (such as the
the values returned by integer-decode-float), but another implementation
makes them disjoint as "primitive" types. At first blush, one might want
to dismiss this case as simply an "efficiency" concern for the second
implementation. But consider the problems for someone developing the
following program on the first implementation and delivering it on the
second:
(defun foo (x)
(if (typep x 'float)
(sin x)
(error "Must have a float")))
(foo (list 1 0 1)) ;; knowing that (float 1.0) is ...
This is a valid program in the first implementation, because the list
(1 0 1) is a valid FLOAT in that implementation. But when moving it to
the second implementation, you get a bug. Now, implementing FLOATs as
LISTs may look artificial, but this example exactly parallels one of the
more annoying porting problems that some 3600 users have when going into
virtually any of the stock hardare implementations. See footnote below.
Recall the recent cleanup proposal to "tighten up" the definition of
FIXNUM so that its use will more frequently be portable.
Recall also the recent cleanup issue to tighten the FUNCTION type so
that it is no longer ambiguous with SYMBOL.
Recall also the CLOS need to tighten up the disjointedness of the types
found on CLtL p.31 (along with others too); 88-002R, p.1-17.
Recall the trouble we've had with the ambiguity in the alternatives
for SHORT-FLOAT, SINGLE-FLOAT, DOUBLE-FLOAT, and LONG-FLOAT.
Given this long history of misguided permissiveness, and our frequent
need to "tighten things up", don't you think it would a mistake to start
out with the types SIMPLE-BASE-STRING and SIMPLE-GENERAL-STRING ambiguous?
You also asked about how Lucid might implement open-coding of SGCHAR and
SBCHAR. This is immaterial. I only meant to say that *if* the character
proposal were to require (or suggest) that SIMPLE-STRING be a union of
two primitive types, we could "swallow" that (possible a little gulping
along the way). Dave Unietis of Lucid, who has been participating in the
Character subcommittees deliberations, will probably make a more detailed
commentary soon as to what we expect of the Character Proposal.
-- JonL --
Footnote:
Actually, the FLOATs-as-LISTs example is of more than passing interest,
because if you change the names appropriately, you will see exactly
the same problem that certain users have when porting code from the 3600
implementation to *any* stock hardware implementation that does serious
open-coding of AREF. Note that the only function I've mentioned is
TYPEP -- not hokey-pokey-adjust-array or whatever; that's why all the
thousands of lines of discussion about adjust-array etc on cl-cleanup are
not germane to the real problem. Focusing on adjust-array can, at best,
emasculate some of its mandated error checking; at worst, it can confuse
some would-be heros into thinking that the type disjointedness in question
is merely a matter of semantics that can cleared up by clever wording.
Make no mistake. The disjointedness is essential to the optimization
strategies of *all* the commercial stock hardware implementations
represented at the Hawaii meeting.
∂02-Feb-89 1613 @polya.Stanford.EDU:tah@linz MTC Seminar
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 2 Feb 89 16:11:38 PST
Received: from [36.8.0.142] by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA25644; Thu, 2 Feb 89 16:08:55 -0800
Received: by linz.stanford.edu (5.59/25-eef) id AA01841; Thu, 2 Feb 89 16:02:24 PDT
Message-Id: <8902030002.AA01841@linz.stanford.edu>
To: lop@polya
Subject: MTC Seminar
Reply-To: tah@cs.stanford.edu
Date: 02 Feb 89 16:02:21 PST (Thu)
From: Tom Henzinger <tah@linz>
Friday, February 3, 12 noon, MJH 301:
I'm going to try to recreate Samson Abramsky's POPL tutorial talk on
concurrency from his slides.
The tutorial focuses on the semantics of labeled transition systems,
in which concurrency is reduced to nondeterminism (by interleaving).
A number of answers have been proposed in the literature to the
following fundamental question: when do two processes have the same
meaning? Abramsky unifies the analysis of process equivalences by
reducing them to equality on the observable behavior of processes:
p ~ q iff for all observable properties A,
p satisfies A precisely when q satisfies A.
Dependent on which primitive observations are admitted, this definition
yields (most of) the previously proposed equivalences on processes.
-- Tom.
∂02-Feb-89 1639 STAGER@Score.Stanford.EDU Preliminary Class Lists
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 2 Feb 89 16:38:58 PST
Date: Thu 2 Feb 89 16:34:45-PST
From: Claire Stager <STAGER@Score.Stanford.EDU>
Subject: Preliminary Class Lists
To: faculty@Score.Stanford.EDU
Office: CS-TAC 29, 723-6094
Message-ID: <12467574965.43.STAGER@Score.Stanford.EDU>
Preliminary class lists have arrived and will be delivered to your mailboxes
tomorrow (Friday).
Claire
-------
∂02-Feb-89 1644 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Found: one cute lemma, doesn't answer to any name.
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 2 Feb 89 16:44:41 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA28342; Thu, 2 Feb 89 16:43:07 -0800
Message-Id: <8902030043.AA28342@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Thu, 2 Feb 89 16:31:33 PST
Received: by BYUADMIN (Mailer R2.01A) id 7296; Thu, 02 Feb 89 17:30:10 MST
Date: Thu, 2 Feb 89 16:56:51 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Martin Tompa <TOMPA%YKTVMX.BITNET@forsythe.stanford.edu>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Martin Tompa <TOMPA%YKTVMX.BITNET@forsythe.stanford.edu>
Subject: Found: one cute lemma, doesn't answer to any name.
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
In writing a paper, we came upon the combinatorial lemma given below.
We have been told that this lemma appeared somewhere previously, and
would like to include the appropriate citation. If you have lost this
lemma or have information on the whereabouts of its owner, please send a
note to tompa@ibm.com (or tompa@yktvmx on bitnet).
Lemma:
For k > 0, let B be a 2**k by k matrix whose rows are the 2**k distinct
elements of {0,1}**k. Let M be an r by n Boolean matrix with distinct
rows, and not containing as a submatrix any matrix whose rows are a
permutation of the rows of B. Then
r is at most the sum, as j goes from 0 to k-1, of n choose j.
∂02-Feb-89 1729 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu NIPS CALL FOR PAPERS
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 2 Feb 89 17:29:01 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA01009; Thu, 2 Feb 89 17:28:01 -0800
Message-Id: <8902030128.AA01009@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Thu, 2 Feb 89 17:26:58 PST
Received: by BYUADMIN (Mailer R2.01A) id 7706; Thu, 02 Feb 89 17:42:42 MST
Date: Thu, 2 Feb 89 16:59:14 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Stephen J Hanson <jose@TRACTATUS.BELLCORE.COM>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Stephen J Hanson <jose@TRACTATUS.BELLCORE.COM>
Subject: NIPS CALL FOR PAPERS
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
CALL FOR PAPERS
IEEE Conference on
Neural Information Processing Systems
- Natural and Synthetic -
Monday, November 27 -- Thursday November 30, 1989
Denver, Colorado
This is the third meeting of a high quality, relatively small,
inter-disciplinary conference which brings together
neuroscientists, engineers, computer scientists, cognitive
scientists, physicists, and mathematicians interested in all
aspects of neural processing and computation. Several days of
focussed workshops will follow at a nearby ski area. Major
categories and examples of subcategories for papers are the
following:
1. Neuroscience: Neurobiological models of development, cellular
information processing, synaptic function, learning, and memory.
Studies and analyses of neurobiological systems and development
of neurophysiological recording tools.
2. Architecture Design: Design and evaluation of net
architectures to perform cognitive or behavioral functions and to
implement conventional algorithms. Data representation; static
networks and dynamic networks that can process or generate
pattern sequences.
3. Learning Theory Models of learning; training paradigms for
static and dynamic networks; analysis of capability,
generalization, complexity, and scaling.
4. Applications: Applications to signal processing, vision,
speech, motor control, robotics, knowledge representation,
cognitive modelling and adaptive systems.
5. Implementation and Simulation: VLSI or optical implementations
of hardware neural nets. Practical issues for simulations and
simulation tools.
Technical Program: Plenary, contributed, and poster sessions will
be held. There will be no parallel sessions. The full text of
presented papers will be published.
Submission Procedures: Original research contributions are
solicited, and will be refereed by experts in the respective
disciplines. Authors should submit four copies of a 1000-word
(or less) summary and four copies of a single-page 50-100 word
abstract clearly stating their results by May 30, 1989. Indicate
preference for oral or poster presentation and specify which of
the above five broad categories and, if appropriate, sub-
categories (for example, Learning Theory: Complexity, or
Applications: Speech) best applies to your paper. Indicate
presentation preference and category information at the bottom of
each abstract page and after each summary. Failure to do so will
delay processing of your submission. Mail submissions to Kathy
Hibbard, NIPS89 Local Committee, Engineering Center, Campus Box
425, Boulder, CO, 80309-0425.
DEADLINE FOR SUMMARIES ABSTRACTS IS MAY 30, 1989
∂02-Feb-89 1815 snoeyink@polya.Stanford.EDU Bats Speakers and Abstracts
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 2 Feb 89 18:15:17 PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA03809; Thu, 2 Feb 89 18:13:59 -0800
Date: Thu, 2 Feb 89 18:13:59 -0800
From: Jack Snoeyink <snoeyink@polya.Stanford.EDU>
Message-Id: <8902030213.AA03809@polya.Stanford.EDU>
To: aflb-local@polya.Stanford.EDU
Subject: Bats Speakers and Abstracts
Bats is Friday, Feb 10 at Berkeley.
The schedule is as follows:
10:10 Dorit Hochbaum (Berkeley): The Complexity of Integer Nonlinear
Optimization over Linear Polytopes
11:10 Peter Gacs (Boston University and IBM Almaden Research Center)
Self-correcting and self-organizing cellular arrays
12:10 Ashok Subramanian (Stanford) The Complexity of Circuit
Value and Network Stability
1:10 Seffi Naor (Stabford) Maximum Flow in Networks with Many
Sources and Sinks
---------------------------------------------------------------------
The complexity of integer nonlinear optimization over linear polytopes.
Dorit Hochbaum
University of California, Berkeley
We prove that concave separable objective optimization problems on
linear polytopes with polynomially bounded subdeterminants of the
constraint matrix can be solved in polynomial time. The integer
version of this problem is also solvable in polynomial time in the
same parameters, if the corresponding integer linear problem is
solvable in polynomial time (the algorithm will require a single
call to a routine that solves a linear integer problem on the same
polytope).
An important corollary is that nonlinear integer optimization with
concave (convex) separable objective function over a polytope
defined by a totally unimodular constraint matrix is a polynomial
problem. The running time of the algorithm is polynomial but not
strongly polyomial. It depends on the logarithm of the right hand
side vector in the constraint set. We provide a lower bound proof
to show that this problem cannot be solved in strongly polynomial
time. This is in contrast to the linear integer optimization over
a totally unimodular constraint matrix which is solvable in strongly
polynomial time (Tardos 86).
A special case of this problem is the integer nonlinear resource
allocation problem. We provide a algorithm for this problem which
is best possible for a certain class of such problems in that its
running time is equal to the lower bound on this problem's complexity.
For the quadratic separable case of this problem we describe a
strongly polynomial algorithm.
---------------------------------------------------------------------
Self-correcting and self-organizing cellular arrays
Peter Gacs
Boston University and IBM Almaden Research Center
A computer in the future may be just a large crystal of smart
molecules grown artificially. The components work according to
a probabilistic transition rule in continuous time. All
non-uniformity in structure is created by the machine itself,
responding to the demands of the computation to be carried out. One
can also arrive to the problems of reliability and self-organization
presented by the above requirement starting from an interest in the
origins of life. A soup of chemical ingredients, in a noisy
environment, started organizing itself and became able to carry out
larger and larger computations reliably. No hypotheses will be
stated on how this actually happened in nature, nor practical designs
offered of reliable computing molecules. But an example of a
transition rule will be given that provably satisfies all the
requirements. Its organizational principles are therefore worth
studying both for the design of future reliable computers and for
ideas on understanding biological evolution.
The new construction builds on earlier experience with reliable
cellular automata. Self-organization and continuous time are new, as
well as the primitive concepts allowing a modular design that is
easier to analyze.
---------------------------------------------------------------------------
The Complexity of Circuit Value and Network Stability
Ashok Subramanian
The Circuit Value problem asks for the output of an acyclic network of
boolean gates, given its inputs. The Network Stability problem asks if a
given network, possibly cyclic, of boolean gates has stable configurations.
(A stable configuration of a network is an assignment of truth values to
the edges of the network that respects all the gate equations.) We study
the complexity of these problems as a function of the kinds of gates
allowed in the network. In our model, gates may have many outputs, but no
fanout is allowed outside gates. This model permits the study of the effect
of fanout on the complexity of the above problems. The results: If the
gates do not `preserve adjacency' (in other words, if they can `make
copies' of their inputs), the problems are usually complete for a standard
complexity class like P or NP. But if the gates preserve adjacency, we get
new classes of problems, classes that lie between Logspace and P, but seem
incomparable to the parallel complexity class NC.
We identify an interesting subset of the adjacency-preserving gates, those
that lack `scatter'. Intuitively, a gate lacks scatter if it is never
possible for a small number of inputs to influence a larger number of
outputs. We give a linear time algorithm for the network stability problem
over scatter-free networks, and an O*(sqrt(n)) time algorithm for
scatter-free circuit value.
One of the most fundamental of the new classes is the class CC. Problems
complete for CC include Comparator Circuit Value, Lexicographically-first
Maximal Matching, and problems related to Stable Matching. Our approach to
Stable Matching is to regard it as a network stability problem. This
approach yields fresh insights and new algorithms.
(This work represents work done towards my doctoral dissertation, under the
direction of Ernst Mayr.)
---------------------------------------------------------------------------
Seffi Naor
Stanford University
The problem of maximum flow in planar graphs was always investigated
under the assumption that there is only one source and one sink.
We are going to consider the case where there are many sources and sinks in
a directed planar graph.
An algorithm for the case when the demands of the sources
and sinks are known will be presented which
can be implemented in parallel in $O(\log ↑2n)$ time
using $O(n↑{1.5})$ processors, and in sequential $O(n↑{1.5})$ time.
It uses a novel idea of redirecting
the flow back from the sinks to the sources and then reducing the problem to
that of computing a circulation.
If the demands are not known, we will show how to compute the max flow
in the special case when the sources and sinks are on
the same face.
This result has two applications:
it places the problem of computing a perfect matching in a planar
bipartite graph in NC; it improves a previous parallel
algorithm for the case of a single source, single sink in a planar
directed (and undirected) graph,
both in terms of time complexity and processor bound,
and in its simple presentation.
This is joint work with Gary Miller.
∂02-Feb-89 1826 snoeyink@polya.Stanford.EDU Going to BATS
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 2 Feb 89 18:26:04 PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA04263; Thu, 2 Feb 89 18:24:48 -0800
Date: Thu, 2 Feb 89 18:24:48 -0800
From: Jack Snoeyink <snoeyink@polya.Stanford.EDU>
Message-Id: <8902030224.AA04263@polya.Stanford.EDU>
To: aflb-local@polya.Stanford.EDU
Subject: Going to BATS
In order to get parking permits for drivers and lunches for everyone,
I'd like to know who is going to BATS at Berkeley on Friday the 10th.
If you want to go, please tell me:
if you will be there for lunch,
if you will/can drive, and
what talks you want to attend.
Thanks,
Jack
--------------------------------
DRIVING INSTRUCTIONS TO BATS:
BATS is on Friday, February 10. All talks are in Sibley Auditorium,
located in the Bechtel building just north of Evans Hall on the
Berkeley campus. Lunch is served in 120AB Bechtel one floor below Sibley.
To get to the university from Highway 80, take the University Avenue
exit, and continue until the road ends. Turn left onto Oxford, continue north
to the next light, and turn right on Hearst. Continue on Hearst (which forms
the northern border of campus) until you can make a right turn on Gayley
(eastern border of campus). The first possible right off Gayley leads
into campus at the Mining Circle, near Evans Hall. There is a
kiosk at the entrance at which you can pick up your parking stickers
(mention BATS), and get directions on where to park. My understanding
is that with a parking sticker you have a high probability of finding
a place to park on campus.
To get to the university from Highway 13, Highway 13 from the south
turns naturally into Ashby heading west. Take College Avenue north
(I think it's the second light) to Dwight Way; go east on Dwight
to Piedmont Avenue (where Dwight becomes two-way), and go north on Piedmont.
Piedmont will become Gayley, and you will see the left turn for the East
Gate opposite the Greek Theatre.
To take BART, get off at the Berkeley BART station. Across from the BART
station on the northeast corner of Center and Shattuck you can take the
free Humphrey Go-BART shuttle to the front of Evans Hall, the computer science
building. The Bechtel building is the building just north of Evans.
The walk from the BART station to Bechtel takes 10-15 minutes, gently uphill.
∂02-Feb-89 2125 hoffman@csli.Stanford.EDU This Friday's (the 3rd) Symbolic Systems Forum
Received: from csli.Stanford.EDU by SAIL.Stanford.EDU with TCP; 2 Feb 89 21:25:40 PST
Received: by csli.Stanford.EDU (4.0/inc-1.0)
id AA16173; Thu, 2 Feb 89 21:10:00 PST
Date: Thu 2 Feb 89 21:09:59-PST
From: Reid Hoffman <HOFFMAN@CSLI.Stanford.EDU>
Subject: This Friday's (the 3rd) Symbolic Systems Forum
To: FriendsAtLarge@csli.Stanford.EDU
Message-Id: <602485799.0.HOFFMAN@CSLI.Stanford.EDU>
Mail-System-Version: <SUN-MM(242)+TOPSLIB(128)@CSLI.Stanford.EDU>
This week's Symbolic Systems Forum will be
Structure Yes, Symbols No
a talk by
Professor Jerome A. Feldman
Institute for Cognitive Science,
Berkeley, CA
Abstract:
Computer Science, Artificial Intelligence and many related fields have
followed symbol-processing paradigms almost without exception. Recent
work has suggested alternative views of intelligent activity based on
connectionist (or PDP or `neural') networks. This talk will discuss a
``Structured" connectionist approach which attempts to capture the
best features of symbollic and neural-style computation. After some
preliminaries, the talk will focus on a connectionist model of visual
recognition which is claimed to be (the only model) consistent with
the relevant biological, behavioral and computational findings.
Finally, we will try to indicate what this model suggests about how
intelligence as realized is animals and artifacts.
Time: Friday, Feb. 3rd, 3:15
Place: Building 60, Room 60-61G
The talk will be open to the general public. To join the mailing list,
send mail to hoffman@csli
-------
∂02-Feb-89 2345 LOGMTC-mailer Seminar in Logic
Received: from csli.Stanford.EDU by SAIL.Stanford.EDU with TCP; 2 Feb 89 23:45:06 PST
Received: by csli.Stanford.EDU (4.0/inc-1.0)
id AA18555; Thu, 2 Feb 89 23:43:21 PST
Date: Thu 2 Feb 89 23:43:20-PST
From: Sol Feferman <SF@CSLI.Stanford.EDU>
Subject: Seminar in Logic
To: Logic@csli.Stanford.EDU
Message-Id: <602495000.0.SF@CSLI.Stanford.EDU>
Mail-System-Version: <SUN-MM(242)+TOPSLIB(128)@CSLI.Stanford.EDU>
Speaker: Prof. Michael Beeson, Mathematics, San Jose State University
Title: Applications of Gentzen's proof theory to automated deduction.
Time: Tuesday, Feb. 7, 4:15-5:30 PM
Place: Room 381-T, Math Corner, Stanford
Abstract: An algorithm for (attempting to) construct a proof of a
given theorem from given axioms will be explained. The algorithm
constructs a proof in a Gentzen sequent calculus. When restricted to
Horn clauses, it coincides with Prolog's algorithm. Completeness of
the algorithm can be proved using Gentzen's cut-elimination and a
"permutation lemma" of Kleene. Examples will be given of the practical
efficiency of the algorithm on some non-Prolog examples.
* * * *
The following week, Prof. I. Katznelson will begin the first of two
talks, on Monday Feb.13, same time, but in Room 383-N (3d floor lounge).
The second of his talks will be on Tuesday FEb. 21, usual time and place.
S. Feferman
-------
∂03-Feb-89 0824 @Score.Stanford.EDU:chandler@polya.Stanford.EDU Next Tuesday's Faculty Lunch
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 3 Feb 89 08:23:54 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Fri 3 Feb 89 08:20:45-PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA23029; Fri, 3 Feb 89 08:21:49 -0800
Date: Fri, 3 Feb 1989 8:21:47 PST
Sender: "Joyce R. Chandler" <chandler@polya.stanford.edu>
From: "Joyce R. Chandler" <chandler@polya.stanford.edu>
To: faculty@score, bureaucrats@score, staff-rep@score
Cc: RS.AJB@forsythe, CR.RLB@forsythe, HK.PLD@forsythe, LEVINTHAL@sierra
Subject: Next Tuesday's Faculty Lunch
Message-Id: <CMM.0.87.602526107.chandler@polya.stanford.edu>
Our guests at next Tuesday's faculty lunch (2/7 at 12:15 in Margaret Jacks
Hall conference room 146) will be Art Bienenstock, Bob Byer, Pat Devaney and
Elliot Levinthal. The topic of discussion will be the proposal to tax gifts.
Don't forget to mark your calendars!
P.S. to our guests: Our faculty lunches are very informal.....sandwiches,
salads and beverages are provided.
∂03-Feb-89 0840 HEMENWAY@Score.Stanford.EDU Round 1
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 3 Feb 89 08:40:43 PST
Date: Fri 3 Feb 89 08:37:52-PST
From: Sharon Hemenway <HEMENWAY@Score.Stanford.EDU>
Subject: Round 1
To: phd-adm@Score.Stanford.EDU
Message-ID: <12467750295.19.HEMENWAY@Score.Stanford.EDU>
To reiterate what we discussed at yesterday's meeting, the schedule
of readings for Round 1 follows:
Available (after 4:00) Due (by 10:00)
_______________________ _________________
Batch 1 Friday, Feb. 3 Monday, Feb. 6
Batch 2 Monday, Feb. 6 Thursday, Feb. 9
Batch 3 Thursday, Feb. 9 Monday, Feb. 13
Batch 4 Monday, Feb. 13 Thursday, Feb. 16
I will put a box outside of my office door where you may either pick
up or drop off your folders, if outside of normal office hours.
One thing we did not mention at yesterday's meeting is the actual
range of ratings. You may assign any value between 1 and 5, to two
decimal places. For those of you who missed the beginning of the
meeting, I repeat my suggestion that writing comments (to yourself)
on the rating sheets can be very helpful at the Round 1 and Round 2
meetings where we will hand back your rating sheets.
Please, if you notice any errors on the rating sheets (incorrect
GPA, GRE scores, school, etc.) let us know and we will correct it
for the next round.
Many thanks for your help.
Sharon
-------
∂03-Feb-89 0907 @Score.Stanford.EDU:nilsson@Tenaya.stanford.edu [jadams@note.nsf.gov: Educational Supplements to CISE-Research Grants]
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 3 Feb 89 09:06:57 PST
Received: from Tenaya.stanford.edu by SCORE.STANFORD.EDU with TCP; Fri 3 Feb 89 08:54:22-PST
Received: by Tenaya.stanford.edu (5.59/25-eef) id AA05910; Fri, 3 Feb 89 08:53:59 PDT
Date: Fri, 3 Feb 89 08:53:59 PDT
From: Nils Nilsson <nilsson@Tenaya.stanford.edu>
Message-Id: <8902031653.AA05910@Tenaya.stanford.edu>
To: faculty@score
Subject: [jadams@note.nsf.gov: Educational Supplements to CISE-Research Grants]
fyi:
-----
Return-Path: <@Tenaya.stanford.edu,@Score.Stanford.EDU:jadams@note.nsf.gov>
To: cise.news@note.nsf.gov
Cc: hhedges@note.nsf.gov, bbarnes@note.nsf.gov
Subject: Educational Supplements to CISE-Research Grants
Date: Fri, 03 Feb 89 10:00:24 -0500
From: "J. Mack Adams" <jadams@note.nsf.gov>
Dear Colleague:
As part of an expanding effort to encourage innovation and
significant new efforts in undergraduate education, the Computer
and Information Science and Engineering (CISE) Directorate
announces the availability in FY 1989 (this fiscal year) of
Educational Supplements to CISE.Research grants. A major goal of
this experimental program is to establish closer links between
CISE.supported research and undergraduate education and assist in
accelerating the transfer of research results into the
classrooms.
Guidelines for this Educational Supplement program are as follows:
1. Eligible Proposers: Any Principal or Co.Principal Investigator
on an active NSF award from a program in the CISE Directorate.
2. Kinds of Projects: Proposal Supplements for innovative and
creative educational activities are solicited. Research
experiences are excluded. Examples of projects might include:
special interactive software for student use to provide insight
about the goals and results of the research project, graphic
visualizations of significant research results, research
implementations of leading-edge technology, use of electronic
networks in education, etc. Please note, these are only possible
examples. Your creativity is encouraged!
3. Size and Duration of Awards: Supplements will range from
$4,000 to $20,000 and the basic award can be extended, if
necessary and appropriate.
4. Cost Sharing: Since these projects are closely related to
the educational activities of the institution, significant cost
sharing by the grantee is expected.
5. Procedures for Application: Submit, through your Research
Administration Office, a request, with budget, for a supplement
to an existing research award. The request should be in the
form of a two to four page document describing what is proposed
to be done, how it relates to the research portion of the award,
what significance it will have, if funded, and ideas for
making the results available elsewhere.
6. Action at the NSF: The proposals will be reviewed promptly and
announcement of awards are expected to be made within six weeks
of submission.
If you have any questions concerning these educational
supplements, please contact the Program Director for your award.
Sincerely,
William A. Wulf
Assistant Director
∂03-Feb-89 1130 HEMENWAY@Score.Stanford.EDU GRE Analytical Scores
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 3 Feb 89 11:30:22 PST
Date: Fri 3 Feb 89 11:28:02-PST
From: Sharon Hemenway <HEMENWAY@Score.Stanford.EDU>
Subject: GRE Analytical Scores
To: phd-adm@Score.Stanford.EDU
Message-ID: <12467781275.19.HEMENWAY@Score.Stanford.EDU>
I have just noticed that, contrary to my expectations, the scores from
the GRE Analytical section did NOT print out on the rating sheets for
Batch 1. I apologize for this and will have it corrected for the
Batch 2 rating sheets. Meanwhile, you can find each person's full
GRE scores stapled to the front inside of the folder.
Sharon
-------
∂03-Feb-89 2333 X3J13-mailer Issue: DECLARE-ARRAY-TYPE-ELEMENT-REFERENCES (Version 3)
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 3 Feb 89 23:33:32 PST
Received: from Semillon.ms by ArpaGateway.ms ; 03 FEB 89 23:31:31 PST
Date: 3 Feb 89 23:31 PST
From: masinter.pa@Xerox.COM
To: X3J13@sail.stanford.edu
Subject: Issue: DECLARE-ARRAY-TYPE-ELEMENT-REFERENCES (Version 3)
Line-fold: NO
Message-ID: <890203-233131-2862@Xerox>
This proposal was distributed and passed at the January X3J13 meeting.
Since it had not been emailed before, I am doing so now.
!
Status: Passed, Jan 89 X3J13
Issue: DECLARE-ARRAY-TYPE-ELEMENT-REFERENCES
References: Array type specifiers, pp. 45-46
Related issues: ARRAY-TYPE-ELEMENT-TYPE-SEMANTICS, DECLARE-TYPE-FREE,
SYMBOL-MACROLET-DECLARE
Category: CHANGE
Edit history: Version 1, 7-Oct-88, Pierson
Version 2, 13-Jan-89, Pierson (Moon and JonL comments)
Version 3, 13-Jan-89, Pierson (Pitman comments)
Problem description:
In principle, array type specifiers could be used both for declaring
the storage format of the array and for implicitly declaring the types
of the elements held by those arrays. Unfortunately, the current
definition of the meaning of array type specifiers does not explicitly
specify that the latter use of these declarations is legitimate.
Proposal (DECLARE-ARRAY-TYPE-ELEMENT-REFERENCES:RESTRICTIVE):
Within the lexical scope of an array type declaration, all references
to array elements are assumed to satisfy the exact declared element
type. It is an error if this is ever violated. A compiler may treat
the code within the scope of the array type declaration as if each
access of an array element was surrounded by an appropriate THE form.
Examples:
(DEFVAR *ONE-ARRAY* (MAKE-ARRAY 10 :ELEMENT-TYPE '(SIGNED-BYTE 5)))
(DEFVAR *ANOTHER-ARRAY* (MAKE-ARRAY 10 :ELEMENT-TYPE '(SIGNED-BYTE 8)))
(DEFUN FROB (AN-ARRAY)
(DECLARE (TYPE (ARRAY (SIGNED-BYTE 5) 1) AN-ARRAY))
(SETF (AREF AN-ARRAY 1) 31) ; OK
(SETF (AREF AN-ARRAY 2) 127) ; Should signal an error
(SETF (AREF AN-ARRAY 3) (* 2 (AREF AN-ARRAY 3))) ; Run-time decision needed
(LET ((FOO 0))
(DECLARE (TYPE (SIGNED-BYTE 5) FOO))
(SETF FOO (AREF AN-ARRAY 0)))) ; Declared to be safe
(FROB *ONE-ARRAY*) ; Legal call, should signal an error
(FROM *ANOTHER-ARRAY*) ; Is probably an undetectable error
Note that the above definition of FROB is equivalent to:
(DEFUN FROB (AN-ARRAY)
(DECLARE (TYPE (ARRAY (SIGNED-BYTE 5) 1) AN-ARRAY))
(SETF (THE (SIGNED-BYTE 5) (AREF AN-ARRAY 1) 31))
(SETF (THE (SIGNED-BYTE 5) (AREF AN-ARRAY 2) 127))
(SETF (THE (SIGNED-BYTE 5) (AREF AN-ARRAY 3))
(* 2 (THE (SIGNED-BYTE 5) (AREF AN-ARRAY 3))))
(LET ((FOO 0))
(DECLARE (TYPE (SIGNED-BYTE 5) FOO))
(SETF FOO (THE (SIGNED-BYTE 5) (AREF AN-ARRAY 0)))))
Given an implementation in which fixnums are 29 bits but fixnum arrays
are upgraded to signed 32-bit arrays, the following should be compiled
with all fixnum arithmetic:
(DEFUN BUMP-COUNTERS (COUNTERS)
(DECLARE (TYPE (ARRAY FIXNUM *) BUMP-COUNTERS))
(DOTIMES (I (LENGTH COUNTERS))
(INCF (AREF COUNTERS I))))
Test Cases:
TBS
Rationale:
This mandates a useful and commonly expected behavior. It complements
proposal ARRAY-TYPE-ELEMENT-TYPE-SEMANTICS, which deals with array
type specifiers as they refer to arrays as a whole.
This proposal is consistent with SYMBOL-MACROLET-DECLARE:ALLOW and
DECLARATION-SCOPE:LEXICAL.
Current practice:
???
Cost to Implementors:
TBS
Cost to Users:
Probably none; while this is technically a change, code that declares
an array to contain one thing and depends on it containing something
else is blatantly buggy.
Cost of non-adoption:
Users will continue to expect declaration syntax to be more useful
than it really is.
Performance impact:
None.
Benefits:
Array type declarations will behave in a more useful and intuitive way.
Aesthetics:
Improved because the meaning of type declarations will coincide more
clearly with their appearance.
Discussion:
Pierson and Pitman support this proposal.
∂05-Feb-89 1020 X3J13-mailer Fairfax and Hotel badness
Received: from NSS.Cs.Ucl.AC.UK by SAIL.Stanford.EDU with TCP; 5 Feb 89 10:20:11 PST
Received: from aiai.edinburgh.ac.uk by NSS.Cs.Ucl.AC.UK via Janet with NIFTP
id aa02852; 5 Feb 89 15:45 GMT
Date: Sun, 5 Feb 89 16:02:41 GMT
Message-Id: <13804.8902051602@subnode.aiai.ed.ac.uk>
From: Jeff Dalton <jeff%aiai.edinburgh.ac.uk@NSS.Cs.Ucl.AC.UK>
Subject: Fairfax and Hotel badness
To: Jan Zubkoff <@sail.stanford.edu:jlz@lucid.com>, x3j13@sail.stanford.edu
In-Reply-To: Jan Zubkoff's message of Wed, 1 Feb 89 13:42:36 PST
> Please let me know ASAP if you are planning to attend and whether you'll be
> staying at the Marriott. On Monday I have to confirm the number rooms we
> need.
I am planning to attend (both X3J13 and ISO) and to stay at the Marriott.
However, some people were saying that some hotel used for the last
Farifax meeting had been undesirable. Was that the Marriott, or was
the Marriott OK?
Is there any way to get around this area without a car?
∂05-Feb-89 1104 @Score.Stanford.EDU:nilsson@Tenaya.stanford.edu [fuller@sierra.STANFORD.EDU: Grants of HP equipment]
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 5 Feb 89 11:04:06 PST
Received: from Tenaya.stanford.edu by SCORE.STANFORD.EDU with TCP; Sun 5 Feb 89 11:00:13-PST
Received: by Tenaya.stanford.edu (5.59/25-eef) id AA07298; Sun, 5 Feb 89 10:59:44 PDT
Date: Sun, 5 Feb 89 10:59:44 PDT
From: Nils Nilsson <nilsson@Tenaya.stanford.edu>
Message-Id: <8902051859.AA07298@Tenaya.stanford.edu>
To: faculty@score
Subject: [fuller@sierra.STANFORD.EDU: Grants of HP equipment]
fyi:
----
Return-Path: <@Tenaya.stanford.edu:fuller@sierra.STANFORD.EDU>
From: fuller@sierra.STANFORD.EDU (Dwain N. Fullerton)
Date: Tue, 31 Jan 1989 17:53:07 PST
To: Goodman@sierra.STANFORD.EDU, Nilsson@tenaya, hughes@sierra.STANFORD.EDU,
hagstrom@sierra.STANFORD.EDU
Cc: ct.hpo@forsythe, ct.jfk@forsythe, ct.ljl@forsythe,
fuller@sierra.STANFORD.EDU, allen_edwards%hp0400@hplabs.hp.com
Subject: Grants of HP equipment
Gents,
At lunch today Allen Edwards, HP's R&D Section Manager at the Stanford
Park Division, asked if there were some ideas for uses for HP instruments
and equipment under the company's special grants category. This means that
in general the equipnment should have a reasonably high visibility and be
used by as many individuals or affect as many individuals as possible. A
student lab, curriculum development, uses generally in that direction would
be possible. Note that the uses don't have to be exclusively for these
purposes, as long as there is some element in the ultimate use. If you have
some ideas, Edwards would be glad to offer advice and help with the proposal,
as he did with Dan Weise and a grant of Bobcat workstations. If you'd like
to get in touch with Edwards directly, his em address is
allen_edwards%hp0400@hplabs.hp.com
Note that if you send him an em, be sure to include your complete
return address in the text of the message, because HP's internal system strips
off the headers.
Best,
Dwain (fuller@sierra.stanford.edu)
∂05-Feb-89 2223 hoffman@csli.Stanford.EDU The Symbolic Systems Forum, Feb. 10th
Received: from csli.Stanford.EDU by SAIL.Stanford.EDU with TCP; 5 Feb 89 22:23:51 PST
Received: by csli.Stanford.EDU (4.0/inc-1.0)
id AA17548; Sun, 5 Feb 89 22:17:10 PST
Date: Sun 5 Feb 89 22:17:09-PST
From: Reid Hoffman <HOFFMAN@CSLI.Stanford.EDU>
Subject: The Symbolic Systems Forum, Feb. 10th
To: GeneralForumAnnouncement@csli.Stanford.EDU
Message-Id: <602749029.0.HOFFMAN@CSLI.Stanford.EDU>
Mail-System-Version: <SUN-MM(242)+TOPSLIB(128)@CSLI.Stanford.EDU>
The Symbolic Systems Forum presents
Professor Bernardo Huberman
Dynamics of Computation Group, Xerox PARC
Stanford Physics
on
The Ecology of Computation
Abstract:
A most advanced instance of concurrent computation is provided by
distributed processing in open systems which have no global controls. These
emerging heterogeneous networks are becoming self-regulating entities which
in their behavior are very different from their individual components.
Their ability to remotely spawn processes in other computers and servers of
the system offers the possibility of having a community of computational
agents which, in their interactions, are reminiscent of biological and
social organizations.
This talk will give a perspective on computational ecologies, and describe
a theory of their behavior which explicitly takes into account incomplete
knowledge and delayed information on the part of its agents. When processes
can choose among many possible strategies while collaborating in the
solution of computational tasks, the dynamics leads to asymptotic regimes
characterized by fixed points, oscillations and chaos. We will also
describe Spawn, an ongoing project which utilizes idle computational
resources in a distributed network of high-performance workstations.
Finally, we will discuss the possible existence of a universal law
regulating the way in which the benefit of cooperation is manifested in the
system.
The time: 3:15
The date: Feb. 10th
The place: room 61g, building 60
The talk is open to the general public. Refreshments will be served.
-------
∂06-Feb-89 0008 misha@polya.Stanford.EDU Next AFLB
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 6 Feb 89 00:07:58 PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA07449; Mon, 6 Feb 89 00:04:52 -0800
Date: Mon, 6 Feb 89 00:04:52 -0800
From: Michael Kharitonov <misha@polya.Stanford.EDU>
Message-Id: <8902060804.AA07449@polya.Stanford.EDU>
To: aflb-all@polya.Stanford.EDU
Subject: Next AFLB
The next AFLB will be on Tuesday, Feb 7, at 4:15 in room 352.
Dr. A. Razborov from the Steklov Institute in Moscow will
speak.
ON THE METHOD OF APPROXIMATIONS
The talk will be devoted to a recent paper of the speaker
submitted to the STOC conference. In this paper the question
as to how the method of approximations could be useful for obtaining
lower bounds of the circuit size of Boolean functions is formalized
and studied.
----------------------------------------------------------------------
Dr. Razborov will also give a survey talk on circuit complexity
at the special session of cs366 (Lower Bounds) on Monday at 3:15.
∂06-Feb-89 0921 @Score.Stanford.EDU:chandler@polya.Stanford.EDU Tomorrow's Faculty Lunch
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 6 Feb 89 09:21:12 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Mon 6 Feb 89 09:17:40-PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA15256; Mon, 6 Feb 89 09:18:23 -0800
Date: Mon, 6 Feb 1989 9:18:10 PST
From: "Joyce R. Chandler" <chandler@polya.stanford.edu>
To: faculty@score, bureaucrats@score, staff-rep@score
Subject: Tomorrow's Faculty Lunch
Message-Id: <CMM.0.87.602788690.chandler@polya.stanford.edu>
The discussion - Proposal to tax gifts
The time - 12:15 2/7
The place - MJH-146
See you there!
∂06-Feb-89 1854 snoeyink@polya.Stanford.EDU Bats Speakers and Abstracts
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 6 Feb 89 18:54:49 PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA03809; Thu, 2 Feb 89 18:13:59 -0800
Date: Thu, 2 Feb 89 18:13:59 -0800
From: Jack Snoeyink <snoeyink@polya.Stanford.EDU>
Message-Id: <8902030213.AA03809@polya.Stanford.EDU>
To: aflb-local@polya.Stanford.EDU
Subject: Bats Speakers and Abstracts
Bats is Friday, Feb 10 at Berkeley.
The schedule is as follows:
10:10 Dorit Hochbaum (Berkeley): The Complexity of Integer Nonlinear
Optimization over Linear Polytopes
11:10 Peter Gacs (Boston University and IBM Almaden Research Center)
Self-correcting and self-organizing cellular arrays
12:10 Ashok Subramanian (Stanford) The Complexity of Circuit
Value and Network Stability
1:10 Seffi Naor (Stabford) Maximum Flow in Networks with Many
Sources and Sinks
---------------------------------------------------------------------
The complexity of integer nonlinear optimization over linear polytopes.
Dorit Hochbaum
University of California, Berkeley
We prove that concave separable objective optimization problems on
linear polytopes with polynomially bounded subdeterminants of the
constraint matrix can be solved in polynomial time. The integer
version of this problem is also solvable in polynomial time in the
same parameters, if the corresponding integer linear problem is
solvable in polynomial time (the algorithm will require a single
call to a routine that solves a linear integer problem on the same
polytope).
An important corollary is that nonlinear integer optimization with
concave (convex) separable objective function over a polytope
defined by a totally unimodular constraint matrix is a polynomial
problem. The running time of the algorithm is polynomial but not
strongly polyomial. It depends on the logarithm of the right hand
side vector in the constraint set. We provide a lower bound proof
to show that this problem cannot be solved in strongly polynomial
time. This is in contrast to the linear integer optimization over
a totally unimodular constraint matrix which is solvable in strongly
polynomial time (Tardos 86).
A special case of this problem is the integer nonlinear resource
allocation problem. We provide a algorithm for this problem which
is best possible for a certain class of such problems in that its
running time is equal to the lower bound on this problem's complexity.
For the quadratic separable case of this problem we describe a
strongly polynomial algorithm.
---------------------------------------------------------------------
Self-correcting and self-organizing cellular arrays
Peter Gacs
Boston University and IBM Almaden Research Center
A computer in the future may be just a large crystal of smart
molecules grown artificially. The components work according to
a probabilistic transition rule in continuous time. All
non-uniformity in structure is created by the machine itself,
responding to the demands of the computation to be carried out. One
can also arrive to the problems of reliability and self-organization
presented by the above requirement starting from an interest in the
origins of life. A soup of chemical ingredients, in a noisy
environment, started organizing itself and became able to carry out
larger and larger computations reliably. No hypotheses will be
stated on how this actually happened in nature, nor practical designs
offered of reliable computing molecules. But an example of a
transition rule will be given that provably satisfies all the
requirements. Its organizational principles are therefore worth
studying both for the design of future reliable computers and for
ideas on understanding biological evolution.
The new construction builds on earlier experience with reliable
cellular automata. Self-organization and continuous time are new, as
well as the primitive concepts allowing a modular design that is
easier to analyze.
---------------------------------------------------------------------------
The Complexity of Circuit Value and Network Stability
Ashok Subramanian
The Circuit Value problem asks for the output of an acyclic network of
boolean gates, given its inputs. The Network Stability problem asks if a
given network, possibly cyclic, of boolean gates has stable configurations.
(A stable configuration of a network is an assignment of truth values to
the edges of the network that respects all the gate equations.) We study
the complexity of these problems as a function of the kinds of gates
allowed in the network. In our model, gates may have many outputs, but no
fanout is allowed outside gates. This model permits the study of the effect
of fanout on the complexity of the above problems. The results: If the
gates do not `preserve adjacency' (in other words, if they can `make
copies' of their inputs), the problems are usually complete for a standard
complexity class like P or NP. But if the gates preserve adjacency, we get
new classes of problems, classes that lie between Logspace and P, but seem
incomparable to the parallel complexity class NC.
We identify an interesting subset of the adjacency-preserving gates, those
that lack `scatter'. Intuitively, a gate lacks scatter if it is never
possible for a small number of inputs to influence a larger number of
outputs. We give a linear time algorithm for the network stability problem
over scatter-free networks, and an O*(sqrt(n)) time algorithm for
scatter-free circuit value.
One of the most fundamental of the new classes is the class CC. Problems
complete for CC include Comparator Circuit Value, Lexicographically-first
Maximal Matching, and problems related to Stable Matching. Our approach to
Stable Matching is to regard it as a network stability problem. This
approach yields fresh insights and new algorithms.
(This work represents work done towards my doctoral dissertation, under the
direction of Ernst Mayr.)
---------------------------------------------------------------------------
Seffi Naor
Stanford University
The problem of maximum flow in planar graphs was always investigated
under the assumption that there is only one source and one sink.
We are going to consider the case where there are many sources and sinks in
a directed planar graph.
An algorithm for the case when the demands of the sources
and sinks are known will be presented which
can be implemented in parallel in $O(\log ↑2n)$ time
using $O(n↑{1.5})$ processors, and in sequential $O(n↑{1.5})$ time.
It uses a novel idea of redirecting
the flow back from the sinks to the sources and then reducing the problem to
that of computing a circulation.
If the demands are not known, we will show how to compute the max flow
in the special case when the sources and sinks are on
the same face.
This result has two applications:
it places the problem of computing a perfect matching in a planar
bipartite graph in NC; it improves a previous parallel
algorithm for the case of a single source, single sink in a planar
directed (and undirected) graph,
both in terms of time complexity and processor bound,
and in its simple presentation.
This is joint work with Gary Miller.
∂06-Feb-89 1926 LOGMTC-mailer Seminar cancellation
Received: from csli.Stanford.EDU by SAIL.Stanford.EDU with TCP; 6 Feb 89 19:26:10 PST
Received: by csli.Stanford.EDU (4.0/inc-1.0)
id AA13897; Mon, 6 Feb 89 19:24:21 PST
Date: Mon 6 Feb 89 19:24:21-PST
From: Sol Feferman <SF@CSLI.Stanford.EDU>
Subject: Seminar cancellation
To: Logic@csli.Stanford.EDU
Message-Id: <602825061.0.SF@CSLI.Stanford.EDU>
Mail-System-Version: <SUN-MM(242)+TOPSLIB(128)@CSLI.Stanford.EDU>
The seminar by Michael Beeson scheduled for tomorrow, Feb.7, has to bve
cancelled due to speaker's flu. We shall try to reschedule it.
-------
∂06-Feb-89 2000 misha@polya.Stanford.EDU Next AFLB
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 6 Feb 89 19:59:56 PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA07449; Mon, 6 Feb 89 00:04:52 -0800
Date: Mon, 6 Feb 89 00:04:52 -0800
From: Michael Kharitonov <misha@polya.Stanford.EDU>
Message-Id: <8902060804.AA07449@polya.Stanford.EDU>
To: aflb-all@polya.Stanford.EDU
Subject: Next AFLB
The next AFLB will be on Tuesday, Feb 7, at 4:15 in room 352.
Dr. A. Razborov from the Steklov Institute in Moscow will
speak.
ON THE METHOD OF APPROXIMATIONS
The talk will be devoted to a recent paper of the speaker
submitted to the STOC conference. In this paper the question
as to how the method of approximations could be useful for obtaining
lower bounds of the circuit size of Boolean functions is formalized
and studied.
----------------------------------------------------------------------
Dr. Razborov will also give a survey talk on circuit complexity
at the special session of cs366 (Lower Bounds) on Monday at 3:15.
∂07-Feb-89 1041 debra@russell.Stanford.EDU REMINDER-Evening Seminar
Received: from russell.Stanford.EDU by SAIL.Stanford.EDU with TCP; 7 Feb 89 10:41:32 PST
Received: from localhost by russell.Stanford.EDU (4.0/inc-1.0)
id AA19001; Tue, 7 Feb 89 10:42:31 PST
Message-Id: <8902071842.AA19001@russell.Stanford.EDU>
To: evesem@russell.Stanford.EDU
Cc: debra@russell.Stanford.EDU, kuder@russell.Stanford.EDU
Subject: REMINDER-Evening Seminar
Date: Tue, 07 Feb 89 10:42:28 PST
From: Debra Alty <debra@russell.Stanford.EDU>
REMINDER
The next EVENING SEMINAR will be Wednesday, February 8th @ 7:30 pm in
the CSLI Cordura Conference Room.
Professor Herb Clark, Psychology Department, will be leading the
discussion.
The following will be served:
Italian Cheese Ball Cognac
Vegetable platter Wine
w/dip Beer
Crackers Sparkling Waters
Chocolates Coffee
Tea
Debra
∂07-Feb-89 1329 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Interval splitting problem
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 7 Feb 89 13:29:37 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA10992; Tue, 7 Feb 89 13:24:51 -0800
Message-Id: <8902072124.AA10992@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Tue, 7 Feb 89 12:45:15 PST
Received: by BYUADMIN (Mailer R2.01A) id 0379; Mon, 06 Feb 89 22:23:19 MST
Date: Mon, 6 Feb 89 12:41:28 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Jon Turner <jst@JUSTIN.WUSTL.EDU>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Jon Turner <jst@JUSTIN.WUSTL.EDU>
Subject: Interval splitting problem
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
I'm looking for information on the following problem.
Given two intervals [a1,b1] and [a2,b2] we say that the first contains
the second if a1<a2 and b1>b2, that is we have strict containment on
both sides.
An interval [a,b] can be split into two intervals [a,c] and [c,b]
where a<c<b.
We say a set is proper if no interval in the set contains any other.
Now here is the problem. Given a set S of intervals, we want to construct
the smallest proper set S' that can be obtained from S by splitting intervals.
What if anything is known about the complexity of this problem?
Is anyone familiar with similar problems that might be useful
in helping establish its complexity?
Any help will be appreciated.
Jon Turner
jst@wucs1.wustl.edu
∂07-Feb-89 1355 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu A WORKSHOP ON CELLULAR AUTOMATA
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 7 Feb 89 13:55:30 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA12881; Tue, 7 Feb 89 13:50:41 -0800
Message-Id: <8902072150.AA12881@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Tue, 7 Feb 89 13:16:28 PST
Received: by BYUADMIN (Mailer R2.01A) id 5894; Mon, 06 Feb 89 14:04:57 MST
Date: Mon, 6 Feb 89 09:59:50 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
617 Gerard Vichniac 253-5893 <gerard@BBN.COM>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: 617 Gerard Vichniac 253-5893 <gerard@BBN.COM>
Subject: A WORKSHOP ON CELLULAR AUTOMATA
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
A workshop on:
************************************************************
Cellular Automata and Modeling of Complex Physical Systems
************************************************************
will be held in les Houches, near Chamonix, France, from February 21 to
March 2, 1989.
The organizers are Roger Bidaux (Saclay), Paul Manneville (Saclay), Yves
Pomeau (Ecole Normale, Paris), and Gerard Vichniac (MIT).
The topics will include:
- - automata and discrete dynamical systems,
- - lattice-gas automata for fluid dynamics,
- - applications to solid-state physics (in particular, models of growth
and pattern formation),
- - parallel computation in statistical mechanics (in particular, in the
Ising model),
- - dedicated cellular-automata machines.
Workshops at les Houches are traditionally informal, there will be about
five talks a day, and ample time will be left for discussion.
A fee of 3700 FF includes full board lodging at the Physics Center in les
Houches.
Contact:
Paul Manneville, Roger Bidaux or Gerard Vichniac
Bitnet: MANNEV @ FRSAC11 Internet: gerard@bbn.com
tel.: 33 - 1 69 08 75 35 tel.: (617) 253 5893 (MIT)
fax: 33 - 1 69 08 81 20
telex: 604641 ENERG F
BITNET: MANNEV @ FRSAC11
∂07-Feb-89 1405 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Feasible Mathematics Workshop -- Announcement
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 7 Feb 89 14:05:21 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA13721; Tue, 7 Feb 89 14:00:50 -0800
Message-Id: <8902072200.AA13721@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Tue, 7 Feb 89 13:24:15 PST
Received: by BYUADMIN (Mailer R2.01A) id 8635; Tue, 07 Feb 89 11:50:01 MST
Date: Tue, 7 Feb 89 11:38:41 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Sam Buss <sbuss@UCSD.EDU>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Sam Buss <sbuss@UCSD.EDU>
Subject: Feasible Mathematics Workshop -- Announcement
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
FEASIBLE MATHEMATICS WORKSHOP
Analyzing complexity of algorithms is both a practical
problem and a major area of theoretical research for computer
scientists, logicians, and mathematicians. Since the 1960's,
there has been an increasingly sophisticated classification
of algorithms into natural classes (e.g. P, NP, P-Space, Exp-time,
etc.) leading to a deeper understanding of the limits of feasible
computation.
More recently, researchers have begun investigating the logical
and mathematical consequences of "resource-bounded" (e.g. polynomial
time) mathematics. Active areas include: polynomial-time logics,
bounded versions of arithmetic and lambda calculus, proof theory
of feasible systems, feasible polymorphic languages, and polynomial
time versions of algebra and analysis. Such "feasible" mathematics
typically mixes logical techniques from proof theory and finite model
theory, as well as complexity and recursion theory, combinatorics,
and traditional mathematics.
There will be a Workshop from June 26-28, 1989 to be held at
Cornell University, under the auspices of MSI (Anil Nerode, Director),
entitled "Feasible Mathematics".
This workshop will gather together researchers from various
disciplines to discuss the state of the art in this area.
Researchers who are currently scheduled to speak include: M. Ajtai,
S. Buss, P. Clote, J. Crossley, S. Cook, J-Y.Girard, Y. Gurevich,
K-I Ko, D. Leivant, A. Nerode, J. Remmel, A. Scedrov, P. Scott,
G. Takeuti, and A. Urquhart.
The Organizers of the conference are:
Sam Buss Philip J. Scott
Dept. of Math Dept. of Math.
U.C.S.D University of Ottawa
La Jolla, CA 92093 Ottawa, Ont. Canada K1N 6N5
e-mail: sbuss@ucsd.edu e-mail: scpsg@uottawa.bitnet
For further information, contact the organizers or
for local information, contact Wil Kone (NVHY@Cornellc).
∂07-Feb-89 1428 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Re: Sorting on NxN Mesh.
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 7 Feb 89 14:27:50 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA15380; Tue, 7 Feb 89 14:23:25 -0800
Message-Id: <8902072223.AA15380@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Tue, 7 Feb 89 13:37:23 PST
Received: by BYUADMIN (Mailer R2.01A) id 1248; Mon, 06 Feb 89 22:27:25 MST
Date: Mon, 6 Feb 89 12:43:27 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Sandeep Sen <ss@CS.DUKE.EDU>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Sandeep Sen <ss@CS.DUKE.EDU>
Subject: Re: Sorting on NxN Mesh.
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
In article <8901242125.AA29314@jade.berkeley.edu> you write:
>I would appreciate any suggestions, references or solutions for the following
>problem:
> We have a SIMD, 4-connected, NxN Mesh Connected Computer (MCC) and
> the following
> algorithm for sorting on it. The algorithm is an extension of the
> so called "odd-even transposition sorting" (OETS) algorithm for a
....
> couple each processor first with its upper neighbour, then with its
> lower, its left and finally irs right neighbour and perform a compare-
> and-then-possibly-swap operation. More precisely in time T the NxN
> grid G={(i,j): i, j in P /* i for rows */} is partitioned in
> { <(2i-1,j), (2i, j)> for all i, j } when T mod 4 = 0
> { <(2i,j), (2i+1,j)> for all i, j} when T mod 4 = 1
> { <(i,2j-1), (i,2j)> for all i, j} when T mod 4 = 2 and
> { <(i,2j), (i,2j+1)> for all i, j} when T mod 4 = 3,
> and all these pairs of processors compare their contents and possibly
> swap them.
> It is obvious again that it is a sorting algorithm but what is its
> time complexity? Is it linear ? is the question. I suspect it is not,
> because if it were no other sorting alg. for the NxN mesh should have
> been invented; this seems far simpler than any other I have seen.
> But I do not have a bad example for this alg. Do you?
>Thanks in advance
>
>Michalis Kolountzakis,
>Mathematics Dept, Univ. of Crete, Greece
>
You are right - this algorithm is not linear (in fact it is quadratic).
The bad example is partition the array vertically into two halves - fill
0's on the left and 1's on the right. I do not have a formal proof of this
- I had run some simulations which made it clear that it is quadratic. I
did come up with some informal arguments which I wouldn't bother to describe
now. Since this is for a fixed input and the data movements are very
regular you can convince yourself by working on a few examples.
What works much better (but still not linear O(nlogn)) and is again very
simple is a row-column sort. You can look it up in a paper in the
Proc. of the Internaional Conference on Parallel Processing 1986
entitled "Shear-sort - a true 2-D sorting network ..." by Scherson, Sen
and Shamir
(Incidentally in the conclusion we make the observation about the 2-D
even-odd transposition being not efficient).
A further development along these lines (i.e. simple row-column sorts)
was reported in the Proc. of the ACM Symp. on Theory of Computing 1986
by Schnorr and Shamir entitled `An optimal algorithm for mesh-conn arrays'.
I am assuming that you are familiar with the other work on mesh-sorting
(i.e. the more complicated ones) but if you need any further information,
I will be glad to help. (I had spent more than a year sorting numbers on
mesh).
- Sandeep Sen
∂07-Feb-89 1455 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu collision in DES: distributed and probabilistic algorithm
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 7 Feb 89 14:55:38 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA17801; Tue, 7 Feb 89 14:51:22 -0800
Message-Id: <8902072251.AA17801@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Tue, 7 Feb 89 13:49:13 PST
Received: by BYUADMIN (Mailer R2.01A) id 4483; Mon, 06 Feb 89 23:30:40 MST
Date: Mon, 6 Feb 89 12:45:29 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
"Jac. Quisquater" <mcvax!prlb2!quisquat@UUNET.UU.NET>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: "Jac. Quisquater" <mcvax!prlb2!quisquat@UUNET.UU.NET>
Subject: collision in DES: distributed and probabilistic algorithm
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
We (Jean-Paul Delescaille and Jean-Jacques Quisquater) were able
to find 3 collisions in DES using a network of workstations
during some weeks.
Definition of a collision: given a message M and an cryptographic
algorithm f with 2 parameters M and K (the key), a collision is a
pair (K1, K2) such that
f (M, K1) = f (M, K2),
that is, for a fixed message M and using a cryptographic
algorithm f, the key K1 and the key K2 give the SAME encrypted
message.
Jean-Jacques devised a new probabilistic distributed asynchronous
algorithm for finding collisions without any sorting and with a
small storage (a la Pollard). We used a fast implementation of
DES in C (by Jean-Paul: about 2000 * (encryption + change of key)
/second/machine)
We used the idle time of a network of 20 SUN-3's and 10 microVAXes
(a la Lenstra and Manasse). Total: about 100 Mips during one month.
37
2 encryptions performed (about 20 potential collisions) only in
software!
The message M is 0404040404040404 (hexadecimal form) for
the 3 collisions.
Collision 1: found Fri Jan 13 23:15 GMT (birthday of Jean-Jacques!
Yes, it is another birthday attack (Hi! Don Coppersmith)).
cipher = F02D67223CEAF91C
K1 = 4A5AA8D0BA30585A
K2 = suspense!
Collision 2: found Fri Jan 20 19:13 GMT
cipher = E20332821871EB8F
K1, K2 = suspense!
Collision 3; found Fri Feb 3 03:22 GMT
suspense!
Conclusion: Friday is a good day for finding collisions :-)
Well, there is a problem because there is no proof we effectively
found such collisions.
Question 1: Find a protocol for proving or for convincing you
that we know K2 for collision 1 (zero-knowledge protocols are useful
in this context).
Question 2: Find a protocol for proving or convincing that we know
K1 and K2 for collision 2 (idem).
Question 3: Find a protocol for proving or convincing that we know
3 different collisions (idem).
Useful information: the nice paper by Brassard, Chaum and Crepeau,
``Minimum disclosure proofs of knowledge'', 1987.
The complete information will be given at EUROCRYPT '89, Houthalen,
Belgium, with the restriction that the submitted abstract is
accepted :-) The paper will be sent in April if you want it.
Thanks are due to Paul Branquart, Frans Heymans, Michel Lacroix,
Vincent Marlair, Marc Vauclair, the members of PRLB for permission
and active help in the effective implementation of the distributed
algorithm on their workstations.
Warning: There is no implication about the security of DES used
for encryption. Indeed these experiments only prove that DES is a
good random mapping (a necessary property for any cryptographic
algorithm). However the use of DES for protecting the integrity of files
is not very easy and needs very careful studies.
Jean-Jacques Quisquater,
(Program chairman of EUROCRYPT '89)
∂07-Feb-89 1505 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu CALL FOR PAPERS -Conference BCTCS5
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 7 Feb 89 15:05:10 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA18496; Tue, 7 Feb 89 15:01:01 -0800
Message-Id: <8902072301.AA18496@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Tue, 7 Feb 89 14:04:47 PST
Received: by BYUADMIN (Mailer R2.01A) id 5328; Mon, 06 Feb 89 23:33:30 MST
Date: Mon, 6 Feb 89 19:42:06 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
"Costas S. Iliopoulos" <UHAC018%VAXA.RHBNC.AC.UK@Forsythe.Stanford.EDU>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: "Costas S. Iliopoulos" <UHAC018%VAXA.RHBNC.AC.UK@Forsythe.Stanford.EDU>
Subject: CALL FOR PAPERS -Conference BCTCS5
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
CALL FOR PAPERS
Fifth British Colloquium for Theoretical Computer Science
Royal Holloway and Bedford New College
University of London, 11th-13th April 1989
The Fifth British Colloquium for Theoretical Computer Science (BCTCS)
will take place at Royal Holloway and Bedford New College of the
University of London at Egham, Surrey, beginning on the morning of
Tuesday, 11th April and ending at lunchtime on Thursday 13th.
The BCTCS was established at Leeds in 1985, and has since been held at
Warwick, Leicester and at Edinburgh in 1988. The colloquium aims to
provide a forum for theoreticians to learn of new developments in the
broad areas including Logic and Semantics of Programs, Formal Methods,
Term Rewriting, Specification and Verification, Logic Programming, Data
Structures and Complexity, Computational Algebra, Cryptography,
Parallel Computation, Formal Languages, Artificial Intelligence. The
meeting is informal and provides an opportunity to exchange ideas with
colleagues and research students. Several book publishers will also be
displaying, among others Wiley, McMillan, McGraw-Hill, Prentice-Hall,
Springer, Oxford University Press and Cambridge University Press.
There will be eight invited mainly survey lectures intended to cover
the spectrum of interests in theoretical computer science; the list of
speakers will include
A. Apostolico University of Purdue
R.L. Backhouse University of Groningen
R. Cole Courant Institute, New York
J.A. Goguen University of Oxford, PRG
R. Hindley University of Wales
J.L. Lloyd University of Bristol
M. Smyth Imperial College
These lectures will be complemented by many shorter, contributed
talks for which a submission form follows below.
Abstracts of all talks will be published in the
Bulletin of the EATCS.
A registration form is attached and should be returned by all who wish
to attend. The registration fee for academics will be L15 for forms
returned by 15th March and L20 thereafter. For non-academics there
will be a fixed rate of L50. Those interested in contributing should
fill out the attached form and return it by 15th March.
(Note: L stands for pounds sterling)
BCTCS5
Department of Computer Science
Royal Holloway and Bedford New College
University of London
Egham, Surrey TW20 0EX, UK
E-mail
JANET: bctcs5@uk.ac.rhbnc.vaxb
BITNET: bctcs5@vaxa.rhbnc.ac.uk
ARPA: bctcs5%vaxa.rhbnc.ac.uk@nss.cs.ucl.ac.uk
Local Organising Committee:
Alan Davies
Costas Iliopoulos
John Shawe-Taylor
The organisers thank IBM United Kingdom Trust for their financial assistance.
---------------------------------------------------------------------------
FIFTH BRITISH COLLOQUIUM of THEORETICAL COMPUTER SCIENCE
Registration Form
Name...........................................
Address......................................................
....................................................
......................................................
Telephone ................................................
Electronic Mail....................
We are offering two standards of accommodation (including breakfast)
both in the original 19th century College building. Shared bathroom and
shower facilities are available for both. The superior standard rooms
are newly converted fifth floor rooms with washbasins. The Conference
Dinner will be held in the College's famous Picture Gallery on Tuesday
evening. Please reserve accommodation and meals by ticking the
appropriate boxes below. Special student rates are available for the
standard accommodation.
student standard superior
Monday dinner, accommodatioN [ ]L18 [ ]L20 [ ]L25
Tuesday lunch [ ]L3.50 [ ]L4 [ ]L4
Tuesday conference dinner,
Accommodation [ ]L25 [ ]L30 [ ]L35
Wednesday lunch [ ]L3.50 [ ]L4 [ ]L4
Wednesday dinner, accommodation [ ]L18 [ ]L20 [ ]L25
Thursday lunch [ ]L3.50 [ ]L4 [ ]L4
Extra Conference dinner [ ]L12 [ ]L14 [ ]L14
at a total cost of ..........pounds sterling
I enclose a (non-refundable) registration fee of L15
(L20 if after 15th March, L50 if non-academic)
made payable to RHBNC. Details of how to reach the College will
be forwarded to those who have registered by 1st April.
----------------------------------------------------------------------------
Fifth British Colloquium for Theoretical Computer Science
Royal Holloway and Bedford New College
University of London
11-13 April 1989
APPLICATION FORM for
Contributed Talks of 25 minutes duration
Name.................................................
Affiliation...........................................
Title of Talk:
Abstract (of not more than half a page):
This form should be returned by 15th March to the address above.
∂07-Feb-89 1543 X3J13-mailer What-a-Guy!
Received: from Think.COM by SAIL.Stanford.EDU with TCP; 7 Feb 89 15:42:54 PST
Return-Path: <barmar@Think.COM>
Received: from sauron.think.com by Think.COM; Tue, 7 Feb 89 18:24:35 EST
Received: from OCCAM.THINK.COM by sauron.think.com; Tue, 7 Feb 89 18:38:45 EST
Received: from godot.think.com by fafnir.think.com; Tue, 7 Feb 89 16:00:53 EST
Received: by godot.think.com; Tue, 7 Feb 89 16:00:48 EST
From: alison@Think.COM
Message-Id: <8902072100.AA18029@godot.think.com>
To: staff@Think.COM
Cc: alison@Think.COM
Subject: What-a-Guy!
Date: Tue, 07 Feb 89 16:00:46 EST
Resent-To: x3j13@sail.stanford.edu
Resent-From: Barry Margolin <barmar@Think.COM>
Resent-Date: Tue, 7 Feb 89 18:40 EST
Resent-Message-Id: <19890207234021.1.BARMAR@OCCAM.THINK.COM>
Congrats to Guy Steele for receiving the 1988 ACM Grace Murray Hopper
Award! Below is a press release written by Jim Adams of the ACM.
*******************************************************************
GUY L. STEELE JR.. RECEIVES 1988 ACM GRACE MURRAY HOPPER AWARD
Dr. Guy Steele Jr., Senior Scientist at the Thinking Machines
Corporation, is the recipient of the 1988 ACM Grace Murray Hopper Award.
The Award will be presented to Dr. Steele on Wednesday, February 22,
1989, at the ACM Computer Science Conference at Louisville, Kentucky, in
recognition of, "his general contributions to the development of Higher
Order Symbolic Programming, principally for his advancement of lexical
scoping in LISP".
Guy L. Steele Jr. has published more than two dozen technical papers on
the subject of the LISP language and its implementation, including a
series with Gerald Jay Sussman that defined the Scheme dialect of LISP.
He is author of co-author of three books: Common LISP: The Language,
(Digital Press, 1984); C: A Reference Manual, (Prentice-Hall, 1984 and
1987); and The Hacker's Dictionary, (Harper & Row, 1983). At Thinking
Machines Corporation, Dr. Steele is responsible for the design and
implementation of parallel programming languages and other systems
software for the Connection Machine computer systems.
Dr. Steele received his A.B. degree in applied mathematics from Harvard
College (1975) and his S.M. and Ph.D. in computer science and artificial
intelligence from M.I.T. in 1977 and 1980, respectively.
The award, named in honor of computer pioneer, Admiral Grace Murray
Hopper, has been given annually since 1971 to recognize young persons
who have made an outstanding technical contribution to the computer
industry while 30 years of age or younger.
*****************************************************************
∂07-Feb-89 1735 LOGMTC-mailer Carl Gunter Reminder
Received: from ra.stanford.edu by SAIL.Stanford.EDU with TCP; 7 Feb 89 17:35:27 PST
Received: by ra.stanford.edu (5.59/25-eef) id AA08164; Tue, 7 Feb 89 17:34:01 PDT
Date: Tue, 7 Feb 89 17:34:01 PDT
From: John Mitchell <jcm@ra.stanford.edu>
Message-Id: <8902080134.AA08164@ra.stanford.edu>
To: csd@score, logmtc@sail
Subject: Carl Gunter Reminder
INHERITANCE AND EXPLICIT COERCION
speaker:
Carl Gunter (Penn CIS)
work joint with:
Val Breazu-Tannen (Penn CIS)
Thierry Coquand (INRIA)
Andre Scedrov (Penn Mathematics)
time and place:
Wed Feb 8 at 4:15 PM in MJH 352
We present a method for providing semantic interpretations for
languages which feature INHERITANCE in the framework of statically
checked, rich type disciplines. We illustrate our approach on an
extension of the language Fun of Cardelli and Wegner, which we
interpret via a translation into an extended polymorphic lambda
calculus. Our approach interprets inheritances in Fun as COERCION
FUNCTIONS already DEFINABLE in the target of the translation. Existing
techniques in the theory of semantic domains can be then used to
interpret the extended polymorphic lambda calculus, thus providing
many models for the original language. Our method allows the
simultaneous modeling of PARAMETRIC POLYMORPHISM, RECURSIVE TYPES, and
INHERITANCE, something that was regarded as problematic because of the
seemingly contradictory characteristics of inheritance and type
recursion on higher types.
We identify the main difficulty in providing interpretations for
explicit type disciplines featuring inheritance, namely that programs
can type-check in more than one way. Since interpretations
follow the type-checking derivations, COHERENCE theorems are required,
(that is, one must prove that the meaning of a program does not depend on the
way it was type-checked), and we do prove them for our semantic method.
Interestingly, proving coherence in the presence of recursive types,
variants, and abstract types forced us to reexamine fundamental equational
properties that arise in proof theory (in the form of commutative reductions)
and domain theory (in the form of strict vs. non-strict functions).
∂08-Feb-89 0736 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Program Extraction / Calculus of Constructions
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 8 Feb 89 07:36:35 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA16427; Wed, 8 Feb 89 07:32:30 -0800
Message-Id: <8902081532.AA16427@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Wed, 8 Feb 89 07:35:16 PST
Received: by BYUADMIN (Mailer R2.01A) id 9208; Wed, 08 Feb 89 08:34:00 MST
Date: Wed, 8 Feb 89 09:04:50 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Dwight Spencer <blake!ogccse!dwights@BEAVER.CS.WASHINGTON.EDU>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Dwight Spencer <blake!ogccse!dwights@BEAVER.CS.WASHINGTON.EDU>
Subject: Program Extraction / Calculus of Constructions
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
At the recent POPL '89 conference in Austin, Texas, the following paper
was presented:
Extracting {F sub omega}'s programs from prooofs in the calculus of
constructions - C. Paulin-Mohring (INRIA and LIENS)
I hope to locate someone who attended this conference and is willing to send
me a copy of this paper. Please contact me by E-mail / phone.
I am also searching for any very recent work/bibliographies concerning program
extraction from various type calculi and also the calculus of constructions
as a specification/design language.
Thanks in advance for any help.
- Dwight Spencer
Dept. of Computer Science & Engineering
Oregon Graduate Center, Beaverton, Oregon, USA, 97006-1999
E-mail: dwights@cse.ogc.edu Phone: (503) 690-1121 x7369
∂08-Feb-89 0752 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 8 Feb 89 07:52:03 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA16755; Wed, 8 Feb 89 07:47:56 -0800
Message-Id: <8902081547.AA16755@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Wed, 8 Feb 89 07:50:40 PST
Received: by BYUADMIN (Mailer R2.01A) id 9561; Wed, 08 Feb 89 08:47:36 MST
Date: Wed, 8 Feb 89 09:08:43 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
"research.att.com Joan Feigenbaum jf" <jf@RESEARCH.ATT.COM>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: "research.att.com Joan Feigenbaum jf" <jf@RESEARCH.ATT.COM>
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
This is the second anouncement for the first meeting of
THE ?WHAT EXIT? SEMINAR SERIES,
sponsored by DIMACS, the new NSF Science and Technology Center
for DIscrete MAth and Computer Science.
Tentatively, we are planning to sponsor a series of
day-long seminars, each organized around a specific topic
in discrete math or theoretical computer science. The
participating institutions are Rutgers, Princeton, Bellcore,
and AT&T Bell Labs, and the location of the meetings will
rotate among these four.
*****************************************************************
Topic: Approximation Algorithms for NP-Complete Problems
Date: Friday, March 3, 1989
Time of first talk: 10:30 a.m.
Location: Princeton
Speakers:
David Shmoys (MIT):
Using Linear Programming in the Design and Analysis of
Approximation Algorithms
Ravi Kannan (CMU):
Sampling from a Convex Set and Volume Computation
Mihalis Yannakakis (AT&T-BL):
Approximation and Complexity Classes
Directions:
Park in Lot 21, which you reach as follows: Assume you start
on Nassau Street (a.k.a. Rt. 27) going southwest (i.e., away from
New Brunswick, towards Trenton). Turn left on Washington Road
(at a light). Drive on Washington past Fine Hall and Palmer
Stadium. Turn left onto Faculty Road (at a light). If you
get to a bridge, you have gone too far. The first real street
onto which you can turn left off Faculty is Fitzrandolf. (There
is a previous left, but it is into an alley as opposed to a real
street.) Take that left, and Lot 21 is on your left.
The talks will take place in the Woodrow Wilson School, on the
corner of Washington Street and Prospect Avenue. To get there
from Lot 21, go back to Fitzrandolf and walk in the same direction
in which you were driving before you entered the lot. Go left
on Prospect and continue until Washington. The Woodrow Wilson
School is a large white building.
It takes 10 to 15 minutes to walk from Lot 21 to the Woodrow
Wilson School. So allow enough time!
*****************************************************************
Joan Feigenbaum
jf@research.att.com
∂08-Feb-89 0828 HEMENWAY@Score.Stanford.EDU Round 1 Meeting
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 8 Feb 89 08:27:53 PST
Date: Wed 8 Feb 89 08:22:24-PST
From: Sharon Hemenway <HEMENWAY@Score.Stanford.EDU>
Subject: Round 1 Meeting
To: phd-adm@Score.Stanford.EDU
Reply-To: Hemenway@Score.Stanford.EDU
Message-ID: <12469058201.21.HEMENWAY@Score.Stanford.EDU>
In the continuing battle to schedule the Round 1 meeting, may I ask
you each to let me know if you could make the meeting on each of
Monday, Feb. 20, Tuesday, Feb. 21 and Wednesday, Feb. 22? For now,
let's assume that it will be at 3 pm (although if we decide on
Monday, the holiday, we will have much more flexibility).
Many thanks -- I'll compile the answers and get back to you with a
firm date as quickly as possible.
Sharon
-------
∂08-Feb-89 1107 @Score.Stanford.EDU:chandler@polya.Stanford.EDU Ruzena Bacjsy
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 8 Feb 89 11:06:58 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Wed 8 Feb 89 11:02:28-PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AB24294; Wed, 8 Feb 89 11:00:34 -0800
Date: Wed, 8 Feb 1989 11:00:31 PST
From: "Joyce R. Chandler" <chandler@polya.stanford.edu>
To: faculty@score
Subject: Ruzena Bacjsy
Message-Id: <CMM.0.87.602967632.chandler@polya.stanford.edu>
will be arriving in Palo Alto tomorrow in preparation for her part in the
Forsythe Lectures next week. I am working with her to put a schedule
together. If you would like to chat with her please contact me and I'll set
some time aside for you to visit with her.
∂08-Feb-89 1607 @polya.Stanford.EDU:tah@linz MTC Seminar
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 8 Feb 89 16:07:01 PST
Received: from linz.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA08708; Wed, 8 Feb 89 14:30:43 -0800
Received: by linz.stanford.edu (5.59/25-eef) id AA05463; Wed, 8 Feb 89 14:26:54 PDT
Message-Id: <8902082226.AA05463@linz.stanford.edu>
To: lop@polya
Subject: MTC Seminar
Reply-To: tah@cs.stanford.edu
Date: 08 Feb 89 14:26:49 PST (Wed)
From: Tom Henzinger <tah@linz>
Friday Feb. 10 noon, MJH 301:
Carl Gunter from Penn will give an informal presentation about work in
progress, on the connection between Petri nets and Linear Logic.
∂08-Feb-89 1622 misha@polya.Stanford.EDU AFLB TOMORROW!!
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 8 Feb 89 16:21:58 PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA16470; Wed, 8 Feb 89 16:16:28 -0800
Date: Wed, 8 Feb 89 16:16:28 -0800
From: Michael Kharitonov <misha@polya.Stanford.EDU>
Message-Id: <8902090016.AA16470@polya.Stanford.EDU>
To: aflb-all@polya.Stanford.EDU
Subject: AFLB TOMORROW!!
The next AFLB is TOMORROW, Feb 9, at 12:30 in room 352.
ON A GENERAL FRAMEWORK FOR DE-RANDOMIZING PARALLEL ALGORITHMS
Rajeev Motwani
We present a fairly general technique for converting RNC
algorithms into NC algorithms. Our approach is based on a
parallel implementation of the Method of Conditional
Probabilities due to Joel Spencer. This method was used
to convert probabilistic proofs of existence of combinatorial
structures into polynomial time deterministic algorithms.
It had the apparent drawback of being extremely sequential
in nature. We show that, under certain general conditions,
it is possible to use this technique for devising deterministic
parallel algorithms.
We use our technique to devise NC algorithms for
various problems including set balancing problems,
near-optimal edge coloring of graphs, finding independent
sets in hypergraphs and lattice approximation problems.
Simple RNC algorithms were known for each of these problems
previously but no deterministic NC algorithms had been
devised.
[Joint work with Seffi Naor (Stanford University) and
Moni Naor (IBM-ARC). ]
-----------------------------------------------------------------
Also Mauricio Karchmer will speak early next week, Tuesday or
Monday (watch this space!)
∂08-Feb-89 1651 TAJNAI@Score.Stanford.EDU need FORUM RSVP
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 8 Feb 89 16:51:36 PST
Date: Wed 8 Feb 89 16:47:36-PST
From: Carolyn Tajnai <TAJNAI@Score.Stanford.EDU>
Subject: need FORUM RSVP
To: faculty@Score.Stanford.EDU
Message-ID: <12469150169.39.TAJNAI@Score.Stanford.EDU>
This is a reminder, if you have not let us know the meal functions you
plan to attend during Forum week, please let me know by Friday morning
latest. We have to give guarantees for numbers.
Tuesday, buffet supper, Faculty club, 6:00 p.m.
WEd. breakfast, Tresidder, 8:00 a.m.
Wed. lunch, tresidder, 12:00
Wed. banquet, Faculty Club, 6:00 social hour, 7:00 banquet
Thursday lunch, Tresidder, 12:15
Tajnai@Score
Hiller@Score
Carolyn
-------
∂09-Feb-89 0436 X3J13-mailer Preview of things to come from editorial committee
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 9 Feb 89 04:35:59 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
for x3j13@sail.stanford.edu; id AA17564; Thu, 9 Feb 89 04:34:21 PST
Message-Id: <8902091234.AA17564@decwrl.dec.com>
From: chapman%aitg.DEC@decwrl.dec.com
Date: 9 Feb 89 07:31
To: x3j13@sail.stanford.edu
Subject: Preview of things to come from editorial committee
It's time to begin to come to closure on the standard. I propose we do
this in pieces first, and then finally vote on the document as a whole.
To do this we'll need several letter ballots and of course, votes
at X3J13 meetings. Following are lists of what will be included in the
first two votes. The issue CUT-OFF-DATES contains the complete list
of things we need to agree on, and a proposed segmenting of voting on
those things.
The next few messages you will receive are the issues that will be
included in the letter ballot. Next week I'll send the issues that
are to be voted on at the 3/89 meeting. To access the sections of the
standard that will be voted on: hudson.dec.com, ftp_user merrychristmas,
filenames: letter-ballot-feb-21.dvi, letter-ballot-feb-21.txt. If you
want to build your own .dvi file, you'll need the following files:
s1800.portability-issues, s2300.classes, s2400.slots, s2500.objects,
s6100.introduction, kcamfont.tex, kcmacros.tex, macros2a.tex,
letter-ballot-feb-21.tex (this is the top-level file, the one that
includes all the others).
These files are small enough to be mailed, so let me know if you can't
get FTP access and want to review them before you get them in the letter
ballot. Note that 2.3, 2.4, and 2.5 are just rearrangements of parts of
CLOS Chapter 1. That is why there is such a short review time for them,
presumably we've all just reviewed them.
Letter ballot (2/21/89)
CUT-OFF-DATES
FONTS
ERROR-TERMINOLOGY
TOC
1.8 Portability Issues
2.3 Classes
2.4 Slots
2.5 Objects
6.1 Intro to catalog of tools
3/89 meeting
EXTRA-SYNTAX
EXTRA-OPTIONAL-KEYWORD-ARGUMENTS
UNSPECIFIED-DATATYPES
EXTRA-RETURN-VALUES
UNSOLICITED-MESSAGES
MACRO-AS-FUNCTION
CONFORMANCE-POSITION
EXTENSIONS-POSITION
SUBSETTING-POSITION
Chapter 1 - all parts except 1.8 will be voted on separately, then
Chapter 1 as a whole will be voted on.
2.1 Introduction
2.2 Types
5.1 Errors
5.2 Input/Output
5.3 Interface with the Programming Environment
5.4 Generalized Reference
kc
∂09-Feb-89 0437 X3J13-mailer Issue: CUT-OFF-DATES
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 9 Feb 89 04:37:32 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
for x3j13@sail.stanford.edu; id AA17595; Thu, 9 Feb 89 04:35:56 PST
Message-Id: <8902091235.AA17595@decwrl.dec.com>
From: chapman%aitg.DEC@decwrl.dec.com
Date: 9 Feb 89 07:33
To: x3j13@sail.stanford.edu
Subject: Issue: CUT-OFF-DATES
Issue: CUT-OFF-DATES
References: Working draft of the standard
Category: Policy
Edit history: 20-DEC-88, Version 1 by Chapman
9-JAN-89, Version 2 by Chapman
25-JAN-89, Version 3 by Chapman
7-FEB-89, Version 4 by Chapman
Problem Description:
The X3J13 committee has informally agreed that a 12/89 standard is
a doable goal. However, the standard has to be reviewed by a large
number of people outside the X3J13 committee. We must allow plenty
of time for these reviews, and should therefore plan our internal
reviews and "document freeze" accordingly.
Proposal (CUT-OFF-DATES:ESTABLISH)
Item Dates
________________________________________________Final Changes___Letter Ballot__
Format of tool descriptions 11/1/88 2/21/89
Meaning of each item in each tool description 11/1/88 2/21/89
Fonts 2/1/89 2/21/89
Changes via clean-up to existing functions 4/1/89
Adding functions via clean-up 3/15/89
Conformance issues 3/1/89 mtg
Error terms 2/19/89 2/21/89
Changes to TOC 2/19/89 2/21/89
Contents of sections:
Chapter 1. Introduction 4/1/89 mtg
CONTENTS
1.1 Scope, Purpose, and Application 3/1/89 mtg
1.2 Organization of the Document 3/1/89 mtg
1.3 Referenced Publications 3/1/89 mtg
1.4 Definitions 3/1/89 mtg
1.5 Compliance 3/1/89 mtg
1.6 Implementation-defined Features 3/15/89 mtg
Values
Results
Data Representation and Typing
Program and Control Structure
Comparisons
Numerical Calculations
User Interface
Input/Output
Compiling
Miscellaneous
Programming Environment
1.7 Language Extensions 3/1/89 mtg
1.8 Portability Issues 2/19/89 2/21/89
Chapter 2. Objects and Types 4/1/89 4/14/89
CONTENTS
2.1 Introduction 3/15/89 mtg
2.2 Types 3/22/89 mtg
Type Hierarchy and Relationships
Data Type Definition
Type Specifiers
2.3 Classes 2/19/89 2/21/89
Introduction to Classes
Metaclasses
Standard Metaclasses
Defining Classes
Creating Instances of Classes
Inheritance
Inheritance of Class Options
Examples
Determining the Class Precedence List
Topological Sorting
Examples
Redefining Classes
Modifying the Structure of Instances
Initializing Newly Added Local Slots
Customizing Class Redefinition
Extensions
Integrating Types and Classes
2.4 Slots 2/19/89 2/21/89
Introduction to Slots
Accessing Slots
Inheritance of Slots and Slot Options
2.5 Objects 2/19/89 2/21/89
Object Creation and Initialization
Initialization Arguments
Declaring the Validity of Initialization Arguments
Defaulting of Initialization Arguments
Rules for Initialization Arguments
Shared-Initialize
Initialize-Instance
Definitions of Make-Instance and Initialize-Instance
Changing the Class of an Instance
Modifying the Structure of the Instance
Initializing Newly Added Local Slots
Customizing the Change of Class of an Instance
Reinitializing an Instance
Customizing Reinitialization
Meta-Objects
Standard Meta-objects
Chapter 3. Object Syntax 4/14/89 5/14/89
CONTENTS
3.1 Character Reader 4/1/89 4/14/89
Reader Algorithm
Numbers as tokens
Symbols as tokens
Macro character collection
3.2 Object Syntax 4/8/89 4/14/89
Chapter 4. Evaluation and Compilation 5/1/89 5/14/89
CONTENTS
4.1 Evaluation Model 4/14/89 5/14/89
Introduction
Context and Environment
The Model
Form evaluation
Self-evaluating forms
Symbols as forms
Conses as forms
Return values
Shadowing
Extent
Generic Functions and Methods
Introduction to Generic Functions
Introduction to Methods
Agreement on Parameter Specializers and Qualifiers
Congruent Lambda-Lists for All Methods of a Generic Function
Keyword Arguments in Generic Functions and Methods
Method Selection and Combination
Determining the Effective Method
Standard Method Combination
Declarative Method Combination
Built-in Method Combination Types
Inheritance of Methods
Lambda-expressions
4.2 Compilation 4/22/89 5/14/89
Chapter 5. Other Topics 4/1/89 4/14/89
CONTENTS
5.1 Errors 3/15/89 mtg
Error Terminology
Condition System Concepts
Condtion System Data Types
Condtion System Operation
5.2 Input/Output 3/8/89 mtg
Files
Character and Binary Input/Output
Loading
5.3 Interface with the Programming Environment 3/8/89 mtg
Top level loop
Environment inquiry
Time
5.4 Generalized Reference 3/8/89 mtg
The following sections in the standard:
Chapter 6. Catalog of Tools (A-M) 6/14/89
A-F plus non-alphabetics 4/1/89 4/14/89
G-M 5/1/89 5/14/89
Chapter 7. Catalog of Tools (N-Z) 6/30/89
N-S 6/1/89 6/14/89
T-Z 6/14/89 6/30/89
Glossary 4/1/89 4/14/89
The following will be decided by a letter ballot mailed on 2/21/89:
This list of cut-off-dates (issue CUT-OFF-DATES)
Format of tool descriptions (in Chapters 6 and 7)
Meaning of each item in each tool description (Section 6.1)
Fonts used for distinguishing special words and phrases (issue FONTS)
Error terms (issue ERROR-TERMINOLOGY)
Table of Contents of the standard (issue TOC)
The following sections in the standard:
1.8 Portability Issues
2.3 Classes
2.4 Slots
2.5 Objects
The following will be decided at the 3/89 meeting:
Conformance issues (the issues presented at the 1/89 meeting)
Chapter 1. Introduction (even though all parts have been voted on,
chapter 1 as a whole should be voted on)
The following sections in the standard:
1.1 Scope, Purpose, and Application
1.2 Organization of the Document
1.3 Referenced Publications
1.4 Definitions
1.5 Compliance
1.6 Implementation-defined Features
1.7 Language Extensions
2.1 Introduction
2.2 Types
5.1 Errors
5.2 Input/Output
5.3 Interface with the Programming Environment
5.4 Generalized Reference
The following will be decided by a letter ballot mailed on 4/14/89:
Chapter 2. Objects and Types (ditto, chapter 1)
Chapter 5. Other Topics (ditto, chapter 1)
Glossary
The following sections in the standard:
3.1 Character Reader
3.2 Object Syntax
Chapter 6, A-F plus non-alphabetics
The following will be decided by a letter ballot mailed on 5/14/89:
Chapter 3. Object Syntax (ditto, chapter 1)
Chapter 4. Evaluation and Compilation (ditto, chapter 1)
The following sections in the standard:
4.2 Compilation
G-M
The following will be decided by a letter ballot mailed on 6/14/89:
Chapter 6. Catalog of Tools (A-M) (ditto, chapter 1)
The following section in the standard:
N-S
The following will be decided by a letter ballot mailed on 6/30/89:
Chapter 7. Catalog of Tools (N-Z) (ditto, chapter 1)
The following section in the standard:
T-Z
All comments received according to this schedule will be incorporated
by 6/30/89. Any comments received after the dates listed above will
only be considered if they are of an extreme nature, if they impact
the correctness of the document. Otherwise the comments will be filed
and reserved for the next standard.
To change these dates, a 2/3 vote of the editorial committee
or a majority vote of X3J13 is required.
Rationale:
In order to complete this standard and move on to the next version,
we need to establish dates after which changes will not be allowed.
Current Practice:
None.
Adoption Cost:
None.
Benefits:
Establishing cut-off dates will encourage reviewers to complete
a thorough review in a timely manner.
Conversion Cost:
None.
Aesthetics:
None.
Discussion:
Comment:
Larry Masinter says:
"There are a couple of areas where I expect some further work that might
impact these dates:
a) pathname functions
I'm still hoping to get some cleanup of many of the pathname issues
b) errors signalled, by name
I'm still hoping that we can get at least a partial listing, for each
function, of the possible errors signalled, under what circumstances.
c) pending cleanups
There will probably be 10-15 cleanup issues dealing with ambiguities that
will drag out beyond 3/89. I hope not, but I'm trying to be realistic;
there are just too many "open" issues left."
Jeff Rosenking says:
I agree with the CUT-OFF-DATES proposal and believe that a
strict adherence to it may allow us to complete the standard in
the desired time frame. If an exception situation arises then
the exception clause may be voted on by the editorial committee
and/or X3J13 as a whole; I think this provides enough room for
modification, if it is needed.
One concern I have is on the cut-off-date for the Format of tool
descriptions. The apparent need to modify (shorten) the standard
will most likely require a change in the tool description format.
I personally favor having the present format that we adopted, if
I was drafting the standard for my own use. BUT, since I am not
the only intended user of this standard and since we are not the
only group (country) I agree that we have to consider the
feelings of all those who may use this document.
I will support a modification to the tool formats to extract the
examples field and put them in a library or appendix section. If
addiontal measures need to be taken to "trim" the standard we may
want to limit the tool formats to just include a DESCRIPTION,
SYNTAX, ARGUMENTS and VALUES field, with the other fieldsput into
supplementary volumes of the standard. Perhaps the Japanese, and
also the Germans, English and French, will provide alternative
methods for making the standard more concise. Their input and
agreement, on ANSI Common LISP, will make the standard much more
valuable.
∂09-Feb-89 0440 X3J13-mailer Issue: FONTS
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 9 Feb 89 04:40:24 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
for x3j13@sail.stanford.edu; id AA17692; Thu, 9 Feb 89 04:38:47 PST
Message-Id: <8902091238.AA17692@decwrl.dec.com>
From: chapman%aitg.DEC@decwrl.dec.com
Date: 9 Feb 89 07:37
To: x3j13@sail.stanford.edu
Subject: Issue: FONTS
Issue: FONTS
References: Working draft of the standard
Category: Clarifiaction
Edit history: 25-JAN-89, Version 1 by Chapman
7-FEB-89, Version 2 by Chapman (added discussion)
Problem Description:
The Common Lisp language description makes use of many commonly-used
English words for both their establish meanings and for special
purposes. Since the standard is required to be unambiguous,
a way was devised to distinguish an English word from special word of the same
name.
Proposal (FONTS:STANDARD)
Following is a list of the types of words that have been chosen for
special fonting and the name of the font used to represent each.
Word type Font name
Objects of type xxx (e.g. symbols) Slanted 10 point
Words in the glossary Italics
Tools in Chapters 6 and 7 Bold 9 point
Words in the keyword package defined by the standard Bold 9 point
Parameters supplied to functions/macros/special forms Sans serif 10 point
Rationale:
If the wording in the standard is unambiguous, users of the
standard will find it much easier to write portable code and
conforming implementations.
Current Practice:
CLtL uses fonting mainly for emphasis and for referring to
parameters in function descriptions.
Adoption Cost:
None.
Benefits:
The English descriptions in the standard will be less ambiguous.
Conversion Cost:
None.
Aesthetics:
The fonts have been reworked several times in order to improve
readability. It still requires some familiarity with the style
in order to discover its utility.
Discussion:
Steele says:
"Looks fine to me."
Rosenking says:
"Lets go with this proposal."
∂09-Feb-89 0444 X3J13-mailer Issue: TOC
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 9 Feb 89 04:44:38 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
for x3j13@sail.stanford.edu; id AA17758; Thu, 9 Feb 89 04:42:48 PST
Message-Id: <8902091242.AA17758@decwrl.dec.com>
From: chapman%aitg.DEC@decwrl.dec.com
Date: 9 Feb 89 07:40
To: x3j13@sail.stanford.edu
Subject: Issue: TOC
Issue: TOC
References: Working draft of the standard
Category: Editorial
Edit history: 25-JAN-89, Version 1 by Chapman
Problem Description:
The Table of Contents of the standard has changed several times since
the first one was introduced in November, 1987. One step in finalizing
the standard is to agree on the TOC.
Proposal (TOC:STANDARD)
Chapter 1. Introduction
CONTENTS
1.1 Scope, Purpose, and Application
1.2 Organization of the Document
1.3 Referenced Publications
1.4 Definitions
1.5 Compliance
1.6 Implementation-defined Features
Values
Results
Data Representation and Typing
Program and Control Structure
Comparisons
Numerical Calculations
User Interface
Input/Output
Compiling
Miscellaneous
Programming Environment
1.7 Language Extensions
1.8 Portability Issues
Chapter 2. Objects and Types
CONTENTS
2.1 Introduction
2.2 Types
Type Hierarchy and Relationships
Data Type Definition
Type Specifiers
2.3 Classes
Introduction to Classes
Metaclasses
Standard Metaclasses
Defining Classes
Creating Instances of Classes
Inheritance
Inheritance of Class Options
Examples
Determining the Class Precedence List
Topological Sorting
Examples
Redefining Classes
Modifying the Structure of Instances
Initializing Newly Added Local Slots
Customizing Class Redefinition
Extensions
Integrating Types and Classes
2.4 Slots
Introduction to Slots
Accessing Slots
Inheritance of Slots and Slot Options
2.5 Objects
Object Creation and Initialization
Initialization Arguments
Declaring the Validity of Initialization Arguments
Defaulting of Initialization Arguments
Rules for Initialization Arguments
Shared-Initialize
Initialize-Instance
Definitions of Make-Instance and Initialize-Instance
Changing the Class of an Instance
Modifying the Structure of the Instance
Initializing Newly Added Local Slots
Customizing the Change of Class of an Instance
Reinitializing an Instance
Customizing Reinitialization
Meta-Objects
Standard Meta-objects
Chapter 3. Object Syntax
CONTENTS
3.1 Character Reader
Reader Algorithm
Numbers as tokens
Symbols as tokens
Macro character collection
3.2 Object Syntax
Chapter 4. Evaluation and Compilation
CONTENTS
4.1 Evaluation Model
Introduction
Context and Environment
The Model
Form evaluation
Self-evaluating forms
Symbols as forms
Conses as forms
Return values
Shadowing
Extent
Generic Functions and Methods
Introduction to Generic Functions
Introduction to Methods
Agreement on Parameter Specializers and Qualifiers
Congruent Lambda-Lists for All Methods of a Generic Function
Keyword Arguments in Generic Functions and Methods
Method Selection and Combination
Determining the Effective Method
Standard Method Combination
Declarative Method Combination
Built-in Method Combination Types
Inheritance of Methods
Lambda-expressions
4.2 Compilation
Chapter 5. Other Topics
CONTENTS
5.1 Errors
Error Terminology
Condition System Concepts
Condtion System Data Types
Condtion System Operation
5.2 Input/Output
Files
Character and Binary Input/Output
Loading
5.3 Interface with the Programming Environment
Top level loop
Environment inquiry
Time
5.4 Generalized Reference
Chapter 6. Catalog of Tools (A-M)
A-F plus non-alphabetics
G-M
Chapter 7. Catalog of Tools (N-Z)
N-S
T-Z
Rationale:
The current TOC is a result of a year's worth of meetings and many
discussions of the editorial committee. The organization loosely
follows the CLOS chapters 1 and 2 organization by putting the
concepts first, and followed by an alphabetic listing of the
functions/macros/special forms/variables/constants.
The information that deals with data types is organized according to
the Lisp type hierarchy, and a listing of each language element
that is associated with that data type is located at the end
of each data type description in Chapter 2. These listings are
derived from the contents of the chapters in CLtL.
If we come to the conclusion that the standard should be shortened,
Chapters 6 and 7 can be modified to include fewer tools, and section
6.1 can be modified to reflect movement of some of the non-essential
parts of each description to an appendix.
Current Practice:
CLtL, as well as many other Lisp language specifications,
are organized by data types. The Lucid reference manual's chapters
each deal with a data type, but within those chapters, the information
is organized by concepts followed by an alphabetic listing of
language elements.
CLOS chapters 1 and 2 are organized by concepts first and an
alphabetic listing of language elements next.
Adoption Cost:
None.
Benefits:
The data type organization is useful for describing Lisp, and is therefore
used in chapters 2 and 3. However, categorizing
language elements by the data types they are meant to be used with imposes
an unnecessary structure on the document.
Conversion Cost:
None.
Aesthetics:
None.
Discussion:
∂09-Feb-89 0537 X3J13-mailer Issue: ERROR-TERMINOLOGY
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 9 Feb 89 05:36:52 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
for x3j13@sail.stanford.edu; id AA19584; Thu, 9 Feb 89 05:35:16 PST
Message-Id: <8902091335.AA19584@decwrl.dec.com>
From: chapman%aitg.DEC@decwrl.dec.com
Date: 9 Feb 89 07:56
To: x3j13@sail.stanford.edu
Subject: Issue: ERROR-TERMINOLOGY
Issue: ERROR-TERMINOLOGY
References: Chapter 5, Section 5.1, Working draft of the standard
CLOS Chapter 1
CLtL Chapter 1, Section 1.2.4
Condition System, Version 18
Category: Clarification
Edit history: 27-DEC-88, Version 1 by Chapman
31-JAN-89, Version 2 by Chapman
6-FEB-89, Version 3 by Chapman, RPG and Barmar comments included
8-FEB-89, Version 4 by Chapman, added more to Current Practice
Problem Description:
In CLtL, CLOS and the Condition System, similar but slightly
different language is used to describe
non-normal actions by CL operators. The X3J13 committee needs to
agree on a standard set of terms and their meanings.
Proposal (ERROR-TERMINOLOGY:STANDARD TERMS)
TERM MEANING (including CLtL -> standard conversion)
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
CONFORMING CODE (*) Code that adheres to the following requirements:
(1) Conforming code shall not use any constructions
that are prohibited by the standard.
(2) Conforming code shall not depend on extensions
included in an implementation.
SAFE CODE (*) Code processed with the SAFETY optimization at its
highest setting. SAFETY is a lexical property of code.
UNSAFE CODE (*) Code processed with lower safety levels.
Note: Unsafe code is not necesarily code that does not
do error checking. In many cases it may do less error
checking, but no guarantee that error checking will be
less in unsafe code is expressed or implied.
Implementations are permitted to treat all code as safe
code all the time, by simply ignoring the SAFETY
quality or the entire OPTIMIZE declaration.
IS SIGNALLED An error is signalled in both safe and unsafe code.
Conforming code may rely on the fact that the error
will be signalled in both safe and unsafe code.
Every implementation is required to detect the error
in both safe and unsafe code. For example, "an error
is signalled if UNEXPORT is given a symbol not accessible in
the current package."
SHOULD BE SIGNALLED An error will be signalled in safe code, and an error
might or might not be signalled in unsafe code.
Every implementation is required to detect the error at
least in safe code. When the error is not signalled,
the "consequences are undefined" (see below).
Note: The situation which has been identified as an error is
illegal in all implementations, but some implementations
do not actually detect the situation. Conforming code
known to be safe may rely on the error's being signalled.
For example, "an error should be signalled if ENDP is
given a non-list argument."
CONSEQUENCES ARE UNDEFINED The consequences are unpredictable. The consequences
may range from harmless to fatal. No conforming code can
depend on the results or effects. Conforming code must
treat the results and effects as unpredictable.
In places where the words "must", "must not" or "may
not" are used, then "the consequences are undefined"
if the stated requirement is not met, and no specific
consequence is explicitly stated.
For example: CLtL currently says: (page 69) "Once a
name has been declared by DEFCONSTANT to be constant,
any further assignment or binding of that special
variable is an error." This statement would be
transformed to: "Once a name has been declared by
DEFCONSTANT to be constant, any further assignment or
binding of that special variable has undefined consequences."
Note: A result or effect is unpredictable if it might
vary among implementations or separate invocations
within a single implementation. Theh definition of
a harmless effect is difficult to specify precisely.
It is intended that printing error messages on the
stream *ERROR-OUTPUT* or modifying implementation
data during normal operations are harmless. Allocating
storage, invoking a garbage collector, and re-hashing
are prototypicl examples of things that have harmless
effects. In general, an effect is harmless is if does
not cause the implementation to halt or otherwise enter
an inconsistent state.
An effect is fatal if it causes the implementation to
halt or destroys user, implementation, or system data.
For example, leaving the file system in an inconsistent
state is considered fatal. Other unpredictable effects
include entering the debugger or destroying a user data
structure.
If code depends on a harmless effect, then the result
can be fatal. This is why conforming code may not
depend on such effects.
Implementations are permitted to do anything in this
situation.
RETURN VALUES ARE UNDEFINED Only the number and nature of the return values
of a construct are not well defined but any side-effect
and transfer-of-control behavior is well defined. For
example, if the return values of some function F are
undefined, then an expression such as
(length (list (F))) is still well-defined because it
does not rely on any particular aspect of the value or
values returned by F.
CONSEQUENCES ARE UNSPECIFIED The consequences are unpredictable but harmless.
Implementations are permitted to specify the
consequences of this situation. No conforming code may
depend on the results or effects of this situation,
and all conforming code is required to treat the results
and effects of this situation as unpredictable but
harmless. For example, ``the consequences of the garbage
collector when invoked are unspecified.''
IMPLEMENTATIONS MAY BE EXTENDED An implementation is free to treat
the situation in ANY ONE of the following ways:
(1)When the situation occurs, an error is signalled at
least in safe code,
OR
(2)When the situation occurs, the "consequences are
undefined",
OR
(3)When the situation occurs, the consequences are
defined.
Also, no conforming code can depend on the results or
effects of this situation, and all conforming code must
treat the results and effects of the situation as
undefined. Implementations are permitted to do anything
in this situation. For example, "implementations may be
extended to define other type specifiers to have a
corresponding class."
Note: Users should consult the implementation reference
manual to determine the results or effects of this
situation, but should never depend on the results or
effects of this situation in code to be run on other
implementations.
FREE TO EXTEND THE SYNTAX Implementations are permitted to define unambiguous
extensions to the syntax of the construct being
described. No conforming code can depend on this
extension. All conforming code is required to treat
the syntax as meaningless. The standard may disallow
certain extensions while allowing others. For example,
"no implementation is free to extend the syntax of
DEFCLASS."
WARNING IS ISSUED A warning is issued, as described in WARN, in both safe
and unsafe code and when the situation is detected by
the compiler. Conforming code may rely on the fact
that a warning will be issued in both safe and unsafe
code and when the situation is detected by the compiler.
Every implementation is required to detect this
situation in both safe and unsafe code and when the
situation is detected by the compiler. The presence of
a warning will in no way alter the value returned by
the form which caused the situation to occur. For
example, "a warning is issued by the compiler if a
declaration specifier is not one of those defined in
Chapter 9 of CLtL and has not been declared in a
DECLARATION declaration."
WARNING SHOULD BE ISSUED A warning may be issued. Conforming code may not rely
on the fact that a warning will be issued. If the
situation is detected by the compiler, a warning may or
may not be issued, depending on the implementation.
The presence of a warning will in no way alter the
value returned by the form which caused the situation
to occur. For example, (paraphrasing from CLtL, p. 160)
"a warning should be issued by a compiler if a variable
declared to be ignored is ever referred to or is also
declared special, or if a variable is lexical, never
referred to, and not declared to be ignored."
(*) means this term is used to define other terms in this proposal,
not explicitly used in the standard.
Rationale:
For the standard to be an exact specification, terminology must be
defined and agreed upon.
Current Practice:
CLtL uses "is signalled", "should be signalled", "is an error",
"a warning is issued", and "a warning should be issued".
It also uses "is not permitted", "is desireable that", "is not legitimate",
"is illegal", and "should be" (not associated with "signalled"),
"must be", "must not", as well as other such terms.
The definition of "is an error" in CLtL has come to mean "is
allowed" in places where implementations typically extend the language.
CLOS and the Condition System use "is undefined" "is unspecified",
"may be extended", "free to extend the syntax", and "return values are
undefined".
Adoption Cost:
The cost of adopting this terminology will be mostly associated with the
change from "is an error" to some other more specific terminology
from the above list (typically "is an error" -> "is undefined").
Benefits:
Specific terminology will disambiguate function descriptions which
will save implementor's time and decrease user frustration. Users should
be able to write more portable code if the specification is exact.
Conversion Cost:
See Adoption Cost.
Aesthetics:
None.
Discussion:
Barmar comments:
"... I still hate giving the synonyms "undefined" and "unspecified"
different meanings in the standard, but I've given up on that issue."
RPG responds:
"This point is important. In looking over all intended uses of one over the
other, almost all the time we will be saying that something is undefined
when we want people to not use it because the effects could get you, while
we will be saying that values are unspecified. Other times we will be
saying that whether or not something happens is unspecified.
I doubt we will be able to settle this without fine tuning as we see
the effects in the document."
∂09-Feb-89 0831 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Hong Kong International Computer Conference
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 9 Feb 89 08:31:46 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA11308; Thu, 9 Feb 89 08:27:29 -0800
Message-Id: <8902091627.AA11308@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Thu, 9 Feb 89 08:30:09 PST
Received: by BYUADMIN (Mailer R2.01A) id 8607; Thu, 09 Feb 89 09:28:35 MST
Date: Thu, 9 Feb 89 09:07:54 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
"Robert A. Flavin" <RIBO%YKTVMH.BITNET@forsythe.stanford.edu>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: "Robert A. Flavin" <RIBO%YKTVMH.BITNET@forsythe.stanford.edu>
Subject: Hong Kong International Computer Conference
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
HONG KONG INTERNATIONAL COMPUTER CONFERENCE
The Hong Kong International Computer Conference will be held
April 10-14, 1989. The theme of this conference will be
Information Technology Directions for the 90's. The
conference is organized by the Hong Kong Computer Society and
speakers will include:
Dr. John Connolly
Director Supercomputer Institute, University of Kentucky
Mr. Sam Fuller
Vice President, Digital Equipment Corporation
Dr. Paul Horn
Director of Physical Sciences, IBM Research Division
Dr. Charles Kao
Vice Chancellor, The Chinese University of Hong Kong
For more information please contact:
Mr. George Eggert
312-299-4227 or 312-299-4270
FAX number: 312-299-4280
∂09-Feb-89 0928 X3J13-mailer Re: Issue: ERROR-TERMINOLOGY
Received: from Sun.COM by SAIL.Stanford.EDU with TCP; 9 Feb 89 09:28:02 PST
Received: from snail.Sun.COM by Sun.COM (4.1/SMI-4.0)
id AA18047; Thu, 9 Feb 89 09:28:49 PST
Received: from clam.sun.com by snail.Sun.COM (4.1/SMI-4.0)
id AA17625; Thu, 9 Feb 89 09:25:28 PST
Received: by clam.sun.com (4.0/SMI-4.0)
id AA18377; Thu, 9 Feb 89 09:28:22 PST
Date: Thu, 9 Feb 89 09:28:22 PST
From: cperdue@Sun.COM (Cris Perdue)
Message-Id: <8902091728.AA18377@clam.sun.com>
To: chapman%aitg.DEC@decwrl.dec.com, x3j13@sail.stanford.edu
Subject: Re: Issue: ERROR-TERMINOLOGY
Regarding "CONSEQUENCES ARE UNSPECIFIED": I believe that attempts to
use this concept will just get into trouble.
(The problems I see are with "unspecified side-effects". Unspecified
values are OK.) For one thing, how are we to decide what effects
are harmless? Is changing value of *READ-BASE* harmless? That depends
on the program. Is changing the alue of *READ-BASE* to NIL harmless?
And so on.
The example statement that ``the consequences of the garbage collector
when invoked are unspecified'' has some interest. Perhaps there is an,
exception or two, but in general there should be *no* side-effects from
running the garbage collector, at least none visible to a Lisp program.
It can make sense to specify that certain actions may or may not
have certain side effects, or to specify a range of outcomes, but
that requires a statement in each case. Various cleanup proposals
with "EXPLICITLY-VAGUE" somewhere in their names are of this kind.
My proposal is that the concept and term "CONSEQUENCES ARE UNSPECIFIED"
be deleted from the Common Lisp standard. Any existing uses will have
to be changed. Usually some "explicitly vague" statement is appropriate.
∂09-Feb-89 0959 X3J13-mailer Re: Issue: ERROR-TERMINOLOGY
Received: from Think.COM by SAIL.Stanford.EDU with TCP; 9 Feb 89 09:58:54 PST
Return-Path: <barmar@Think.COM>
Received: from sauron.think.com by Think.COM; Thu, 9 Feb 89 12:28:54 EST
Received: from OCCAM.THINK.COM by sauron.think.com; Thu, 9 Feb 89 12:54:29 EST
Date: Thu, 9 Feb 89 12:56 EST
From: Barry Margolin <barmar@Think.COM>
Subject: Re: Issue: ERROR-TERMINOLOGY
To: Cris Perdue <cperdue@sun.com>
Cc: chapman%aitg.DEC@decwrl.dec.com, x3j13@sail.stanford.edu
In-Reply-To: <8902091728.AA18377@clam.sun.com>
Message-Id: <19890209175604.9.BARMAR@OCCAM.THINK.COM>
Date: Thu, 9 Feb 89 09:28:22 PST
From: cperdue@sun.com (Cris Perdue)
Regarding "CONSEQUENCES ARE UNSPECIFIED": I believe that attempts to
use this concept will just get into trouble.
(The problems I see are with "unspecified side-effects". Unspecified
values are OK.)
That's why they are categorized differently. We all recognize that
unspecified values is an easy problem.
For one thing, how are we to decide what effects
are harmless? Is changing value of *READ-BASE* harmless? That depends
on the program. Is changing the alue of *READ-BASE* to NIL harmless?
And so on.
Didn't we go through this once before. The proposal has an informal
definition of "harmless", and that's the best we're going to get. By
its definition, setting the value of *READ-BASE* to any of its allowable
values is harmless; the results of a program may change, but they are
predicted by the language definition. The consequences of setting it to
something that isn't a fixnum from 2 to 36 is undefined, in my opinion,
so it isn't necessarily harmless.
The example statement that ``the consequences of the garbage collector
when invoked are unspecified'' has some interest. Perhaps there is an,
exception or two, but in general there should be *no* side-effects from
running the garbage collector, at least none visible to a Lisp program.
Here are some results of the garbage collector I'd expect in typical
Lisp systems: the output of (ROOM) will change, the order of entries in
EQ/EQL hash tables will change.
It can make sense to specify that certain actions may or may not
have certain side effects, or to specify a range of outcomes, but
that requires a statement in each case. Various cleanup proposals
with "EXPLICITLY-VAGUE" somewhere in their names are of this kind.
My proposal is that the concept and term "CONSEQUENCES ARE UNSPECIFIED"
be deleted from the Common Lisp standard. Any existing uses will have
to be changed. Usually some "explicitly vague" statement is appropriate.
Kathy, are there any uses of it yet? Have you started converting uses
of "is an error" to the new terminology? I think the DEFPACKAGE
proposal may have used the word "unspecified" when describing the
results of executing a DEFPACKAGE for an existing package but with a
conflicting definition, but I don't know whether the author of the
Cleanup proposal intended to be using the new terminology or was just
using the word informally.
barmar
∂09-Feb-89 1003 emma@csli.Stanford.EDU CSLI Calendar, 9 February, 4:15
Received: from csli.Stanford.EDU by SAIL.Stanford.EDU with TCP; 9 Feb 89 10:03:01 PST
Received: by csli.Stanford.EDU (4.0/inc-1.0)
id AA17167; Thu, 9 Feb 89 09:30:22 PST
Date: Thu, 9 Feb 89 09:30:22 PST
From: emma@csli.Stanford.EDU (Emma Pease)
Message-Id: <8902091730.AA17167@csli.Stanford.EDU>
To: friends@csli.Stanford.EDU
Subject: CSLI Calendar, 9 February, 4:15
C S L I C A L E N D A R O F P U B L I C E V E N T S
_____________________________________________________________________________
9 February 1989 Stanford Vol. 4, No. 15
_____________________________________________________________________________
A weekly publication of The Center for the Study of Language and
Information, Ventura Hall, Stanford University, Stanford, CA 94305
____________
CSLI ACTIVITIES FOR NEXT THURSDAY, 16 February 1989
12 noon TINLunch
Cordura Hall Defeasible Reasoning and Nonmonotonic
Conference Room (and worse) Inference Relations:
A Little Philosophy; A Little AI; A Little Logic
David Israel
(israel@ai.sri.com)
Abstract below
2:15 p.m. CSLI Seminar
Cordura Hall Overview of the German Research Center for AI
Conference Room Gerhard Barth
German Research Center for AI
3:30 p.m. Tea
Ventura Hall
____________
NEXT WEEK'S TINLUNCH
Defeasible Reasoning and Nonmonotonic
(and worse) Inference Relations:
A Little Philosophy; A Little AI; A Little Logic
David Israel
16 February
Starting about a decade ago, researchers in Artificial Intelligence
began to formalize certain oddly behaved, in particular nonmonotonic,
inference patterns. Some of these, e.g., Reiter's logic for default
reasoning, modeled features of actually existing computational
systems; others, such as circumscription, were presented as capturing
important features of actual, human common-sense reasoning. In both
kinds of case, the phenomenon under consideration has something to do
with what philosophers have called `defeasible reasoning.'
The latter will be very briefly characterized. We shall then move
on to recent attempts by logicians Dov Gabbay, on the one hand, and
David Makinson, on the other, to give abstract axiomatic accounts of a
variety of these nonmonotonic inference relations. These will be
described and some important results mentioned. A few questions will
be raised about what such inference relations have to do with
defeasible reasoning. `Many' fewer answers will be suggested.
____________
LINGUISTICS DEPARTMENT COLLOQUIUM
A Typology of Possible Morphophonological Change
Bill J. Darden
University of Chicago
Friday, 17 February, 3:15
Cordura Conference Room
____________
COMMONSENSE AND NONMONOTONIC REASONING SEMINAR
Circumscribing Equality
Peter K. Rathmann
Stanford University
Marianne Winslett
University of Illinois
Monday, 13 February, 3:15pm
MJH 301
One important facet of common-sense reasoning is the ability to draw
default conclusions about the state of the world, so that one can, for
example, assume that a given bird flies in the absence of information
to the contrary. A black mark against the circumscriptive approach to
common-sense reasoning has been its inability to produce default
conclusions about equality; for example, one cannot in general
tentatively conclude that President(USA) $\not =$ Fido using
circumscription. In this talk we will give a model theory and
second-order axiom for circumscribing equality.
-----------
SYMBOLIC SYSTEMS FORUM
Semiotics
David Wellbery
German Studies
Friday, 17 February, 3:15
Room 60:61G
David Wellbery will explain why symbolic systems should consider the
humanities as a part of its major. There has been much work on
symbols, symbolism, meaning, interpretation, and much more in the
humanities (principally semiotics, literary theory, and symbolic
anthropology), which researchers and students in symbolic systems
could use and might miss otherwise. On the other hand, as in every
case of collaboration, these humanities disciplines also stand to gain
great benefit from ideas within technical symbolic systems. In this
vein, Professor Wellbery hopes to hold an informal discussion in which
he will present some ideas about semiotics and attempt to justify
collaboration.
∂09-Feb-89 1008 X3J13-mailer Issue: ERROR-TERMINOLOGY
To: x3j13@SAIL.Stanford.EDU
From: Dick Gabriel <RPG@SAIL.Stanford.EDU>
Many people seem to believe that saying something is harmless is a useless
thing to say in the standard. If we were to drop this term, then every
time we are ``explicitly vague'' a valid possibility is that a fatal error
can occur. How is it any better to say that what happens when some
operation happens is ``explictly vague''? Also, to try to enumerate a
a set of alternatives presumes we are able to forsee all implementation
technologies, which is simply not possible.
To be more explicit, it is valid to specify what can happen if an illegal
operation is performed. If we are not able to list all such effects, users
can have two questions: Do *I* have to worry about detecting that my
program is about to perform this action because my run will be trashed, or
can I simply let it happen without worry? ``Undefined'' and
``unspecified'' are the terms that anwer these questions.
People have asked what happens if *read-base* is changed, is that
harmless? Well, for one thing changing that is never claimed to be among
the things whose effects is unspecified. Second, the other clauses in the
definition must be read at the same time as you read the one about
harmless effects: programs that depend on the effects are not conforming.
Because *read-base* is something explicitly to depend upon, any change to
it behind your back is not harmless.
Certainly in the definition of harmless effects we can explicitly
rule out unspecified changes to things like *read-base* (we can enumerate
them if you like).
People seem to feel that if we cannot with mathematical precision define a
term we should not use it. The attitude to head in that direction is good,
but if you want to go all the way, we are sadly many years away from a
suitable draft. When I read the current draft (and CLtL for that matter) I
find that almost every paragraph requires my detailed knowledge of Lisp
(and sometimes Lisp implementation technology) to understand. Therefore,
we cannot hope for a self-contained document.
Cris writes:
``Perhaps there is an, exception or two, but in general there should be
*no* side-effects from running the garbage collector, at least none
visible to a Lisp program.''
One effect that can be detected is the time it takes. In a realtime system,
that can be fatal. This is perhaps the most serious effect whose harmlessness
is debatable.
Finally, we all depend on the implementors to implement harmless effects
all the time. I think it is useful to be able to specify which operations
are allowed to go boom and which must not for their benefit.
I think in Hawaii we agreed informally to look at the draft when it has
more of the uses of these terms in place to determine whether their meanings
are adequate or whether we should drop some or replace them. Let's stick
with that.
-rpg-
∂09-Feb-89 1059 X3J13-mailer Re: Issue: ERROR-TERMINOLOGY
Received: from Sun.COM by SAIL.Stanford.EDU with TCP; 9 Feb 89 10:59:03 PST
Received: from snail.Sun.COM by Sun.COM (4.1/SMI-4.0)
id AA20436; Thu, 9 Feb 89 11:00:06 PST
Received: from clam.sun.com by snail.Sun.COM (4.1/SMI-4.0)
id AA23021; Thu, 9 Feb 89 10:56:46 PST
Received: by clam.sun.com (4.0/SMI-4.0)
id AA18461; Thu, 9 Feb 89 10:59:45 PST
Date: Thu, 9 Feb 89 10:59:45 PST
From: cperdue@Sun.COM (Cris Perdue)
Message-Id: <8902091859.AA18461@clam.sun.com>
To: RPG@SAIL.Stanford.EDU, x3j13@SAIL.Stanford.EDU
Subject: Re: Issue: ERROR-TERMINOLOGY
Many people seem to believe that saying something is harmless is a useless
thing to say in the standard. If we were to drop this term, then every
time we are ``explicitly vague'' a valid possibility is that a fatal error
can occur. How is it any better to say that what happens when some
operation happens is ``explictly vague''? Also, to try to enumerate a
a set of alternatives presumes we are able to forsee all implementation
technologies, which is simply not possible.
REMF-DESTRUCTION-UNSPECIFIED:EXPLICITLY-VAGUE, which passed at
the last meeting, I think is a good example of a form of specification
that can be successful. It prescribes a set of things that destructive
operations can do without pinning itself down to just one alternative.
People have asked what happens if *read-base* is changed, is that
harmless? Well, for one thing changing that is never claimed to be among
the things whose effects is unspecified.
I was trying to ask the question whether changing *read-base* would
be a "harmless" side-effect for some other operation, such as running
the garbage collector. I wasn't meaning to talk about unspecified effects
of an explicit (incf *read-base*).
∂09-Feb-89 1059 snoeyink@polya.Stanford.EDU [irani@ernie.Berkeley.EDU: BATS Correction]
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 9 Feb 89 10:59:15 PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA17372; Thu, 9 Feb 89 10:54:03 -0800
Date: Thu, 9 Feb 89 10:54:03 -0800
From: Jack Snoeyink <snoeyink@polya.Stanford.EDU>
Message-Id: <8902091854.AA17372@polya.Stanford.EDU>
To: aflb-local@polya.Stanford.EDU
Subject: [irani@ernie.Berkeley.EDU: BATS Correction]
Date: Wed, 8 Feb 89 16:59:24 -0800
From: irani@ernie.Berkeley.EDU (Sandy Irani)
Subject: BATS Correction
Please note that the last two talks were originally listed
for 12:10 and 1:10. They will be given at 1:10 and 2:10.
BATS will be on Friday February 10, in Sibley Auditorium.
Lunch will be served in Bechtel 120A & B at 12:00.
The schedule is as follows:
10:10 Dorit Hochbaum (Berkeley): The Complexity of Integer Nonlinear
Optimization over Linear Polytopes
11:10 Peter Gacs (Boston University and IBM Almaden Research Center)
Self-correcting and self-organizing cellular arrays
1:10 Ashok Subramanian (Stanford) The Complexity of Circuit
Value and Network Stability
2:10 Seffi Naor (Stabford) Maximum Flow in Networks with Many
Sources and Sinks
∂09-Feb-89 1248 lansky@ai.sri.com AI-RR Seminar -- TUESDAY (Valentine's Day) -- 2pm -- W.Zadrozny
Received: from Warbucks.AI.SRI.COM ([128.18.3.1]) by SAIL.Stanford.EDU with TCP; 9 Feb 89 12:48:03 PST
Received: from venice.ai.sri.com by Warbucks.AI.SRI.COM with INTERNET ;
Thu, 9 Feb 89 12:30:46 PST
Received: by venice.ai.sri.com (3.2/4.16)
id AA16949 for planlunch@ai.sri.com; Thu, 9 Feb 89 12:31:01 PST
Date: Thu, 9 Feb 89 12:31:01 PST
From: lansky@Warbucks.AI.SRI.COM (Amy Lansky)
Message-Id: <8902092031.AA16949@venice.ai.sri.com>
To: planlunch@Warbucks.AI.SRI.COM
Subject: AI-RR Seminar -- TUESDAY (Valentine's Day) -- 2pm -- W.Zadrozny
VISITORS: Please arrive 5 minutes early so that you can be escorted up
from the E-building receptionist's desk. Thanks!
-----------------------------------------------------------------------
A THREE-LEVEL THEORY OF REASONING
Wlodek Zadrozny (WLODZ@IBM.COM)
IBM T.J.Watson Research Center
2:00 PM, TUESDAY, February 14
SRI International, Building E, Room EJ228
In this talk we present a three-level theory of reasoning; we also
sketch some applications to semantics of natural language. In this
theory knowledge bases containing defaults are understood not as sets
of formulas (rules and facts) but as collections of partially ordered
theories. As a result of this shift of perspective we obtain a rather
natural logical system in which priorities in interpretation of
predicates are the source of nonmonotonicity in reasoning. In our
formalization, the usual, two-part logical structures, consisting of a
metalevel and an object level, are augmented by a third level -- a
referential level. The referential level is a partially ordered
collection of default theories -- it contains a more permanent part of
a knowledge base; current situations are described on the obect level;
the metalevel is a place for rules that can eliminate some of the
models permitted by the object level and the referential level. We
also prove basic results about derivability in this system. Finally,
commonsense conclusions of an object theory can be identified with
sentences true in a set of models specified by this three-level
semantics.
∂10-Feb-89 0819 HEMENWAY@Score.Stanford.EDU Batch 3 folders
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 10 Feb 89 08:19:02 PST
Date: Fri 10 Feb 89 08:16:11-PST
From: Sharon Hemenway <HEMENWAY@Score.Stanford.EDU>
Subject: Batch 3 folders
To: phd-adm@Score.Stanford.EDU
Reply-To: Hemenway@Score.Stanford.EDU
Message-ID: <12469581358.19.HEMENWAY@Score.Stanford.EDU>
You will most likely notice that a few of the folders you have in this
batch are missing one letter of recommendation. We do this in this
batch so that these applicants, some of whom are quite strong, can get
two readings. Although I realize that this may make it even more
difficult for you to effectively rate them, it seems unfair to penalize
the students for a recalcitrant recommender!
Sharon
P.S. I'll be back in touch later today about the Round 1 meeting.
-------
∂10-Feb-89 1018 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Disk Space problems on Polya
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 10 Feb 89 10:18:26 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Fri 10 Feb 89 10:14:33-PST
Message-ID: <Ln91b@SAIL.Stanford.EDU>
Date: 10 Feb 89 1016 PST
From: Arthur Keller <ARK@SAIL.Stanford.EDU>
Subject: Disk Space problems on Polya
To: ball@POLYA.Stanford.EDU, farhad@POLYA.Stanford.EDU,
grossman@POLYA.Stanford.EDU, wheaton@ATHENA.Stanford.EDU
CC: faculty@SCORE.STANFORD.EDU
The other day I saw a system message on Polya that indicated that there
was a disk space shortage on /u2 on Polya and users were requested to
reduce their disk usage. Requesting users to reduce their disk usage is a
*bad* idea. Here are several reasons why:
1. If there is an imbalance of users on /u1 and /u2, some can be shifted
from one disk to another to temporary alleviate the shortage.
2. I think we should be in the business of encouraging more computer usage
not less. If more people use disk storage, we can lower the rates for
disk storage and that will encourage even more use.
3. Disk drives are cheap. If we are running out of disk storage, put
another disk drive on Polya.
Please post another system message *encouraging* people to use as much
disk space as they need. Tell them we can buy more disk drives if we need
them. Don't send out shortsighted messages that are tantamount to
shooting ourselves in the foot. Encourage computer usage! It's the only
way to pay for those beasts.
Arthur
∂10-Feb-89 1031 STAGER@Score.Stanford.EDU 1989/90 Courses and Degrees
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 10 Feb 89 10:31:34 PST
Date: Fri 10 Feb 89 10:27:32-PST
From: Claire Stager <STAGER@Score.Stanford.EDU>
Subject: 1989/90 Courses and Degrees
To: faculty@Score.Stanford.EDU
cc: stager@Score.Stanford.EDU
Office: CS-TAC 29, 723-6094
Message-ID: <12469605267.21.STAGER@Score.Stanford.EDU>
I'm sending out memos and course descriptions today, via courier, asking for
your revisions and input for next year's Courses and Degrees Bulletin.
Please note the deadline--FEBRUARY 24--by which I need to hear from you.
Thanks.
Claire
-------
∂10-Feb-89 1038 @Score.Stanford.EDU:farhad@polya.Stanford.EDU Re: Disk Space problems on Polya
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 10 Feb 89 10:37:16 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Fri 10 Feb 89 10:32:14-PST
Received: from LOCALHOST by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA13904; Fri, 10 Feb 89 10:30:03 -0800
Message-Id: <8902101830.AA13904@polya.Stanford.EDU>
To: Arthur Keller <ARK@SAIL.Stanford.EDU>
Cc: ball@POLYA.Stanford.EDU, farhad@POLYA.Stanford.EDU,
grossman@POLYA.Stanford.EDU, wheaton@ATHENA.Stanford.EDU,
faculty@SCORE.STANFORD.EDU, farhad@polya.Stanford.EDU
Subject: Re: Disk Space problems on Polya
In-Reply-To: Your message of 10 Feb 89 10:16:00 -0800.
<Ln91b@SAIL.Stanford.EDU>
Date: Fri, 10 Feb 89 10:30:02 -0800
From: farhad@polya.Stanford.EDU
+------------------------------
| The other day I saw a system message on Polya that indicated that there
| was a disk space shortage on /u2 on Polya and users were requested to
| reduce their disk usage. Requesting users to reduce their disk usage is a
| *bad* idea. Here are several reasons why:
| 1. If there is an imbalance of users on /u1 and /u2, some can be shifted
| from one disk to another to temporary alleviate the shortage.
| 2. I think we should be in the business of encouraging more computer usage
| not less. If more people use disk storage, we can lower the rates for
| disk storage and that will encourage even more use.
| 3. Disk drives are cheap. If we are running out of disk storage, put
| another disk drive on Polya.
| Please post another system message *encouraging* people to use as much
| disk space as they need. Tell them we can buy more disk drives if we need
| them. Don't send out shortsighted messages that are tantamount to
| shooting ourselves in the foot. Encourage computer usage! It's the only
| way to pay for those beasts.
| Arthur
+------------------------------
The message I send was something I inhereted while I was working at
Berkeley and I underestand it should not have been posted. But it
seemed a very good solution at that time when /u1 was 100% full and
nobody could do anything. Moving users around was my second choice
but I found the user who filled it up and he is eliminated.
I left a message on /etc/motd that everybody will see it when they
login to the system:
Polya: Disk Space Shortage is OVER. Feel free to use them.
Farhad
∂10-Feb-89 1041 @Score.Stanford.EDU:ball@polya.Stanford.EDU Disk Space problems on Polya
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 10 Feb 89 10:41:41 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Fri 10 Feb 89 10:32:50-PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA13973; Fri, 10 Feb 89 10:30:56 -0800
Date: Fri, 10 Feb 89 10:30:56 -0800
From: Jim Ball <ball@polya.Stanford.EDU>
Message-Id: <8902101830.AA13973@polya.Stanford.EDU>
To: ARK@SAIL.Stanford.EDU
Cc: farhad@POLYA.Stanford.EDU, grossman@POLYA.Stanford.EDU,
wheaton@ATHENA.Stanford.EDU, faculty@SCORE.STANFORD.EDU
In-Reply-To: Arthur Keller's message of 10 Feb 89 1016 PST <Ln91b@SAIL.Stanford.EDU>
Subject: Disk Space problems on Polya
Arthur,
You're absolutely correct. We have had some discussion here at CSD-CF
regarding this type of message. I think it is now clear to everyone that
we really don't want to discourage usage.
Thanks for the comments.
-Jim
∂10-Feb-89 1055 LOGMTC-mailer Seminar in Logic
Received: from csli.Stanford.EDU by SAIL.Stanford.EDU with TCP; 10 Feb 89 10:55:07 PST
Received: by csli.Stanford.EDU (4.0/inc-1.0)
id AA21052; Fri, 10 Feb 89 10:53:18 PST
Date: Fri 10 Feb 89 10:53:17-PST
From: Sol Feferman <SF@CSLI.Stanford.EDU>
Subject: Seminar in Logic
To: Logic@csli.Stanford.EDU
Message-Id: <603139997.0.SF@CSLI.Stanford.EDU>
Mail-System-Version: <SUN-MM(242)+TOPSLIB(128)@CSLI.Stanford.EDU>
Seminar in Logic
Speaker: Prof. I. Katznelson, Dept. of Mathematics, Stanford
Title: "Semigroups, idempotents and Ramsey theory"
Time: Mon. Feb. 13, 4:15-5:30
Place: Room 383-N, 3d floor lounge, Math Corner, Stanford
Note: This is the first of two talks, at a different time and place
than usual schedule for the seminar. The second talk will be on Tues
Feb 21, at 4:15-5:30 in Room 381-T.
Abstract: Some recent results in the line of the theorems of van der
Waerden, Hales-Jewett, Carlson-Simpson etc. will be presented in an
introductory exposition. The methods use the existence of idempotents
in compact semigroups, and are thus an example of the use of non-constructive
methods to obtain combinatorial results.
S. Feferman
-------
∂10-Feb-89 1449 HEMENWAY@Score.Stanford.EDU Round 1 Meeting
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 10 Feb 89 14:49:19 PST
Date: Fri 10 Feb 89 14:47:00-PST
From: Sharon Hemenway <HEMENWAY@Score.Stanford.EDU>
Subject: Round 1 Meeting
To: phd-adm@Score.Stanford.EDU
Reply-To: Hemenway@Score.Stanford.EDU
Message-ID: <12469652502.38.HEMENWAY@Score.Stanford.EDU>
There was, of course, no overwhelming concensus of the best time for
the meeting but the lesser of all evils seems to fall on Monday,
Feb. 20 at 3:00. We'll meet in the same room - MJH 252.
Right now, the only people who have indicated to me that they cannot
meet at this time are Gene Golub and Bob Moore. If this is now a
bad time for anyone else, please let me know as soon as possible.
I'll see you all on President's Day - February 20 at 3:00.
Sharon
-------
∂11-Feb-89 1339 @polya.Stanford.EDU:tah@linz Faculty candidate
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 11 Feb 89 13:39:47 PST
Received: from linz.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA04057; Sat, 11 Feb 89 13:34:35 -0800
Received: by linz.stanford.edu (5.59/25-eef) id AA07172; Sat, 11 Feb 89 13:30:31 PDT
Message-Id: <8902112130.AA07172@linz.stanford.edu>
To: thcom@sail, aflb-all@polya
Subject: Faculty candidate
Reply-To: tah@cs.stanford.edu
Date: 11 Feb 89 13:30:27 PST (Sat)
From: Tom Henzinger <tah@linz>
Mauricio Karchmer from Toronto will be visiting on Monday and Tuesday,
Feb. 12-13. If you want to join him for lunch or dinner on either day,
or talk with him, please send me a message. -t
∂12-Feb-89 1619 @Score.Stanford.EDU:nilsson@Tenaya.stanford.edu Calendar Advisory
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 12 Feb 89 16:19:13 PST
Received: from Tenaya.stanford.edu by SCORE.STANFORD.EDU with TCP; Sun 12 Feb 89 16:17:06-PST
Received: by Tenaya.stanford.edu (5.59/25-eef) id AA02719; Sun, 12 Feb 89 16:17:10 PDT
Date: Sun, 12 Feb 89 16:17:10 PDT
From: Nils Nilsson <nilsson@Tenaya.stanford.edu>
Message-Id: <8902130017.AA02719@Tenaya.stanford.edu>
To: ac@score
Subject: Calendar Advisory
The "theory" search committee has requested a faculty meeting where
they can present their recommendations about new faculty candidates.
Because these candidates are super outstanding, they have offers from
other places, and we must try to reach a decision soon if we are to be
in the running. Therefore I would appreciate it if all could free
their calendars for Tuesday afternoon, February 21 for a faculty
meeting. The exact time of this meeting has yet to be pinned down.
(I hope to do this tomorrow.) Between now (that is, 2/13) and the
meeting the files and letters on the candidates to be recommended will
be available for your study in Joyce Chandler's office. Please do
look these over so our discussion at the meeting can proceed
expeditiously.
I regard our decisions about how to strengthen Stanford's theoretical
computer science as extremely important, so I am hopeful that all
will be able to arrange that Tuesday so that they will not be
constrained by time pressures. Thanks, -Nils
∂13-Feb-89 0023 barwise@russell.Stanford.EDU Question from student
Received: from russell.Stanford.EDU by SAIL.Stanford.EDU with TCP; 13 Feb 89 00:23:21 PST
Received: from [127.0.0.1] by russell.Stanford.EDU (4.0/inc-1.0)
id AA14924; Sun, 12 Feb 89 14:38:13 PST
Message-Id: <8902122238.AA14924@russell.Stanford.EDU>
To: ssp-faculty@russell.Stanford.EDU
Cc: weiss@portia.stanford.edu
Subject: Question from student
Date: Sun, 12 Feb 89 14:36:41 PST
From: Jon Barwise <barwise@russell.Stanford.EDU>
Barbara, Dave and other ssp faculty,
Here is a question from a student that I can't answer. Can
any of you. -Jon
------- Forwarded Message
Return-Path: weiss@Portia.stanford.edu
Return-Path: <weiss@Portia.stanford.edu>
Received: from Portia.stanford.edu ([36.21.0.69]) by russell.Stanford.EDU (4.0/inc-1.0)
id AA05347; Sun, 12 Feb 89 13:54:57 PST
Received: by Portia.stanford.edu (5.59/25-eef) id AA01215; Sun, 12 Feb 89 13:49:57 PDT
Message-Id: <8902122149.AA01215@Portia.stanford.edu>
Date: 12 Feb 1989 1349-PST (Sunday)
>From: Scott Weiss <weiss@Portia.stanford.edu>
To: barwise@russell
Cc:
Subject: Decision theory and computer science
Professor Barwise,
I was in your class (Philosophy 159) last quarter, and I was
wondering if you might know of anyone that I would be able to work
with/under for a research idea that I have been wondering about.
It involves dyslexia, with color as a device to mask its
symptoms (based on research by Helen Irlen in Long Beach). I'd like
to develop some software that walks a person through some color
trials, but with some logic behind it; to actually make a guess as to
the next most valid color choice, based on user input. I hope to use
the Macintosh II as a color device, with its friendly user-interface.
The most important part of the research is Helen Irlen's
findings, which I could apply to a computer, but I feel that the work
would go much better with a "logical" foundation.
Your thoughts would be greatly appreciated.
Scott D. Weiss
------- End of Forwarded Message
∂13-Feb-89 0750 @Score.Stanford.EDU:chandler@polya.Stanford.EDU Tomorrow's Faculty Lunch
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 13 Feb 89 07:50:47 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Mon 13 Feb 89 07:47:41-PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA24042; Mon, 13 Feb 89 07:45:38 -0800
Date: Mon, 13 Feb 1989 7:45:36 PST
From: "Joyce R. Chandler" <chandler@polya.stanford.edu>
To: faculty@score, bureaucrats@score, staff-rep@score
Subject: Tomorrow's Faculty Lunch
Message-Id: <CMM.0.87.603387936.chandler@polya.stanford.edu>
Just a reminder.....tomorrow's faculty lunch, in MJH-146 at 12:15......more
about the PhD program. See you there!
∂13-Feb-89 1018 @Score.Stanford.EDU:chandler@polya.Stanford.EDU Forsythe Lectures
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 13 Feb 89 10:18:41 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Mon 13 Feb 89 10:06:39-PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA29170; Mon, 13 Feb 89 10:04:37 -0800
Date: Mon, 13 Feb 1989 10:04:31 PST
From: "Joyce R. Chandler" <chandler@polya.stanford.edu>
To: csd-list@score
Subject: Forsythe Lectures
Message-Id: <CMM.0.87.603396271.chandler@polya.stanford.edu>
Professor Ruzena Bajcsy, Chair of the Computer and Information Science
Department at the University of Pennsylvania is at Stanford to deliver the
George and Sandra Forsythe Memorial Lectures. The first lecture will be
delivered tonight at 7:30 in Fairchild Auditorium (which is just southwest of
Stanford Medical Center off Campus Drive). The title of tonight's lecture is
"Perception via Active Exploration".
A reception will follow in the Foyer of Fairchild Auditorium.
Abstract:
Following Gibson's perceptual theory, we shall demonstrate in the context of
machine perception that a machine should look (and not oly see) and feel (and
not only touch). That is, a perceiving system actively seeks information.
Also, perceptual exploratory procedures must be bulit in in order for a robot
to explore, manipulate, and move around in an unknown environment. Concrete
examples from a laboratory environment will be presented as an existence
proof of this theory of machine perception.
∂13-Feb-89 1141 @Score.Stanford.EDU:nilsson@Tenaya.stanford.edu faculty meeting
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 13 Feb 89 11:40:37 PST
Received: from Tenaya.stanford.edu by SCORE.STANFORD.EDU with TCP; Mon 13 Feb 89 11:33:14-PST
Received: by Tenaya.stanford.edu (5.59/25-eef) id AA03274; Mon, 13 Feb 89 11:21:25 PDT
Date: Mon, 13 Feb 89 11:21:25 PDT
From: Nils Nilsson <nilsson@Tenaya.stanford.edu>
Message-Id: <8902131921.AA03274@Tenaya.stanford.edu>
To: ac@score
Subject: faculty meeting
We will be having a faculty meeting to discuss three potential CS
theory candidates on Tuesday, February 21 at 4:15 pm in MJH 146.
Please be prepared to stay 'til 6, but if everyone reads the vitaes
ahead of time (see Joyce Chandler), then we ought to be able to finish
earlier. I'm sorry about the short notice, but departments on the
move need to have a quick reaction capability! (Quick but
thoughtful!!)
John McCarthy may also want to bring up a resolution to be taken
to the faculty senate for possible approval by the CSD. I assume
that if he is going to do that, that he will circulate any relevant
materials before the meeting. The faculty candidates will be
decided on first, however.
Thanks for your forbearance on this.
-Nils
∂13-Feb-89 1332 barwise@russell.Stanford.EDU SS GRad students
Received: from russell.Stanford.EDU by SAIL.Stanford.EDU with TCP; 13 Feb 89 13:32:13 PST
Received: from localhost by russell.Stanford.EDU (4.0/inc-1.0)
id AA29399; Mon, 13 Feb 89 13:33:12 PST
Message-Id: <8902132133.AA29399@russell.Stanford.EDU>
To: ssp-faculty@russell.Stanford.EDU
Subject: SS GRad students
Date: Mon, 13 Feb 89 13:32:30 PST
From: Jon Barwise <barwise@russell.Stanford.EDU>
I am using this mailing list as a catchall for faculty interested in
symbolic systems, and the questin of who the phil dept admits in the
new symbolic systems track in philosophy. I need to report to the
admissions committee on Thursday. So here is what I plan to say
unless some of you look at the files and give me contrary advise:
There are seven applicants, 4 strong, 2 ok, and one non-starter.
Here is my ranking of the top four, with comments:
1. Eric Jackson, AB from Harvbard in CS and Philosophy, GRE
percentiles 99/99/99. VERY strong letters and grades, wrote an
honor's thesis on Frege's puzzle, interested in AI and philosophy of
mind, currently working at a software company. Sounds brilliant. He
applied to cs this year before learning of the ss track. Says this is
his first choice.
2. Guven Guzeldere, a Turkish student, not getting an MS in CS and an
MA in philosophy at INdicate university. GRE percentiles: 52/97/97.
Persumably the score on verbal has to do with english being a second
language. Very good letters from people in cs and philosophy.
Interested in AI and phil of mind.
I think the first two are close. The next is still good, but not
quite as super.
3. Lawlor, Krista, BA in math from Univ of NH, current head of
academic computing at St Anslems college, GRE 98/79/88, interested in
philosophy of logic, math, and computation. Would probably make it
through and write a good dissertation.
4. Leong, M-K, Cog sci and c.s. degree from Toronto, from Singapore
lab, and does not need any money, will go back to lab. He is
interested in computational aspects of the relation between perception
and natural language. He applied to the c.s. dept last year, and was
turned down. He does not have that strong a philosophy background.
But his c.s. letters are strong. GRE 95/99/99. With him the question
is whether to recommend acceptance without aid. I hesitate because
of the lack of preparation in philosophy. If it were a straight ss
program, I would feel more comfortible.
Left to my own devices, I would recommend giving a fellowship or
RAship (if we have either) to Jackson and putting Gulzeldere and then
Lawlor on the waiting list. Though I think Jackson would accept, and
if he didn't, then I am almost positive G would, since I get a
computer message from him every few days. My inclination would be to
turn Leong down, for the reasons mentioned.
--------
There is also one regular applicant in philosophy who would be among
the top two here if she had applied for the SS track. That is, I
think I would have ranked her second. But she does not want to apply
for the tack, either because she wants to keep her options open, or
because she realizes she has a better chance in a bigger pool with
more fellowships. She is:
Teresa Robertson, top student in some years in phil from Univ of
Washington, not as much work in c.s. as the top two above, but
fantastic letters and grades. GRE 91/98/99. My bet is she will get
into the top 10 and probably get an offer. If not, I would consider
pushing her to our number 2. I suspect her work would be in some
aspect of ss, but she is not now as focued as either (1) or (2) above.
If you would like to look at the files, go to the phil office and
identify yourself to Marti Lacey, and ask for the ss files. Of if you
know anything about any of these candidates by some other route, let
me know. I would appreciate any comments I can get.
Thanks,
Jon
∂13-Feb-89 1404 lansky@ai.sri.com AI-RR SEMINAR REMINDER -- TUESDAY AT 2PM
Received: from Warbucks.AI.SRI.COM ([128.18.3.1]) by SAIL.Stanford.EDU with TCP; 13 Feb 89 14:04:45 PST
Received: from venice.ai.sri.com by Warbucks.AI.SRI.COM with INTERNET ;
Mon, 13 Feb 89 13:40:54 PST
Received: by venice.ai.sri.com (3.2/4.16)
id AA20534 for planlunch@ai.sri.com; Mon, 13 Feb 89 13:40:56 PST
Date: Mon 13 Feb 89 13:40:55-PST
From: LANSKY@Warbucks.AI.SRI.COM (Amy Lansky)
Subject: AI-RR SEMINAR REMINDER -- TUESDAY AT 2PM
To: planlunch@Warbucks.AI.SRI.COM
Message-Id: <603409255.0.LANSKY@VENICE.ARPA>
Mail-System-Version: <SUN-MM(229)+TOPSLIB(128)@VENICE.ARPA>
VISITORS: Please arrive 5 minutes early so that you can be escorted up
from the E-building receptionist's desk. Thanks!
-----------------------------------------------------------------------
A THREE-LEVEL THEORY OF REASONING
Wlodek Zadrozny (WLODZ@IBM.COM)
IBM T.J.Watson Research Center
2:00 PM, TUESDAY, February 14
SRI International, Building E, Room EJ228
In this talk we present a three-level theory of reasoning; we also
sketch some applications to semantics of natural language. In this
theory knowledge bases containing defaults are understood not as sets
of formulas (rules and facts) but as collections of partially ordered
theories. As a result of this shift of perspective we obtain a rather
natural logical system in which priorities in interpretation of
predicates are the source of nonmonotonicity in reasoning. In our
formalization, the usual, two-part logical structures, consisting of a
metalevel and an object level, are augmented by a third level -- a
referential level. The referential level is a partially ordered
collection of default theories -- it contains a more permanent part of
a knowledge base; current situations are described on the obect level;
the metalevel is a place for rules that can eliminate some of the
models permitted by the object level and the referential level. We
also prove basic results about derivability in this system. Finally,
commonsense conclusions of an object theory can be identified with
sentences true in a set of models specified by this three-level
semantics.
-------
∂13-Feb-89 2001 misha@polya.Stanford.EDU AFLB tomorrow at 11 am!
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 13 Feb 89 20:01:31 PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA06884; Mon, 13 Feb 89 19:56:31 -0800
Date: Mon, 13 Feb 89 19:56:31 -0800
From: Michael Kharitonov <misha@polya.Stanford.EDU>
Message-Id: <8902140356.AA06884@polya.Stanford.EDU>
To: aflb-all@polya.Stanford.EDU
Subject: AFLB tomorrow at 11 am!
Sorry for the short notice - I just noticed that
my earlier posting bounced back.
Mauricio Karchmer will speak at AFLB tomorrow, Feb 14.
Please note UNUSUAL TIME: the talk will be at 11 am in room 352.
Communication Complexity & Circuit Complexity
Mauricio Karchmer
University of Toronto
Three approaches to the $NC↑1$ vs. $P$ question will be presented.
All three approaches are based on the equivalence between
circuit depth and some problems in communication complexity.
We are going to motivate each of the approaches and state intermediate
questions that may give ideas for the general problem.
----------------------------------------------------------------------
Zvi Galil from Columbia University will be speaking at AFLB next week.
∂13-Feb-89 2222 @Score.Stanford.EDU:jle@Orange.stanford.edu CS Colloquium/Forsythe Lecture
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 13 Feb 89 22:22:32 PST
Received: from Orange.stanford.edu by SCORE.STANFORD.EDU with TCP; Mon 13 Feb 89 22:15:31-PST
Received: by Orange.stanford.edu (5.59/25-eef) id AA02720; Mon, 13 Feb 89 22:16:03 PDT
Date: Mon, 13 Feb 89 22:16:03 PDT
From: Jeffrey Eppinger <jle@Orange.stanford.edu>
Message-Id: <8902140616.AA02720@Orange.stanford.edu>
To: csd-list@score
Subject: CS Colloquium/Forsythe Lecture
Reminder: the next CS Colloquium will be (today) February 14th.
This colloquium is also the second of this year's Forsythe Lectures.
Computer Science Colloquium
Tuesday, February 14, 1989, 4:15pm
Jordan Hall (Building 420), Room 040
Stanford University
Perception via Active Exploration
Examples of Disassembly
Ruzena Bajcsy
Computer and Information Science Department
University of Pennsylvania
Philadelphia, PA 19104-6389
Abstract
It has been accepted by most psychologists (e.g., Gibson) that perception
is an active process, that is, an interaction of the perceptual system with
its environment. In this presentation we shall limit the perceptual system
to only two modalities: the Visual and the Haptic. The goal of our work is
to answer *what are the primitive actions and attributes* that are measurable
and or computable from Visual and Haptic modality that are necessary for
dissassembly of a scene or a two part-object. While a great deal of attention
has been paid to visual information processing both in psychological and
machine perception literature, haptic processing always took the second seat.
Haptic information processing is the identification of objects by touch (the
use of kinesthetic and tactile information). We shall develop a theory and
present two experiments to show an existential proof of our theory. Another
obvious observation is that vision is limited, especially in discerning two
separate objects when touching from the case of part-whole relationship of
one object. Take an example of a cup on a saucer. From vision alone one
cannot establish whether the saucer is glued to the cup or the cup is just
sitting on the saucer. The only way to disambiguate this situation is to
pick up the cup or shake it, in other words to perform some manipulation
operation.
The goal of this research is perception (apprehension) via exploration.
This means to us data driven perception which results in discerning solid
separable objects and describing them in terms of their structural and
geometric properties. Our aim is to explore complex scenes composed of more
than one object in arbitrary positions. Our basic hypothesis is that this
cannot be done by vision alone, that one needs some possibilities of
manipulation and the use of haptic information processing. Much of our
stimulation, especially in the area of haptic information processing, comes
from the studies and discussions of Klatzky and Lederman.
∂14-Feb-89 0309 hoffman@csli.Stanford.EDU The Symbolic Systems Forum, Feb. 17th
Received: from csli.Stanford.EDU by SAIL.Stanford.EDU with TCP; 14 Feb 89 03:09:28 PST
Received: by csli.Stanford.EDU (4.0/inc-1.0)
id AA16508; Tue, 14 Feb 89 02:59:54 PST
Date: Tue 14 Feb 89 02:59:53-PST
From: Reid Hoffman <HOFFMAN@CSLI.Stanford.EDU>
Subject: The Symbolic Systems Forum, Feb. 17th
To: ThisWeeksForum@csli.Stanford.EDU
Message-Id: <603457193.0.HOFFMAN@CSLI.Stanford.EDU>
Mail-System-Version: <SUN-MM(242)+TOPSLIB(128)@CSLI.Stanford.EDU>
The Symbolic Systems Forum
presents
Professor David Wellbery (German Studies)
on
Semiotics
However, the idea of this talk will be to explain why Symbolic Systems should
consider the Humanities as a part of its major. There has been much work on
symbols, symbolism, meaning, interpretation and much more in the Humanities
(principally Semiotics, Literary Theory, and Symbolic Anthropology), which
researchers and students in Symbolic Systems could use and might miss
otherwise. On the other hand, as in every case of collaboration, these
Humanities disciplines also stand to gain great benefit from ideas within
technical Symbolic Systems. In this vein, Professor Wellbery hopes to hold an
informal discussion in which he will present some ideas Semiotics and
attempt to justify collaboration through exploring the possibilities of
dialogue between the technical and humanities sides of Symbolic Systems.
Time: Friday 3:15, Feb 17th
Place: Building 60, room 62n.
The talk is open to the general public.
-------
∂14-Feb-89 0904 @Score.Stanford.EDU:chandler@polya.Stanford.EDU Faculty Lunch
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 14 Feb 89 09:04:48 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Tue 14 Feb 89 09:01:37-PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA23762; Tue, 14 Feb 89 08:59:37 -0800
Date: Tue, 14 Feb 1989 8:59:30 PST
From: "Joyce R. Chandler" <chandler@polya.stanford.edu>
To: faculty@score, bureaucrats@score
Cc: staff-rep@score
Subject: Faculty Lunch
Message-Id: <CMM.0.87.603478770.chandler@polya.stanford.edu>
Everything is set for another great discussion about the PhD program. The
room has been reserved (MJH-146), the time set (12:15), the caterer alerted
(you'll have to come to find out what the special of the day will
be)......all that's needed is for you to come on down and join in on today's
faculty lunch.
Will the bureaucrats please alert interested PhD students to join in?
∂14-Feb-89 0922 X3J13-mailer X3J13/ISO overlap
Received: from lucid.com by SAIL.Stanford.EDU with TCP; 14 Feb 89 09:22:21 PST
Received: from challenger ([192.9.200.17]) by heavens-gate.lucid.com id AA00787g; Tue, 14 Feb 89 09:16:35 PST
Received: by challenger id AA02286g; Tue, 14 Feb 89 09:12:12 PST
Date: Tue, 14 Feb 89 09:12:12 PST
From: Jan Zubkoff <jlz@lucid.com>
Message-Id: <8902141712.AA02286@challenger>
To: x3j13@sail.stanford.edu
Subject: X3J13/ISO overlap
ISO will be meeting at the following times:
Thursday, 3/30 2:00 - 6:00
Friday, 3/31 9:00 - 5:00
Saturday, 4/1 9:00 - 1:00, if necessary (determined at Friday's meeting)
All meetings will be held at CONTEL.
---jan---
∂14-Feb-89 1012 aaai@sumex-aim.stanford.edu Next Council Meeting
Received: from sumex-aim.stanford.edu by SAIL.Stanford.EDU with TCP; 14 Feb 89 10:12:35 PST
Received: by sumex-aim.stanford.edu (4.0/inc-1.0)
id AA04449; Tue, 14 Feb 89 10:04:39 PST
Date: Tue, 14 Feb 1989 10:04:38 PST
From: AAAI <aaai@sumex-aim.stanford.edu>
To: officers:;@sumex-aim.stanford.edu
Cc: aaai@sumex-aim.stanford.edu
Subject: Next Council Meeting
Message-Id: <CMM.0.88.603482678.aaai@sumex-aim.stanford.edu>
We've scheduled the next Council meeting for Thursday, March 30 in room
220 in Margaret Jacks Hall at Stanford University at 1:30 pm.
Please RSVP because we will be serving lunch at that time.
-Claudia
∂14-Feb-89 1226 X3J13-mailer Copying and Equality paper
Received: from Think.COM by SAIL.Stanford.EDU with TCP; 14 Feb 89 12:25:55 PST
Return-Path: <barmar@Think.COM>
Received: from sauron.think.com by Think.COM; Tue, 14 Feb 89 15:18:15 EST
Received: from OCCAM.THINK.COM by sauron.think.com; Tue, 14 Feb 89 15:20:39 EST
Date: Tue, 14 Feb 89 15:23 EST
From: Barry Margolin <barmar@Think.COM>
Subject: Copying and Equality paper
To: x3j13@sail.stanford.edu
Message-Id: <19890214202339.8.BARMAR@OCCAM.THINK.COM>
Last month I distributed a draft of a paper on Copying and Equality at
the X3J13 meeting, hoping to get comments before I submit it to Lisp
Pointers. I got one verbal comment at the meeting, but I've received
nothing since. I'd like to work on it some more soon, so if you've got
any comments, please send them.
barmar
∂14-Feb-89 1235 SLOAN@Score.Stanford.EDU
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 14 Feb 89 12:34:57 PST
Date: Tue 14 Feb 89 12:20:05-PST
From: Yvette Sloan <SLOAN@Score.Stanford.EDU>
To: csd@Score.Stanford.EDU, csd-list@Score.Stanford.EDU
Message-ID: <12470674334.24.SLOAN@Score.Stanford.EDU>
Departmental offices will close at 4:15 p.m. on Thursday, February 16, 1989
so that all may attend the Forum reception. Looking forward to seeing you
there.
***************************************************************************
**FORUM RECEPTION**
DATE: Thursday, February 16, 1989
TIME: 4:30-6:00 p.m.
PLACE: Faculty Club -- Red and Gold Lounges
-------
∂14-Feb-89 1240 @Score.Stanford.EDU:jle@Orange.stanford.edu Milk & Cookies
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 14 Feb 89 12:40:01 PST
Received: from Orange.stanford.edu by SCORE.STANFORD.EDU with TCP; Tue 14 Feb 89 12:08:56-PST
Received: by Orange.stanford.edu (5.59/25-eef) id AA03129; Tue, 14 Feb 89 12:09:28 PDT
Date: Tue, 14 Feb 89 12:09:28 PDT
From: Jeffrey Eppinger <jle@Orange.stanford.edu>
Message-Id: <8902142009.AA03129@Orange.stanford.edu>
To: faculty@score, students@score
Subject: Milk & Cookies
The traditional milk and cookies that precede the CS Colloquium
will be consumed today at 3:45pm in the 3rd floor MJH lounge.
Jeff.
∂14-Feb-89 1318 snoeyink@polya.Stanford.EDU Bats Speakers and Abstracts
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 14 Feb 89 13:18:32 PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA03809; Thu, 2 Feb 89 18:13:59 -0800
Date: Thu, 2 Feb 89 18:13:59 -0800
From: Jack Snoeyink <snoeyink@polya.Stanford.EDU>
Message-Id: <8902030213.AA03809@polya.Stanford.EDU>
To: aflb-local@polya.Stanford.EDU
Subject: Bats Speakers and Abstracts
Bats is Friday, Feb 10 at Berkeley.
The schedule is as follows:
10:10 Dorit Hochbaum (Berkeley): The Complexity of Integer Nonlinear
Optimization over Linear Polytopes
11:10 Peter Gacs (Boston University and IBM Almaden Research Center)
Self-correcting and self-organizing cellular arrays
12:10 Ashok Subramanian (Stanford) The Complexity of Circuit
Value and Network Stability
1:10 Seffi Naor (Stabford) Maximum Flow in Networks with Many
Sources and Sinks
---------------------------------------------------------------------
The complexity of integer nonlinear optimization over linear polytopes.
Dorit Hochbaum
University of California, Berkeley
We prove that concave separable objective optimization problems on
linear polytopes with polynomially bounded subdeterminants of the
constraint matrix can be solved in polynomial time. The integer
version of this problem is also solvable in polynomial time in the
same parameters, if the corresponding integer linear problem is
solvable in polynomial time (the algorithm will require a single
call to a routine that solves a linear integer problem on the same
polytope).
An important corollary is that nonlinear integer optimization with
concave (convex) separable objective function over a polytope
defined by a totally unimodular constraint matrix is a polynomial
problem. The running time of the algorithm is polynomial but not
strongly polyomial. It depends on the logarithm of the right hand
side vector in the constraint set. We provide a lower bound proof
to show that this problem cannot be solved in strongly polynomial
time. This is in contrast to the linear integer optimization over
a totally unimodular constraint matrix which is solvable in strongly
polynomial time (Tardos 86).
A special case of this problem is the integer nonlinear resource
allocation problem. We provide a algorithm for this problem which
is best possible for a certain class of such problems in that its
running time is equal to the lower bound on this problem's complexity.
For the quadratic separable case of this problem we describe a
strongly polynomial algorithm.
---------------------------------------------------------------------
Self-correcting and self-organizing cellular arrays
Peter Gacs
Boston University and IBM Almaden Research Center
A computer in the future may be just a large crystal of smart
molecules grown artificially. The components work according to
a probabilistic transition rule in continuous time. All
non-uniformity in structure is created by the machine itself,
responding to the demands of the computation to be carried out. One
can also arrive to the problems of reliability and self-organization
presented by the above requirement starting from an interest in the
origins of life. A soup of chemical ingredients, in a noisy
environment, started organizing itself and became able to carry out
larger and larger computations reliably. No hypotheses will be
stated on how this actually happened in nature, nor practical designs
offered of reliable computing molecules. But an example of a
transition rule will be given that provably satisfies all the
requirements. Its organizational principles are therefore worth
studying both for the design of future reliable computers and for
ideas on understanding biological evolution.
The new construction builds on earlier experience with reliable
cellular automata. Self-organization and continuous time are new, as
well as the primitive concepts allowing a modular design that is
easier to analyze.
---------------------------------------------------------------------------
The Complexity of Circuit Value and Network Stability
Ashok Subramanian
The Circuit Value problem asks for the output of an acyclic network of
boolean gates, given its inputs. The Network Stability problem asks if a
given network, possibly cyclic, of boolean gates has stable configurations.
(A stable configuration of a network is an assignment of truth values to
the edges of the network that respects all the gate equations.) We study
the complexity of these problems as a function of the kinds of gates
allowed in the network. In our model, gates may have many outputs, but no
fanout is allowed outside gates. This model permits the study of the effect
of fanout on the complexity of the above problems. The results: If the
gates do not `preserve adjacency' (in other words, if they can `make
copies' of their inputs), the problems are usually complete for a standard
complexity class like P or NP. But if the gates preserve adjacency, we get
new classes of problems, classes that lie between Logspace and P, but seem
incomparable to the parallel complexity class NC.
We identify an interesting subset of the adjacency-preserving gates, those
that lack `scatter'. Intuitively, a gate lacks scatter if it is never
possible for a small number of inputs to influence a larger number of
outputs. We give a linear time algorithm for the network stability problem
over scatter-free networks, and an O*(sqrt(n)) time algorithm for
scatter-free circuit value.
One of the most fundamental of the new classes is the class CC. Problems
complete for CC include Comparator Circuit Value, Lexicographically-first
Maximal Matching, and problems related to Stable Matching. Our approach to
Stable Matching is to regard it as a network stability problem. This
approach yields fresh insights and new algorithms.
(This work represents work done towards my doctoral dissertation, under the
direction of Ernst Mayr.)
---------------------------------------------------------------------------
Seffi Naor
Stanford University
The problem of maximum flow in planar graphs was always investigated
under the assumption that there is only one source and one sink.
We are going to consider the case where there are many sources and sinks in
a directed planar graph.
An algorithm for the case when the demands of the sources
and sinks are known will be presented which
can be implemented in parallel in $O(\log ↑2n)$ time
using $O(n↑{1.5})$ processors, and in sequential $O(n↑{1.5})$ time.
It uses a novel idea of redirecting
the flow back from the sinks to the sources and then reducing the problem to
that of computing a circulation.
If the demands are not known, we will show how to compute the max flow
in the special case when the sources and sinks are on
the same face.
This result has two applications:
it places the problem of computing a perfect matching in a planar
bipartite graph in NC; it improves a previous parallel
algorithm for the case of a single source, single sink in a planar
directed (and undirected) graph,
both in terms of time complexity and processor bound,
and in its simple presentation.
This is joint work with Gary Miller.
∂14-Feb-89 2115 LOGMTC-mailer "Categories for working logicians"
Received: from csli.Stanford.EDU by SAIL.Stanford.EDU with TCP; 14 Feb 89 21:15:27 PST
Received: by csli.Stanford.EDU (4.0/inc-1.0)
id AA15752; Tue, 14 Feb 89 21:13:32 PST
Date: Tue 14 Feb 89 21:13:31-PST
From: Sol Feferman <SF@CSLI.Stanford.EDU>
Subject: "Categories for working logicians"
To: logic@csli.Stanford.EDU
Message-Id: <603522811.0.SF@CSLI.Stanford.EDU>
Mail-System-Version: <SUN-MM(242)+TOPSLIB(128)@CSLI.Stanford.EDU>
In Spring Quarter I plan to devote my Topics in Logic course to "Categories
for working logicians", mainly because they are part of the current culture
in logic and its applications that every logician should know something
about. I do not plan to hold a regular Logic Seminar, and this will free
up some time. There will probably be a related, but non-overlapping course
to be offered in the Computer Science Dept. by Eugenio Moggi, who will be
visiting from Edinburgh. We shall assume common background, namely
Chs. I-III in the book "Categories for the working mathematician" by
S. Mac Lane (or equivalent material). Tentative topics:
1. Review of basic category theory (categories, functors, limits, closure
conditions).
2. Topoi and sheaf models for intuitionistic theories.
3. Dilators (Girard's theory of ordinal functors) and PI-1-2 Logic.
4. Foundations of category theory.
In order to get through anything like the above amount of material, we
shall have to reduce detailed proofs to a minimum and concentrate on
concepts and examples and statements of results. Later in the quarter,
students may be asked to make seminar-type presentations.
The course is currently scheduled to meet TuTh 1:15-2:30, but another
possibility is MW 4:15-5:30. Please let me know if you're interested
and which time you prefer. Not limited to students, but meant for them.
If you have no background in category theory now's the time to start
picking it up.
S. Feferman
-------
∂15-Feb-89 0953 @Score.Stanford.EDU:chandler@polya.Stanford.EDU CSD Retreat
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 15 Feb 89 09:53:34 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Wed 15 Feb 89 09:50:21-PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA15330; Wed, 15 Feb 89 09:51:00 -0800
Date: Wed, 15 Feb 1989 9:50:20 PST
From: "Joyce R. Chandler" <chandler@polya.stanford.edu>
To: faculty@score
Cc: chandler@polya.Stanford.EDU
Subject: CSD Retreat
Message-Id: <CMM.0.87.603568220.chandler@polya.stanford.edu>
The dates for the CSD faculty retreat have been set for May 5-6-7, 1989. The
retreat will again be held at Chaminade at Santa Cruz.
Nils is still thinking about the technical part of the program but would also
like to talk about strategic issues of importance to the Department. Please
send to me (chandler@polya) any suggestions you might have about the latter
topic.
The special rate Chaminade has offered us at this time will be $130.00 per
person, double occupancy and $195.00 per person, single occupancy. The
Department will pay for a double room. If you prefer a single please let me
know what account to charge the difference to.
I realize it is still quite early, but firm reservations must be made soon so
please let me know, as soon as possible, what accommodations you prefer.
∂15-Feb-89 1200 LOGMTC-mailer Thurs seminar
Received: from ra.stanford.edu by SAIL.Stanford.EDU with TCP; 15 Feb 89 12:00:53 PST
Received: by ra.stanford.edu (5.59/25-eef) id AA00159; Wed, 15 Feb 89 11:59:22 PDT
Date: Wed, 15 Feb 89 11:59:22 PDT
From: John Mitchell <jcm@ra.stanford.edu>
Message-Id: <8902151959.AA00159@ra.stanford.edu>
To: logmtc@sail
Subject: Thurs seminar
The Thurs lambda calculus and programming language theory
seminar will continue this week with an introduction to
logical relations. Handouts may be picked up in Rosemary
Napier's office (MJH 340) this week, or on Thursday.
∂15-Feb-89 1209 @Score.Stanford.EDU:tom@polya.Stanford.EDU Epoch Systems server/archive
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 15 Feb 89 12:09:15 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Wed 15 Feb 89 12:05:32-PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA23918; Wed, 15 Feb 89 12:06:42 -0800
Date: Wed, 15 Feb 89 12:06:42 -0800
From: Tom Dienstbier <tom@polya.Stanford.EDU>
Message-Id: <8902152006.AA23918@polya.Stanford.EDU>
To: faculty@polya.Stanford.EDU, csd@polya.Stanford.EDU,
su-computers@polya.Stanford.EDU, admin@polya.Stanford.EDU
Subject: Epoch Systems server/archive
Reminder to come to the presentation on a new file/archive server
by Epoch Systems in room 252 building 460 at 1:30 to 3:00.
Tom Dienstbier
∂15-Feb-89 1451 TAJNAI@Score.Stanford.EDU Computer Forum Reception
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 15 Feb 89 14:51:08 PST
Date: Wed 15 Feb 89 14:37:33-PST
From: Carolyn Tajnai <TAJNAI@Score.Stanford.EDU>
Subject: Computer Forum Reception
To: csl-everyone@Sierra.Stanford.EDU, csd-list@Score.Stanford.EDU
Message-ID: <12470961503.15.TAJNAI@Score.Stanford.EDU>
Faculty, Staff, Students, and Friends
of the
Computer Science Department
and the
Computer Systems Laboratory
are invited to
attend the
Stanford Computer Forum Reception
which closes our
Twenty-first Annual Conference
Faculty Club -- Red and Gold Lounges
Thursday, February 16, 1989
4:30 - 6:00pm
-------
∂15-Feb-89 1541 barwise@russell.Stanford.EDU courses for next year
Received: from russell.Stanford.EDU by SAIL.Stanford.EDU with TCP; 15 Feb 89 15:40:57 PST
Received: from localhost by russell.Stanford.EDU (4.0/inc-1.0)
id AA14704; Wed, 15 Feb 89 15:42:02 PST
Message-Id: <8902152342.AA14704@russell.Stanford.EDU>
To: ssp-faculty@russell.Stanford.EDU
Subject: courses for next year
Date: Wed, 15 Feb 89 15:41:59 PST
From: Jon Barwise <barwise@russell.Stanford.EDU>
Be sure to keep SSP in mind as your department schedules classes
for next year. This year we ran into some pretty bad conflicts.
Helen is preparing our "wish list" for when courses would be given.
Thanks for your help.
∂15-Feb-89 1656 HEMENWAY@Score.Stanford.EDU The Last Batch
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 15 Feb 89 16:56:29 PST
Date: Wed 15 Feb 89 16:53:56-PST
From: Sharon Hemenway <HEMENWAY@Score.Stanford.EDU>
Subject: The Last Batch
To: phd-adm@Score.Stanford.EDU
Message-ID: <12470986329.12.HEMENWAY@Score.Stanford.EDU>
This is just a reminder (to those of you haven't already returned your
last batch) that even though we are not giving out another batch of
applications tomorrow, I still need the rated folders you have now
back as early as possible tomorrow (Thursday) morning. I can't begin
to prepare the necessary reports for our Monday meeting until I have
entered all of the ratings from the last batch so the earlier I have
all of the folders back, the better.
Anyway...you get the picture...thanks for your help.
See you all Monday at 3:00 in MJH 252 (please keep in mind that since
it is an official University holiday, the outside doors will be
locked).
Sharon
-------
∂16-Feb-89 0427 barwise@russell.Stanford.EDU grad courses and seminars
Received: from russell.Stanford.EDU by SAIL.Stanford.EDU with TCP; 16 Feb 89 04:26:57 PST
Received: from localhost by russell.Stanford.EDU (4.0/inc-1.0)
id AA17417; Thu, 16 Feb 89 04:28:12 PST
Message-Id: <8902161228.AA17417@russell.Stanford.EDU>
To: ssp-faculty@russell.Stanford.EDU
Subject: grad courses and seminars
Date: Thu, 16 Feb 89 04:28:11 PST
From: Jon Barwise <barwise@russell.Stanford.EDU>
To the consulting faculty:
This is the time when courses are being planned for next year.
I would like to encourage the ss consulting faculty to step forward
and volunteer to give a course or seminar at any level from
introductory for undergraduates, to the most advances, for
graduate students.
If we are going to have the graduate program, we really need some help
with graduate courses. As the list of propspective students shows,
the main interest in {AI,philosophy}. These are REALLY bright
students, and they could bring a lot to the field. But only if there
is faculty support for them. And given the field, this is not
something the regular members of the philosophy department can
provide. So before I recommend accepting any of them, I want to be
sure there is the support from the relavant faculty, including
consulting faculty.
You are all consulting faculty in SS, so courses can be given through
there. Just offer, and we will list the courses. Or you can also
do it through your home departments, and we will cross list. But
please don't be coy. We need your help. And I need to know more or
less immediately that there is support, and in the next two weeks what
courses or seminars you are willing to offer.
Thanks for your help.
Jon
∂16-Feb-89 0431 barwise@russell.Stanford.EDU Re: grad courses and seminars
Received: from russell.Stanford.EDU by SAIL.Stanford.EDU with TCP; 16 Feb 89 04:31:21 PST
Received: from localhost by russell.Stanford.EDU (4.0/inc-1.0)
id AA17447; Thu, 16 Feb 89 04:32:05 PST
Message-Id: <8902161232.AA17447@russell.Stanford.EDU>
Cc: ssp-faculty@russell.Stanford.EDU
Subject: Re: grad courses and seminars
In-Reply-To: Your message of Thu, 16 Feb 89 04:28:11 PST.
<8902161228.AA17417@russell.Stanford.EDU>
Address: CSLI, Stanford University, Stanford, CA 94305 (415) 723-0110
Date: Thu, 16 Feb 89 04:32:02 PST
From: Jon Barwise <barwise@russell.Stanford.EDU>
Sorry for all the typos in the previous message. It is too early in
the morning for typing. But I trust you get the idea.
Jon
∂16-Feb-89 0859 GOTELLI@Score.Stanford.EDU New Rates for Polya
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 16 Feb 89 08:59:03 PST
Date: Thu 16 Feb 89 08:40:16-PST
From: Lynn Gotelli <GOTELLI@Score.Stanford.EDU>
Subject: New Rates for Polya
To: Faculty@Score.Stanford.EDU, CSD@Score.Stanford.EDU
Message-ID: <12471158606.9.GOTELLI@Score.Stanford.EDU>
Retroactive to 1/1/89 CF has approved new and lower rates for Polya.
CF has been able to adjust the rates for Polya because actual usage
has exceeded our original estimated usage figures. All other rates
remain the same. Following are new rates for Polya:
COMPUTER SCIENCE DEPARTMENT COMPUTER FACILITIES
SERVICE CENTER RATES
1/1/89
TIME WEEKDAY WEEKEND
--------- --------- ---------
"A" RATES = 100% 0000-0800 C C
"B" RATES = 66.67% * "A" RATE 0800-1300 A C
"C" RATES = 33.33% * "A" RATE 1300-1800 A B
1800-2400 B C
-------TIME OF DAY RATES---------
"A" RATES "B" RATES "C" RATES FIXED RATES
--------- --------- --------- -----------
Polya
Account charge Accts @ 5.00
Connect time hours @ 0.10 0.07 0.03
CPU time Minutes @ 1.17 0.78 0.39
Disk space Mbits/Mo @ 1.11
-------
∂16-Feb-89 0905 hyde@csli.Stanford.EDU csli calendar, Feb. 16, 4:16
Received: from csli.Stanford.EDU by SAIL.Stanford.EDU with TCP; 16 Feb 89 09:04:56 PST
Received: by csli.Stanford.EDU (4.0/inc-1.0)
id AA25218; Thu, 16 Feb 89 08:15:26 PST
Date: Thu, 16 Feb 89 08:15:26 PST
From: hyde@csli.Stanford.EDU (Dawn Hyde)
Message-Id: <8902161615.AA25218@csli.Stanford.EDU>
To: emma@csli.Stanford.EDU
Subject: csli calendar, Feb. 16, 4:16
C S L I C A L E N D A R O F P U B L I C E V E N T S
_____________________________________________________________________________
16 February 1989 Stanford Vol. 4, No. 16
_____________________________________________________________________________
A weekly publication of The Center for the Study of Language and
Information, Ventura Hall, Stanford University, Stanford, CA 94305
____________
CSLI ACTIVITIES FOR THIS THURSDAY, 16 February 1989
12 noon TINLunch
Cordura Hall Defeasible Reasoning and Nonmonotonic
Conference Room (and worse) Inference Relations:
A Little Philosophy; A Little AI; A Little Logic
David Israel
(israel@ai.sri.com)
Abstract below
2:15 p.m. CSLI Seminar
Cordura Hall Overview of the German Research Center for AI
Conference Room Gerhard Barth
German Research Center for AI
Abstract below
3:30 p.m. Tea
Ventura Hall
____________
THIS WEEK'S TINLUNCH
Defeasible Reasoning and Nonmonotonic
(and worse) Inference Relations:
A Little Philosophy; A Little AI; A Little Logic
David Israel
16 February
Starting about a decade ago, researchers in Artificial Intelligence
began to formalize certain oddly behaved, in particular nonmonotonic,
inference patterns. Some of these, e.g., Reiter's logic for default
reasoning, modeled features of actually existing computational
systems; others, such as circumscription, were presented as capturing
important features of actual, human common-sense reasoning. In both
kinds of case, the phenomenon under consideration has something to do
with what philosophers have called `defeasible reasoning.'
The latter will be very briefly characterized. We shall then move
on to recent attempts by logicians Dov Gabbay, on the one hand, and
David Makinson, on the other, to give abstract axiomatic accounts of a
variety of these nonmonotonic inference relations. These will be
described and some important results mentioned. A few questions will
be raised about what such inference relations have to do with
defeasible reasoning. `Many' fewer answers will be suggested.
____________
THIS WEEK'S SEMINAR
Overview of the German Research Center for AI
Gerhard Barth
German Research Center for AI
16 February
The German Research Center for AI was founded just recently. In this
talk, an overview of its structure, organization, and short-term
research program will be presented. One of the research projects that
has already been started is concerned with knowledge-based
presentation of information. Some specific issues of this project
will be discussed in the second half of the talk.
____________
LINGUISTICS DEPARTMENT COLLOQUIUM
A Typology of Possible Morphophonological Change
Bill J. Darden
University of Chicago
Friday, 17 February, 3:15
Cordura Hall Conference Room
Morphonological rules, being phonologically unmotivated, can be seen as
creating formal and semiotic problems. They have to be learned and
they create unmotivated allomorphy. They also may serve as auxiliary
signs themselves. Changes can generally be classified as those that
solve the problems or those that enhance the sign value of the
alternation. These changes indicate the close ties of
morpho-phonology to morphology. Other changes indicate close ties
with phonology. There are phonologically motivated adjustments in
morphonological rules, and morphologically motivated adjustments
in phonological rules (which may result in the elimination
of the rules). Ultimately, however, the phonologically motivated
changes can be interpreted as morphologically motivated, and the
morphological influence on phonological rules can be limited to the
morphological aspect (the input).
_____________
SYMBOLIC SYSTEMS FORUM
Semiotics
David Wellbery
German Studies
Friday, 17 February, 3:15
Room 60:61G
David Wellbery will explain why symbolic systems should consider the
humanities as a part of its major. There has been much work on
symbols, symbolism, meaning, interpretation, and much more in the
humanities (principally semiotics, literary theory, and symbolic
anthropology), which researchers and students in symbolic systems
could use and might miss otherwise. On the other hand, as in every
case of collaboration, these humanities disciplines also stand to gain
great benefit from ideas within technical symbolic systems. In this
vein, Professor Wellbery hopes to hold an informal discussion in which
he will present some ideas about semiotics and attempt to justify
collaboration.
___________
THE HISTORICAL LINGUISTICS INTEREST GROUP
The Diachronic Typology of Possessives
Dr. Vjacheslav V. Ivanov
Professor of History of Culture, Moscow University
Thursday, 23 February, 5:30
Ventura Hall Seminar Room
Refreshments will be served at 5:00.
____________
SYMBOLIC SYSTEMS FORUM
Turing's Oracle
Solomon Feferman
Department of Mathematics
Friday, 24 February, 3:15
Room 60:62N
____________
LINGUISTICS DEPARTMENT COLLOQUIUM
Cross-Linguistic Properties
of Anaphoric Systems
Peter Sells
Department of Linguistics
Friday, 24 February, 3:30
Cordura Hall Conference Room
____________
∂16-Feb-89 1302 @Score.Stanford.EDU:katiyar@polya.Stanford.EDU WINTER POTLUCK
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 16 Feb 89 13:02:22 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Thu 16 Feb 89 12:50:11-PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA23418; Thu, 16 Feb 89 12:51:38 -0800
Date: Thu, 16 Feb 1989 12:51:35 PST
Sender: "Dinesh H. Katiyar" <katiyar@polya.stanford.edu>
From: Social Committee <katiyar@polya.stanford.edu>
To: faculty@score, research-associates@score, secretaries@score,
students@score
Subject: WINTER POTLUCK
Message-Id: <CMM.0.87.603665495.katiyar@polya.stanford.edu>
*************************************************************************
********************* 1989 WINTER QUARTER POTLUCK **********************
*************************************************************************
It's potluck time again !!
This time it's at Prof. Vaugh Pratt's place at 12 noon on the 26th of
February. Directions to his house are given below.
All faculty, staff, students (Ph.D.,Masters and Undergrads) and their
guests are welcome.
If you wish to come, edit the potluck database by typing " ~katiyar/food "
on polya and follow the directions.
Those of you who don't have accounts on polya can send mail to one
of the members of the social committee.
Please respond as soon as possible.
The map for Vaughn's house:
_________________________________________________| |__________________________
__________________________________Foothill______Light______Expressway_________
Vaughan and Margot Pratt |P|
Street address: 2215 Gerth Lane /.a|.....one way - no entry to
Los Altos Hills //|g| Old Page Mill Road
Phone: 494-2545 // |e|
<PO address: 2215 Old Page Mill Rd. // | |
Palo Alto, CA 94304> Old || |M|
DIRECTIONS Page|| |i|
Take Page Mill to near 280 Mill|| |l|
Follow sign to Old Page Mill Road Road|| |l|
Gerth Lane has row of mailboxes............|| Light_________________________
:|| |E --------------------------
Cross bridge........................... :|| |x| Deer Creek Road
2215 is second on left....... : :|| |p|
: : :|| |w|
Gerth Lane : : :|| |y| only entry to
=================:=========#===:= === .!.....Old Page Mill Road
2215 2209 M \\ | | and Gerth Lane
<not to scale> \\| |
\ |
_________________________________________________| |_________________________
_<--SF______________________Route 280____________ _____________________SJ-->
*************************************************************************
Student Social Committee
------------------------
jennifer anderson jaikumar ramanathan dinesh katiyar
anderson@polya jaikumar@polya katiyar@polya
*************************************************************************
∂16-Feb-89 1657 @Score.Stanford.EDU:goldberg@Jinn.stanford.edu Needed: Industrial Lecturers
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 16 Feb 89 16:57:31 PST
Received: from Jinn.stanford.edu by SCORE.STANFORD.EDU with TCP; Thu 16 Feb 89 16:46:57-PST
Received: by Jinn.stanford.edu (4.0/25-eef) id AA01040; Thu, 16 Feb 89 16:47:55 PST
Date: Thu, 16 Feb 89 16:47:55 PST
From: Andrew Goldberg <goldberg@Jinn.stanford.edu>
Message-Id: <8902170047.AA01040@Jinn.stanford.edu>
To: faculty@score
Subject: Needed: Industrial Lecturers
We are still in the process of looking for Industrial Lecturers for
the next year. The best candidates are probably the ones who are known
to the CS faculty. If you know someone who will make a great Industrial
Lecturer and who may be willing to do the job, please let me know!
--Andy
∂16-Feb-89 1808 tah@polya.Stanford.EDU MTC Seminar
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 16 Feb 89 18:08:06 PST
Received: from LOCALHOST by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA13639; Thu, 16 Feb 89 18:06:47 -0800
Message-Id: <8902170206.AA13639@polya.Stanford.EDU>
To: lop@polya.Stanford.EDU
Subject: MTC Seminar
Date: Thu, 16 Feb 89 18:06:45 -0800
From: Tom Henzinger <tah@polya.Stanford.EDU>
Friday, Feb. 17, noon (MJH 301):
I'll continue with Abramsky's POPL tutorial on process equivalences,
where we left off two weeks ago.
-- Tom.
∂17-Feb-89 0003 @Score.Stanford.EDU:marty@cis.Stanford.EDU WINTER POTLUCK
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 17 Feb 89 00:03:33 PST
Received: from cis.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Thu 16 Feb 89 23:58:32-PST
Received: by cis.Stanford.EDU (5.59/inc-1.0)
id AA08840; Thu, 16 Feb 89 23:57:21 PDT
Date: Thu, 16 Feb 89 23:57:21 PDT
From: marty@cis.Stanford.EDU (Marty Tenenbaum)
Message-Id: <8902170757.AA08840@cis.Stanford.EDU>
To: katiyar@polya.stanford.edu
Cc: faculty@score.stanford.edu, research-associates@score.stanford.edu,
secretaries@score.stanford.edu, students@score.stanford.edu
In-Reply-To: Social Committee's message of Thu, 16 Feb 1989 12:51:35 PST <CMM.0.87.603665495.katiyar@polya.stanford.edu>
Subject: WINTER POTLUCK
I will try to come with my wife. What can I bring (that wont be missed if
circumstances prevent me from coming - 25% possibility).
JMT.
∂17-Feb-89 0014 @Score.Stanford.EDU:marty@cis.Stanford.EDU Needed: Industrial Lecturers
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 17 Feb 89 00:14:43 PST
Received: from cis.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Fri 17 Feb 89 00:06:03-PST
Received: by cis.Stanford.EDU (5.59/inc-1.0)
id AA08856; Fri, 17 Feb 89 00:04:55 PDT
Date: Fri, 17 Feb 89 00:04:55 PDT
From: marty@cis.Stanford.EDU (Marty Tenenbaum)
Message-Id: <8902170804.AA08856@cis.Stanford.EDU>
To: goldberg@Jinn.stanford.edu
Cc: faculty@score.stanford.edu
In-Reply-To: Andrew Goldberg's message of Thu, 16 Feb 89 16:47:55 PST <8902170047.AA01040@Jinn.stanford.edu>
Subject: Needed: Industrial Lecturers
Mark Stefik of Xerox Parc is writing a new book on AI, in which the
various modeling and representation techniques are presented as
engineering tools. He is a very effective lecturer, and may be
interested in trying a class based on the book.
JMT.
∂17-Feb-89 0019 @Score.Stanford.EDU:marty@cis.Stanford.EDU CSD Retreat
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 17 Feb 89 00:19:33 PST
Received: from cis.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Fri 17 Feb 89 00:15:22-PST
Received: by cis.Stanford.EDU (5.59/inc-1.0)
id AA08887; Fri, 17 Feb 89 00:14:11 PDT
Date: Fri, 17 Feb 89 00:14:11 PDT
From: marty@cis.Stanford.EDU (Marty Tenenbaum)
Message-Id: <8902170814.AA08887@cis.Stanford.EDU>
To: chandler@polya.stanford.edu
Cc: faculty@score.stanford.edu, chandler@polya.Stanford.EDU
In-Reply-To: "Joyce R. Chandler"'s message of Wed, 15 Feb 1989 9:50:20 PST <CMM.0.87.603568220.chandler@polya.stanford.edu>
Subject: CSD Retreat
Joyce,
I would like to attend the retreat and stay in a single. Unfortunately,
I do not have any source of discretionary funds. Can the department
pick up my tab?
Thanks,
JMT.
∂17-Feb-89 0842 @Score.Stanford.EDU:nilsson@Tenaya.stanford.edu $50K
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 17 Feb 89 08:42:32 PST
Received: from Tenaya.stanford.edu by SCORE.STANFORD.EDU with TCP; Fri 17 Feb 89 08:39:11-PST
Received: by Tenaya.stanford.edu (5.59/25-eef) id AA05940; Fri, 17 Feb 89 08:38:48 PDT
Date: Fri, 17 Feb 89 08:38:48 PDT
From: Nils Nilsson <nilsson@Tenaya.stanford.edu>
Message-Id: <8902171638.AA05940@Tenaya.stanford.edu>
To: faculty@score
Subject: $50K
We have the opportunity of proposing for a $50K ATT grant. The
chances are very good that the proposal will be accepted. The grant
is to be used for a) education, b) beginning a new program, and/or c)
equipment for a lab BUT it cannot be used for things that NSF, say,
would ordinarily pay for such as faculty salaries or student support.
I promised Al Aho that I would send him an on-line proposal before the
first of March. The proposal should have a paragraph or two
describing what will be done with the funds and an expected budget.
Please send any ideas you might have to me, and I and the spokespeople
will decide on Feb. 27 which proposal to forward to Al. Thanks, -Nils
∂17-Feb-89 0909 @Score.Stanford.EDU:chandler@polya.Stanford.EDU Next Tuesday's Faculty Lunch
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 17 Feb 89 09:09:53 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Fri 17 Feb 89 09:06:48-PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA06649; Fri, 17 Feb 89 09:08:03 -0800
Date: Fri, 17 Feb 1989 9:07:57 PST
From: "Joyce R. Chandler" <chandler@polya.stanford.edu>
To: faculty@score, bureaucrats@score, staff-rep@score
Subject: Next Tuesday's Faculty Lunch
Message-Id: <CMM.0.87.603738477.chandler@polya.stanford.edu>
The topic to be discussed at next Tuesday's faculty lunch (12:15 in MJH-146)
will be "staff concerns". Mark your calendars!
∂17-Feb-89 0931 LOGMTC-mailer Logic Seminar
Received: from csli.Stanford.EDU by SAIL.Stanford.EDU with TCP; 17 Feb 89 09:31:30 PST
Received: by csli.Stanford.EDU (4.0/inc-1.0)
id AA09155; Fri, 17 Feb 89 09:29:37 PST
Date: Fri 17 Feb 89 09:29:36-PST
From: Sol Feferman <SF@CSLI.Stanford.EDU>
Subject: Logic Seminar
To: Logic@csli.Stanford.EDU
Message-Id: <603739776.0.SF@CSLI.Stanford.EDU>
Mail-System-Version: <SUN-MM(242)+TOPSLIB(128)@CSLI.Stanford.EDU>
Seminar in Logic
Speaker: Prof. I. Katznelson, Stanford Mathematics Dept
Title: "Semigroups, idempotents, and Ramsey theory" (second of two lectures)
Time: Tues, Feb. 21, 4:15-5:30
Place: Room 381-T, Math Corner, Stanford
S. Feferman
-------
∂17-Feb-89 1139 @Score.Stanford.EDU:RWF@SAIL.Stanford.EDU Comprehensive Structure; Long-term Committees
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 17 Feb 89 11:39:25 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Fri 17 Feb 89 11:35:49-PST
Message-ID: <Y1Zt7@SAIL.Stanford.EDU>
Date: 17 Feb 89 1137 PST
From: Robert W Floyd <RWF@SAIL.Stanford.EDU>
Subject: Comprehensive Structure; Long-term Committees
To: faculty@Score.Stanford.EDU, phd-program@SAIL.Stanford.EDU
My opinion on the comprehensive exam, repeated from lunch of February 14.
Our historical experience with the comp over perhaps fifteen years has
until recently been tranquil; therefore, I think our current
dissatisfactions can not be inherent in having a requirement for passing a
breadth exam in two years. On the other hand, the exam does not get much
use as a final filter, in that almost everyone eventually passes it, so we
might consider extending the deadline to 2.5 or 3 years, to counterbalance
proposed early research requirements.
The comp embodies the material of a good many courses. The theory exam
covers much of the material of 160, 154 or 254, 257, 260, and more. Only
very well prepared entrants can hope to pass the comp after one quarter of
study; historically, no more than our top (perhaps) 20% have done so.
Students should not be led to feel they have failed if they do not pass
the first time. In fact, a student does not fail the exam until the end
of the second year. A non-pass is not a failure. A reasonable goal is to
pass one section each half year.
It is difficult to be on the comp committee, because we come onto it rusty
by several years, and find a new syllabus and regulations awaiting us.
The comp committee, like several other major committees, should be a
continuing body with staggered three-year terms of appointment (like the
major university committees). This permits the members, also, to maintain
collections of unused problem ideas, and to calibrate problems by
experience. One virgin per wedding night is plenty.
The current format of the comp sections, each broken into five named parts
with a tacit assumption of several problems per part, leads to a three
hour exam of a dozen or more problems, at best allowing fifteen minutes
per problem. This can not encourage students to reveal the depth of their
understanding. It also unduly contrains the committee to cover all the
bases rather than ask the best available questions. I would rather
present eight nontrivial questions, with the grade based on the student's
five best answers, to discourage wasting time trying for partial credits.
Uniform coverage of subdisciplines should not be expected.
I think we should prune subject matter. Areas subject to rapid
technological change especially should be prayerfully left to the
student's self-education in later life. Networks might go away, operating
systems and compilers could be covered only at the level of a good
software engineering survey text. The ruling question: is the half-life
of this technology greater than the median time to Ph.D.?
I return to a proposal briefly mentioned, namely long-term committee
appointments. Having been a long-term member of the MS committee, I have
appreciated reading MS admissions folders in the light of a set of
standards set by experience; it cuts the hard decisions in half, at least.
Some committees, such as curriculum, are subject to excessive thrashing
when staffed in a short-term way. On some committees, ex officio members
seem to have a disproportionate influence because of their longer tenure.
Couldn't we each be on one major committee for a (renewable?) three year
term? The committees I have in mind are Ph.D., MS, Undergrad, Curriculum,
Forum, and an executive council (i.e., the area spokesmen, with much
authority delegated to them).
∂17-Feb-89 1202 @Score.Stanford.EDU:goldberg@Jinn.stanford.edu Industrial Lecturers
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 17 Feb 89 12:02:35 PST
Received: from Jinn.stanford.edu by SCORE.STANFORD.EDU with TCP; Fri 17 Feb 89 11:59:08-PST
Received: by Jinn.stanford.edu (4.0/25-eef) id AA01590; Fri, 17 Feb 89 12:00:07 PST
Date: Fri, 17 Feb 89 12:00:07 PST
From: Andrew Goldberg <goldberg@Jinn.stanford.edu>
Message-Id: <8902172000.AA01590@Jinn.stanford.edu>
To: faculty@score
Subject: Industrial Lecturers
Several faculty members suggested Mark Stefik, who is finishing a new
book on AI, as an excellent candidate. Unless someone tells me a reason
not to, I will try to convince Mark Stefik to teach a course next year.
--Andy
∂18-Feb-89 1439 @Score.Stanford.EDU:gio@sumex-aim.stanford.edu Re: Comprehensive Structure; Long-term Committees
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 18 Feb 89 14:39:54 PST
Received: from sumex-aim.stanford.edu by SCORE.STANFORD.EDU with TCP; Sat 18 Feb 89 14:35:37-PST
Received: by sumex-aim.stanford.edu (4.0/inc-1.0)
id AA22484; Sat, 18 Feb 89 14:36:57 PST
Date: Sat, 18 Feb 1989 14:36:56 PST
From: Gio Wiederhold <gio@sumex-aim.stanford.edu>
To: Robert W Floyd <RWF@sail.stanford.edu>
Cc: faculty@score.stanford.edu, phd-program@sail.stanford.edu
Subject: Re: Comprehensive Structure; Long-term Committees
In-Reply-To: Your message of 17 Feb 89 1137 PST
Message-Id: <CMM.0.88.603844616.gio@sumex-aim.stanford.edu>
1. On Committees: three year appointments, with a rolling chair, seem very
desirable.
2. To remove the double whammy of exams I propose a more radical change:
Do away with the Qual exams.
Why?
a. We need the Comps to satisfy the Universities rules for promotion
to candidacy.
b. Research students need breadth too, here and later.
c. We can use the topic area Comp results for assessing student preparation
d. Research progress with an advisor is the relevant criterium for
accepting a thesis student.
e. We save the second exam go around which must be continuously updated
to keep pace with the pace and specialization of CS.
Now passing the quals seems to give a guarantee to the student of being able
to do a thesis, but not neccessarily an advisor.
Gio
∂18-Feb-89 2234 @Score.Stanford.EDU:jcm@ra.stanford.edu Re: Comprehensive Structure; Long-term Committees
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 18 Feb 89 22:34:51 PST
Received: from ra.stanford.edu by SCORE.STANFORD.EDU with TCP; Sat 18 Feb 89 22:30:34-PST
Received: by ra.stanford.edu (5.59/25-eef) id AA00944; Sat, 18 Feb 89 22:31:17 PDT
Date: Sat, 18 Feb 89 22:31:17 PDT
From: John Mitchell <jcm@ra.stanford.edu>
Message-Id: <8902190631.AA00944@ra.stanford.edu>
To: gio@sumex-aim.stanford.edu
Subject: Re: Comprehensive Structure; Long-term Committees
Cc: faculty@score
I think the Quals are useful.
∂19-Feb-89 1446 LOGMTC-mailer The Symbolic Systems Forum, Feb. 24th
Received: from csli.Stanford.EDU by SAIL.Stanford.EDU with TCP; 19 Feb 89 14:45:51 PST
Received: by csli.Stanford.EDU (4.0/inc-1.0)
id AA01100; Sun, 19 Feb 89 14:39:44 PST
Date: Sun 19 Feb 89 14:39:41-PST
From: Reid Hoffman <HOFFMAN@CSLI.Stanford.EDU>
Subject: The Symbolic Systems Forum, Feb. 24th
To: SymbolicSystemsForum@csli.Stanford.EDU
Message-Id: <603931182.0.HOFFMAN@CSLI.Stanford.EDU>
Mail-System-Version: <SUN-MM(242)+TOPSLIB(128)@CSLI.Stanford.EDU>
This week, The Symbolic Systems Forum presents
Professor Solomon Feferman,
Chairman Mathematics
on
Turing's "Oracle"
-----------------
This is the curious tale of a powerful and Protean idea. In the beginning
there was Alan Turing's theory of mechanical computability. Then Turing
introduced his idea of computability by means of an "oracle", but he never
did anything with it. Next, Emil Post took it up as the basis for his
theory of degrees of unsolvability. Then came generalized recursion
theory and even more generalized degrees of unsolvability. All of which
has nothing to do with actual computability, right? Wrong, in my view.
Date: Feb 24th
Time: 3:15
Place: building 60, room 60-61g
The talk is open to the general public and refreshments will be served.
-------
∂20-Feb-89 0129 X3J13-mailer Issue: SUBSETTING-POSITION
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 20 Feb 89 01:28:58 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
for x3j13@sail.stanford.edu; id AA06837; Mon, 20 Feb 89 01:27:08 PST
Message-Id: <8902200927.AA06837@decwrl.dec.com>
From: chapman%aitg.DEC@decwrl.dec.com
Date: 20 Feb 89 04:24
To: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
Subject: Issue: SUBSETTING-POSITION
Issue: SUBSETTING-POSITION
References: X3J13 committee and sub-committee meetings
Category: Policy
Edit history: 12-DEC-88, Version 1 by Chapman
9-JAN-89, Version 2 by Chapman
10-JAN-89, Version 3 by Chapman
20-FEB-89, Version 4 by Chapman
Problem Description:
Should the CL standard be partitioned such that an implementation
could chose a subset of all the CL facilities to implement and
still be a conforming implementation?
What subsets should be specified in the draft standard we submit to
ANSI?
What position should we take if someone should propose a subset?
Subsets might omit syntax, functions, admissable values or arguments
to functions, or data types. For example, a subset might disallow SPECIAL
declarations (a syntactic subset), might omit the COS, SIN, ATAN functions,
might disallow the :TEST keyword to MAKE-HASH-TABLE, might restrict TAILP
to work on proper lists, or might omit complex numbers. Each of these is a
"subset" in the sense that a subset of correct programs for the "full"
language would be correct for the "subset" language.
Subsets can have various levels of "determinability" for programs. The
issue is: how easy is it to tell whether a program written in the "full"
language would run in a "subset" implementation? Except for the
(non-trivial) issue of macro expansions, some subsets are "lexically"
determinable, e.g., if a function is omitted, you can tell if the program
uses it by scanning the program. Some subsets are "dynamically"
determinable, e.g, a subset might signal an error if the :TEST argument to
MAKE-HASH-TABLE is EQUALP. Some subsets are neither lexically nor
dynamically determinable, e.g., if the subset implements dynamic extent for
rest lists, it may be impossible to tell even with run-type checks whether
the a program written in the "full" language would conform.
Some "subsets" might be merely restrictive interpretations, e.g., a
"run-time" implementation that made ED, TRACE, UNTRACE into no-ops and made
BREAK halt the program execution rather than "enter the debugger"; since we
cannot define what "enter the debugger" means, we might want to define
explicitly this subset as a reasonable one for embedded systems.
Proposal (SUBSETTING-POSITION:NONE)
The draft standard we submit to ANSI contains *no* subsets.
In the section on "subsetting" it should be mentioned
that Lisp is a "small" language with a "big" library.
We are not opposed in principle to one or more subset definitions.
Rationale:
We have no well-defined proposals for subset definitions, and didn't have
the time or energy to pursue their definition, or confidence that we could
reach convergence on a reasonable definition.
There are several properties that a subset definition must have to be
considered: it must be well defined in terms of conformance of code, programs,
and implementations; all valid programs in the subset must be valid programs in
the full language; the subset definition should address how it can be
determined if a program in the full language is valid in the subset.
Current Practice:
Pascal has two levels of conforming implementations -- level 1 contains
level 0 and conformant arrays. This was a compromise necessary to achieve
international agreement. The 1981 PL/I was subsetted and the
results were a range of implementations between the
subset and the full language; nobody wanted to use the subset so vendors
were forced to implement the full language eventually anyway.
Cobol had multiple levels of subsets. However,
the only two levels that were important were the minimum
subset and the full language. The middle levels were
seldom used other than transient points to the full language.
Fortran was subsetted. It was felt that subsetting encouraged
vendors to implement Fortran and therefore proliferate its usage,
but users were quite annoyed that one Fortran was considerably
different from another.
The new Fortran language standards committee is
banning subsetting.
At one point, there was an ANSI standard for "Minimal Basic". It was
too minimal. Later work on ANSI Basic involved a rather different-looking
language and a number of optional extensions for such things as real-time process control.
SPARC feels that subsets aren't good for facilitating interchange, but serve the
purpose of allowing timely implementation of the standard.
Adoption Cost:
None.
Benefits:
This policy will provide a basis for making decisions in X3J13.
Conversion Cost:
None.
Aesthetics:
None.
Discussion:
Jeff Dalton says:
"I'd be happier if it were fairly easy for someone reading the standard
to determine which part was the "library" and which the core language.
For example, where do we find FUNCALL and APPLY?
The draft C standard has an explicit division. Section 3 is
"Language" and section 4 is "Library". It may not be necessary
to go that far for Common Lisp."
GLS says: "I am in agreement with SUBSETTING-POSITION:NONE."
Loosemore says: "... even if the standard doesn't define
any subsets, that is not going to prevent subsets from happening, and
perhaps the standard ought to define some terminology to describe such
implementations (even if it's only to say that they can't call
themselves Common Lisps at all)."
RPG says: "One point worth making might be that a conforming program that is
delivered may not also be a conforming implementation."
Paraphrased:
A conforming implementation does not have to be present in order to deliver
a conforming program.
One could produce a linkable version of an application that would
include almost no part of the Lisp environment.
Therefore, subsets are not mandated for this case.
∂20-Feb-89 1255 X3J13-mailer Re: Issue: SUBSETTING-POSITION
Received: from multimax.encore.com by SAIL.Stanford.EDU with TCP; 20 Feb 89 12:55:32 PST
Received: from mist.encore.COM by multimax.encore.com with SMTP (5.61/25-eef)
id AA02399; Mon, 20 Feb 89 15:53:31 -0500
Received: from localhost by mist. (4.0/SMI-4.0)
id AA01512; Mon, 20 Feb 89 15:51:32 EST
Message-Id: <8902202051.AA01512@mist.>
To: "chapman%aitg.DEC@decwrl.dec.com"@multimax.encore.com
Cc: x3j13@sail.stanford.edu, "skona%csilvax@hub.ucsb.edu"@multimax.encore.com
Subject: Re: Issue: SUBSETTING-POSITION
In-Reply-To: Your message of 20 Feb 89 04:24:00 +0000.
Date: Mon, 20 Feb 89 15:51:29 EST
From: Dan L. Pierson <pierson@mist.encore.com>
I support SUBSETTING-POSITION:NONE in general (though I would still
like to see LOOP be optional :-) ).
However, this brushes on another issue: what to do about well
considered proposals which we generally approve of but don't want to
put in the standard at this time. Chapter 3 of CLOS is possibly the
least controversial member of this class. The OSS/Iterator proposal
and STREAM-INFO are other potential members.
I would very much like to see the standard include an official
appendix containing such features. The wrapper wording for the
appendix would state that these are not part of this Common Lisp
standard but will be considered for future versions of the standard
(note "will be considered", not "will be included"). Implementations
are in no way required to support these features, but if they do, they
should conform to these descriptions as much as possible to avoid
gratuitous incompatibilities. However, we recognize that, since these
features are new and somewhat experimental, it may be unreasonable for
an implementation to precisely conform to the any given description in
the appendix.
While the success of such an appendix will rely a great deal on the
good will of implementors, I believe that it will succeed to a large
extent and that it will make the work of the next standards committee
and the life of Common Lisp users easier.
∂20-Feb-89 1406 X3J13-mailer Issue: CONFORMANCE-POSITION
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 20 Feb 89 14:06:12 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
for x3j13@sail.stanford.edu; id AA14009; Mon, 20 Feb 89 14:04:18 PST
Message-Id: <8902202204.AA14009@decwrl.dec.com>
From: chapman%aitg.DEC@decwrl.dec.com
Date: 20 Feb 89 16:02
To: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
Subject: Issue: CONFORMANCE-POSITION
Issue: CONFORMANCE-POSITION
References: Chapter 1, Section 1.5, Working draft of standard
Category: Clarification
Related Issues: EXTENSIONS-POSITION, LISP-SYMBOL-REDEFINITION, PACKAGE-CLUTTER
Edit history: 12-DEC-88, Version 1 by Chapman
20-DEC-88, Version 2 by Chapman
9-JAN-89, Version 3 by Chapman
10-JAN-89, Version 4 by Chapman
6-FEB-89, Version 5 by Chapman
20-FEB-89, Version 6 by Chapman
Problem Description:
Two ways of defining conformance are in terms of a conforming program
and in terms of a conforming implementation. How should our standard
define conformance? What is the relationship between conformance and
portability?
Proposal (CONFORMANCE-POSITION:IMPLEMENTATION-AND-PROGRAM)
The standard presents the syntax and semantics to be implemented by
a conforming implementation.
The basic test for conformance will be that code written to the letter
of the standard will run in all "conforming" implementations.
The basic rules are as follows:
. Conforming code uses only the syntax specified in the standard.
. Conforming code is written into a program
in only the sequence specified in the standard.
. Conforming code is written using only the functions, macros,
special forms, variables, constants specified in the standard.
. Conforming implementations provide the functions, macros, special
forms, variables, constants, and arrange that they behave in ways
that conform to the specifications of them in the standard.
The definitions of all other functions, macros, or symbols must accompany
the program. Extensions to syntax are not allowed in conforming programs.
. Conformance will not be machine-checkable.
. Conforming programs will only be defined in terms of their structure.
It's possible for a conformal code to
run in all conformal implementations, but to have allowable
implementation-dependent behavior which could make it non-portable.
Insofar as we allow options in the standard this will be true.
Portable code is required to produce equivalent results and
observable side effects in all conforming implementations.
Rationale:
The standard must contain information about conformance. Only including
requirements which would be placed on implementations, however, leaves
the possiblity open that something would be overlooked, and so
implementations may well conform without processing correctly
conforming programs.
Current Practice:
CLtL generally describes things in terms of what correct code can
expect, but the document itself levies the requirement on an implementation
to support all the described functionality.
dpANS C also defined conformance in terms of programs.
It has further defined both "conforming" and "strictly conforming" programs.
Pascal defines conformance in terms of both, PL/I defines conformance in
terms of conforming programs only.
Fortran and Ada say that a conforming implementation correctly processes
conforming programs. Ada goes on to say other specific things about
a conforming implementation, Fortran does not at this time but probably
will in its next standard. The ISO conformance guidelines, and the
draft of the SPARC proposal discuss both programs and implementations.
Adoption Cost:
None.
Benefits:
This definition will give readers and validators a basis on which to read
the standard.
Conversion Cost:
None.
Aesthetics:
None.
Discussion:
∂20-Feb-89 1452 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu SIGACT Newletter
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 20 Feb 89 14:51:54 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA05920; Mon, 20 Feb 89 14:50:47 -0800
Message-Id: <8902202250.AA05920@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Mon, 20 Feb 89 14:50:03 PST
Received: by BYUADMIN (Mailer R2.01A) id 6234; Mon, 20 Feb 89 15:48:31 MST
Date: Mon, 20 Feb 89 16:35:22 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Samir Khuller <khuller@CU-ARPA.CS.CORNELL.EDU>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Samir Khuller <khuller@CU-ARPA.CS.CORNELL.EDU>
Subject: SIGACT Newletter
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
Announcement: Mike Langston has suggested that we start an "Open Problems"
column in the SIGACT newsletter. I will be compiling problems which people
may have to throw out to the general CS theory community. As J.O'Rourke is
already handling problems in Computational Geometry for his column -
submissions in that area should be sent directly to him.
The problems will (I think) vary in difficulty from some involving weeks
of work to years of work. The idea is to be able to also provide interesting
and challenging problems to graduate students to work on which may even be
significant enough to constitute thesis material.
People are welcome to send their problems to me for compilation and I would
request you to try and keep the statements of the problems to a reasonable
length. If you know of any work that has been done on the problem it would
be useful to provide appropriate references for the convenience of the
readers.
Problems may be submitted electronically or by physical mail to me. The
column will perhaps start functioning regularly this summer.
Samir
khuller@svax.cs.cornell.edu
Samir Khuller
Upson Hall
Dept. of Computer Science
Cornell University
Ithaca, NY 14853
USA
∂20-Feb-89 1747 misha@polya.Stanford.EDU Next AFLB
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 20 Feb 89 17:47:17 PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA13719; Mon, 20 Feb 89 17:45:07 -0800
Date: Mon, 20 Feb 89 17:45:07 -0800
From: Michael Kharitonov <misha@polya.Stanford.EDU>
Message-Id: <8902210145.AA13719@polya.Stanford.EDU>
To: aflb-all@polya.Stanford.EDU
Subject: Next AFLB
The next AFLB will be on Thursday, February 23, at 12:30 in room 352.
The talk will be:
The subset-sum problem and analytic number theory -- an interplay
Zvi Galil
Department of Computer science
Columbia University and
Tel-Aviv University
One way of attacking NP-complete problems is to identify input
domains for which it is possible to design polynomial time
(or pseudo polynomial time) algorithms. For example, consider
the subset-sum problem. If the m summands are bounded by l,
one can solve the problem in time O(l m↑2) by dynamic programming.
G. Freiman initiated an entirely different approach for solving the
subset-sum problem. Using analytic number theory,
he and others proved theorems characterizing
the set of subset sums as a collection of arithmetic progressions
with the same difference. These theorems were used to design
algorithms for the subset-sum problem that improved the ones
using dynamic programming in case of dense enough inputs.
(A problem is dense if m is large enough as a function of l.)
More recently, a family of better algorithms was designed. They do not use
any analytic number theory, only elementary number theoretic
arguments. The fastest algorithms in the family run in time O(m),
and the slowest in time O(l log l). Moreover
the algorithms yield a characterization of the set of subset sums,
improving the theorems mentioned above.
The talk will discuss the approach, its potential
and its limitations.
Joint results with M. Chaimovich, G. Freiman and O. Margalit
of Tel-Aviv University.
∂21-Feb-89 0638 X3J13-mailer Updated version of standard available
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 21 Feb 89 06:38:41 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
for x3j13@sail.stanford.edu; id AA03842; Tue, 21 Feb 89 06:36:49 PST
Message-Id: <8902211436.AA03842@decwrl.dec.com>
From: chapman%aitg.DEC@decwrl.dec.com
Date: 21 Feb 89 09:31
To: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
Subject: Updated version of standard available
I have put the latest version of the standard on hudson.dec.com
(ftp_user merrychristmas) for your access. Below are informational
comments and directions for building the standard.
Please let me know if you need help.
kathy chapman
How to build the Common Lisp working draft standard
Following are the files you'll need to build the standard and
the method for building the standard.
To build from scratch
1. You'll need to have AM fonts. If you only have CM fonts,
you'll have to wait a month or so until I can get my files
converted to CM fonts.
2. Copy all the files from hudson.dec.com, ftpuser, to your
directory where you plan to do the build. To decrease the
length of time it takes to copy, you don't need any files
with the .dvi or the .ln3 extension. It will be
approximately 9000 blocks.
3. The top level files you'll provide to your TEX processor
are named chapter1.tex, chapter2.tex..., chapter7.tex.
To use .dvi files, copy chapter1.dvi, chapter2.dvi, ...
chapter7.dvi to your host. That's all you need.
Organization of source files (Chapters 1 - 5, concepts)
1. Each section of each chapter is in a separate file.
2. The files are named sxy00.zzz where the letters are as
follows:
s = "s"
x = chapter number
y = section number
00 = "00"
zzz = name of section; most of the time, this is the
complete name; the exception is when the name is too long
for my file system.
3. The files chapter1.tex, chapter2.tex ..., chapter5.tex
contain the information to put the sections together into
chapters.
Organization of source files (Chapters 6 and 7, tool
descriptions)
1. Each function, macro, special form, constant, and variable
(called tools) has its own file.
2. The CLtL files are numbered f001.xxx through f722.xxx
where xxx (can be longer than 3 characters) is the name of
the tool. The tools are ordered alphabetically;
non-alphabetic tool names or parts of tool names generally
precede alphabetic ones.
!
Page 2
3. In some cases the tool's name contains an illegal
character for my file system. In that case you will see
the character spelled out in the filename as follows:
star = "*"
plus = "+"
eqsign = "="
minus = "-"
var = this is the variable of the two tools that have the
same name, e.g. + is a function and + is a variable. The
function + is named "plus" (filename is f005.plus). The
variable + is named "plusvar" (filename is f006.plusvar).
slash = "/"
lessthan = "<"
gtrthan = ">"
4. Starting with f750.xxx are tools that have been added via
clean-up and compiler issues. There is no special
ordering for these tools.
5. Starting with f800.xxx are the tools that are part of the
condition system. They are ordered alphabetically. Many
duplicate tools that are in f001 - f722. Of course the
obsolete versions will be deleted from the directory after
the first review of the condition system has been
completed.
6. Starting with f900.xxx are the tools that are part of
CLOS. They are also ordered alphabetically and there are
also entries that duplicate entries in the f001 - f722
files.
7. The proper files in the proper alphabetic order are
included to be processed in the chapter6.tex and
chapter7.tex files. Also, there are files that group the
tools according to their ordering in CLtL. The files have
names like characters.tex, arrays.tex, ... and correspond
to the chapters in CLtL that contain tool descriptions.
∂21-Feb-89 0755 @Score.Stanford.EDU:JMC@SAIL.Stanford.EDU Proposed CSD statement on censorship of rec.humor.funny
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 21 Feb 89 07:55:25 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Tue 21 Feb 89 07:51:13-PST
Message-ID: <E3AzL@SAIL.Stanford.EDU>
Date: 20 Feb 89 2010 PST
From: John McCarthy <JMC@SAIL.Stanford.EDU>
Subject: Proposed CSD statement on censorship of rec.humor.funny
To: faculty@SCORE.STANFORD.EDU
The characteristics of newsgroups distributed through
computer networks are in our area of expertise. If there is
any matter in which the technically competent people should
make statements about the use of the results of their technology,
this is it. Censorship of newsgroups is harmful, likely to
require an active bureaucracy unless the new technology is
to be given up entirely, and very likely to be evaded even
then. Therefore, the Computer Science Department should take
a position and transmit it to the Steering
Committee of the Academic Senate for retransmission to whatever
committee they refer the matter to and ultimately to the Senate
itself. The following is the statement of protest that has
been transmitted to the Administration with 120 signatures. I
have added a sentence referring to the Department's own computers.
I recommend that we adopt it or something like it.
Statement of Protest about the AIR Censorship of rec.humor.funny.
Computer scientists and computer users have been involved in
making information resources widely available since the 1960s.
Such resources are analogous to libraries. The newsgroups
available on various networks are the computer analog of
magazines and partial prototypes of future universal computer
libraries. These libraries will make available the information
resources of the whole world to anyone's terminal or personal
computer.
Therefore, the criteria for including newsgroups in computer
systems or removing them should be identical to those for
including books in or removing books from libraries. For this
reason, and since the resource requirements for keeping
newsgroups available are very small, we consider it contrary to
the function of a university to censor the presence of newsgroups in
University computers. We regard it as analogous to removing a
book from the library. To be able to read anything subject only
to cost limitations is an essential part of academic freedom.
We therefore think that AIR and SDC should rescind the purge of
rec.humor.funny. The Computer Science Department has also decided
not to censor Department Computers.
∂21-Feb-89 0800 @Score.Stanford.EDU:chandler@polya.Stanford.EDU At today's faculty lunch......
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 21 Feb 89 08:00:45 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Tue 21 Feb 89 07:58:00-PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA00787; Tue, 21 Feb 89 07:57:32 -0800
Date: Tue, 21 Feb 1989 7:57:29 PST
From: "Joyce R. Chandler" <chandler@polya.stanford.edu>
To: faculty@score, bureaucrats@score, staff-rep@score
Subject: At today's faculty lunch......
Message-Id: <CMM.0.87.604079849.chandler@polya.stanford.edu>
we'll discuss staff concerns. See you in MJH-146 at 12:15!
∂21-Feb-89 0858 BSCOTT@Score.Stanford.EDU [AS.BTH@Forsythe.Stanford.EDU: Army RFP]
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 21 Feb 89 08:58:40 PST
Date: Tue 21 Feb 89 08:54:16-PST
From: Betty Scott <BSCOTT@Score.Stanford.EDU>
Subject: [AS.BTH@Forsythe.Stanford.EDU: Army RFP]
To: Faculty@Score.Stanford.EDU
Message-ID: <12472471874.27.BSCOTT@Score.Stanford.EDU>
FYI. --Betty
---------------
Return-Path: <AS.BTH@Forsythe.Stanford.EDU>
Received: from Forsythe.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Fri 17 Feb 89 16:10:14-PST
Date: Fri, 17 Feb 89 16:10:59 PST
To: bscott@score
From: AS.BTH@Forsythe.Stanford.EDU
Subject: Army RFP
Ruth, Cornelia, Phyllis et al,
Seems like everyone and their brother has been asking about this
RFP from the Army on a High Performance Computing Research Center.
I have written (FAX) for the full RFP, and was told by Patty Cannan
at the Army that no one from Stanford had written for it, hence no
one has received it to date.
Here is what was synopsized in the Nov. 21, 1988 Commerce Business
Daily:
ISA/LABCOM Directorate of Contracting, 2800 Powder Mill Rd.,
Adelphi, MD 20783
ESTABLISHMENT OF ARMY HIGH PERFORMANCE COMPUTING RESEARCH CENTER
(AHPCRC), to include research in High Performance Computing that
requires the acquisition of equipment and software to perform that
research and user support in High Performance Computing. RFP
DAAL02-89-R-9029. DUE 17 APRIL 89. Contact Point: Patty Cannan,
202/394-1088, Contracting Officer, Patricia Silsby, 202/394-3438.
The Army requires the establishment of an Army High Performance
Computing Research Center (AHPCRC). This is a three part
requirement consisting of research in High Performance Computing,
the acquisition of equipment and software to perform that research,
and user support in High Performance Computing. The research and
analysis will address issues appropriate to near term High
Performance Computing, including current Army supercomputer needs,
as well as long term issues, and will provide a basis for advanced
computing techniques within the Army. The research will involve
both systems programming and applications programming with
interdisciplinary research in the efficient utilization of current
advanced performance computers, networks of current computers, and
newly emerging architectures. The research will concentrate on the
development of advanced algorithms and software technology, focusing
on well chosen thrusts in mathematics, computer science and various
associate fields, which contribute to the needs of multiple Army
agencies, without duplicating the work of a specific Army research
activity. Such focused areas will include: simulation of physical
phenomena and the efficient accurate solution of the equations which
govern their behavior, investigation of very large data bases and
info retrieval, visualization and related interactive methods, data
analysis, numerical analysis, implementation of algorithms and
software in a multiplicity of computing environments, and optimal
interfaces in emerging heterogeneous parallel computing
environments. The period of performance for the research effort if
5 years. (ED NOTE: SPO has heard that this is a $254 million
contract.) The contractor shall acquire advanced computing systems
to support the required research. This requirement involves the
acquisition of emerging alternative technology and related
peripherals, for the most advanced state-of-the-art high performance
computing technology. The systems will be installed at the
Contractor's facility. As a part of this requirement the contractor
shall provide operation ad user support consisting of operation and
maintenance of these systems including supporting software and other
equipment required to support a multi-user computing research
environment, initial training, and communications interfaces an user
support. User support will be provided to both local and remote
users, including appropriate users from Govt facilities. On-site
user support services directly related to the Army's production
supercomputers will be provided at two current and one planned Army
supercomputer centers as well as up to three remote sites. The
period of performance for the user support services is a basic
requirement of one year with four options for addl one year periods
of support. This is a competitive procurement with competition
limited to educational institutions or consortiums of educational
institutions. No telephone requests for the sol will be accepted.
To: AS.RMK
cc: AS.CMS, AS.PHU, AS.VGM, AS.CFB, BSCOTT@SCORE, S.STREET@MACBETH, CR.RLB
-------
∂21-Feb-89 1002 HEMENWAY@Score.Stanford.EDU Round 2 Schedule
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 21 Feb 89 10:01:58 PST
Date: Tue 21 Feb 89 09:57:42-PST
From: Sharon Hemenway <HEMENWAY@Score.Stanford.EDU>
Subject: Round 2 Schedule
To: phd-adm@Score.Stanford.EDU
Reply-To: Hemenway@Score.Stanford.EDU
Message-ID: <12472483421.9.HEMENWAY@Score.Stanford.EDU>
Just two weeks to go, everyone!
Here is the schedule agreed to for the Round 2 readings. The entries
in the table are rater numbers.
Pickup Day Batch 1 Batch 2 Batch 3
__________________________________________________
Tues, 2/21 2 3 5 2=Avrahami
Wed, 2/22 5 6 7 3=Chandra
Thurs, 2/23 12 9 10 4=Cheriton
Fri, 2/24 7 12 13 5=Ginsberg
Sat, 2/25 3 4 2 6=Golub
Sun, 2/26 6 7 12 7=Khatib
Mon, 2/27 9 10 11 8=Lam
Tues, 2/28 8 13 4 9=Lansky
Wed, 3/1 4 2 3 10=McCarthy
Thurs, 3/2 11 8 6 11=Moore
Fri, 3/3 10 5 9 12=Roberts
Sat, 3/4 13 11 8 13=Wolf
The final meeting will be at 3:00 on Wednesday, March 8 (hopefully in
MJH 252 but I have to negotiate).
There are 83 applicants (16 of whom are women, in case anyone's
wondering) in Round 2 so there will be 2 batches of 28 folders and one
of 27. (For those of you who weren't at yesterday's meeting, we
decided on 8 Early Admits).
Some groundrules for Round 2:
(1) It is your responsibility to arrange with the readers on either
side of you for pick-up and drop-off of the batches. Feel free to use
my office (or the box outside it) as a drop-off point.
(2) We will put 13 blank rating sheets in each folder today. As you
read and rate them, remove your rating sheet. Your rating sheet
SHOULD NOT be passed on to the next reader. If possible, please give
me your rating sheets as you complete each batch. If you would prefer
to hold onto them until you have read all the folders, please be sure
to get them to me as soon as you have finished the last batch.
(3) The schedule is tight enough that even if you have not had a
chance to read all of the folders (or any), you still must pass them
onto the next reader. I know that there are certain applicants that
some of you do not feel comfortable reading so feel free to skip
them.
Oh, one last thing --while it is just fine that many of you took your
Round 1 rating sheets with you, please do be sure to get them back to
me at the end.
Please let me know if any problems arise.
Sharon
P.S. As requested, here is a list of everyone's e-mail addresses:
PHD-ADM:-
!Gideon Avrahami! Gidi@POLYA.STANFORD.EDU,-
!Rohit Chandra! rohit@POLYA.STANFORD.EDU,-
!David Cheriton! cheriton@PESCADERO.STANFORD.EDU,-
!Michael Genesereth! Genesereth@score
!Matthew Ginsberg! sjg@SAIL.STANFORD.EDU,-
!Gene Golub! golub@PATIENCE.STANFORD.EDU,-
!Sharon R. Hemenway! hemenway@score
!Oussama Khatib! OK@SAIL.STANFORD.EDU,-
!Monica Lam! lam@MOJAVE.STANFORD.EDU,-
!Amy Lansky! LANSKY@SRI.COM,-
!John McCarthy! JMC-LISTS@SAIL.STANFORD.EDU,-
!Bob Moore! bmoore@AI.SRI.COM,-
!Lynn Munday! Munday@score
!Eric Roberts! roberts@DECWRL.DEC.COM,-
!Elizabeth S Wolf! eswolf@POLYA.STANFORD.EDU
-------
∂21-Feb-89 1021 @Score.Stanford.EDU:nilsson@Tenaya.stanford.edu staff and lunch
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 21 Feb 89 10:21:42 PST
Received: from Tenaya.stanford.edu by SCORE.STANFORD.EDU with TCP; Tue 21 Feb 89 10:18:55-PST
Received: by Tenaya.stanford.edu (5.59/25-eef) id AA08459; Tue, 21 Feb 89 10:15:58 PDT
Date: Tue, 21 Feb 89 10:15:58 PDT
From: Nils Nilsson <nilsson@Tenaya.stanford.edu>
Message-Id: <8902211815.AA08459@Tenaya.stanford.edu>
To: faculty@score
Subject: staff and lunch
I'll use this note for two purposes:
1) To express the Department's thanks publicly to Carolyn Tajnai, the
staff of the Computer Forum, Ed Feigenbaum, and the whole Forum
committee and all of the students and others who participated in an
extremely successful Forum meeting last week. To be part of an event
of such excellence should make all of us proud.
2) To remark on the importance of our CSD/CSL staff and to express
thanks for the way they keep our ship running. Carolyn Tajnai and her
staff are currently in the spotlight because of the successful Forum,
but I know the whole Department is appreciative about the efforts of
all of our fine staff. Today, at the faculty lunch, we will be able
to hear from staff about how they see the rest of us and about any
suggestions they might have that will make us all more effective. Do
come!
-Nils
∂21-Feb-89 1053 @Score.Stanford.EDU:chandler@polya.Stanford.EDU Today's Faculty Meeting
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 21 Feb 89 10:53:26 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Tue 21 Feb 89 10:50:25-PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA07995; Tue, 21 Feb 89 10:50:00 -0800
Date: Tue, 21 Feb 1989 10:49:57 PST
From: "Joyce R. Chandler" <chandler@polya.stanford.edu>
To: faculty@score
Subject: Today's Faculty Meeting
Message-Id: <CMM.0.87.604090197.chandler@polya.stanford.edu>
This is remind you of today's faculty meeting to be held in MJH-146 at 4:15.
Also, I do have the vitae's - etc. - on Sturmfels and Tardos. You are
welcome to come by my office and take a look at them before the meeting.
∂21-Feb-89 1101 @Score.Stanford.EDU:chandler@polya.Stanford.EDU ["Joyce R. Chandler" <chandler@polya.stanford.edu> : Today's Faculty
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 21 Feb 89 11:01:44 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Tue 21 Feb 89 10:58:31-PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA08647; Tue, 21 Feb 89 10:58:05 -0800
Date: Tue, 21 Feb 1989 10:57:19 PST
From: "Joyce R. Chandler" <chandler@polya.stanford.edu>
To: faculty@score
Subject: ["Joyce R. Chandler" <chandler@polya.stanford.edu> : Today's Faculty
Meeting ]
Message-Id: <CMM.0.87.604090639.chandler@polya.stanford.edu>
Whoops....I've sent this out to the incorrect list. Please ignore this
message.
---------------
Return-Path: <@Score.Stanford.EDU:chandler@polya.Stanford.EDU>
Received: from Score.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA08183; Tue, 21 Feb 89 10:51:58 -0800
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Tue 21 Feb 89 10:50:25-PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA07995; Tue, 21 Feb 89 10:50:00 -0800
Date: Tue, 21 Feb 1989 10:49:57 PST
From: "Joyce R. Chandler" <chandler@polya.stanford.edu>
To: faculty@score
Subject: Today's Faculty Meeting
Message-Id: <CMM.0.87.604090197.chandler@polya.stanford.edu>
This is remind you of today's faculty meeting to be held in MJH-146 at 4:15.
Also, I do have the vitae's - etc. - on Sturmfels and Tardos. You are
welcome to come by my office and take a look at them before the meeting.
∂21-Feb-89 1108 @Score.Stanford.EDU:chandler@polya.Stanford.EDU Today's Faculty Meeting
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 21 Feb 89 11:08:42 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Tue 21 Feb 89 11:02:10-PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA08974; Tue, 21 Feb 89 11:01:44 -0800
Date: Tue, 21 Feb 1989 11:01:33 PST
From: "Joyce R. Chandler" <chandler@polya.stanford.edu>
To: ac@score
Subject: Today's Faculty Meeting
Message-Id: <CMM.0.87.604090893.chandler@polya.stanford.edu>
This is to remind you of today's faculty meeting to be held in MJH-146 at
4:15. Also, I do have the vitae's, etc. on Sturmfels and Tardos. You are
welcome to come by my office and take a look at them before the meeting.
∂21-Feb-89 1118 debra@russell.Stanford.EDU REMINDER-Evening Seminar
Received: from russell.Stanford.EDU by SAIL.Stanford.EDU with TCP; 21 Feb 89 11:18:18 PST
Received: from localhost by russell.Stanford.EDU (4.0/inc-1.0)
id AA16823; Tue, 21 Feb 89 11:19:55 PST
Message-Id: <8902211919.AA16823@russell.Stanford.EDU>
To: evesem@russell.Stanford.EDU
Cc: kuder@russell.Stanford.EDU, debra@russell.Stanford.EDU
Subject: REMINDER-Evening Seminar
Date: Tue, 21 Feb 89 11:19:53 PST
From: Debra Alty <debra@russell.Stanford.EDU>
REMINDER
The next EVENING SEMINAR will be Wednesday, February 22nd @ 7:30 pm in
the CSLI Cordura Conference Room.
Professor Stanley Peters, Linguistics & Symbolic Systems Department,
will be leading the discussion.
The following will be served:
Chicken puffs Cognac
Vegetable Platter Wine
w/dip Beer
Crackers Sparkling Waters
Cappuccino/Amaretto Coffee
Cheesecake Tea
Debra
∂21-Feb-89 1143 acuff@sumex-aim.stanford.edu New disk on file server
Received: from sumex-aim.stanford.edu by SAIL.Stanford.EDU with TCP; 21 Feb 89 11:42:59 PST
Received: from KSL-Mac-62 (KSL-Mac-62.Stanford.EDU) by sumex-aim.stanford.edu (4.0/inc-1.0)
id AA04351; Tue, 21 Feb 89 11:41:21 PST
Message-Id: <2813082269-514740@KSL-Mac-62>
Sender: acuff@ksl-mac-62.stanford.edu
Date: Tue, 21 Feb 89 11:44:29 PST
Reply-To: acuff@sumex-aim.stanford.edu
From: Richard Acuff <acuff@sumex-aim.stanford.edu>
To: aap@sumex-aim.stanford.edu
Subject: New disk on file server
I've added an additional disk brick to X26, the AAP file server. I've increased
the space for files to 106MB from 50MB, and added 4 world load partitions as
follows:
Name Unit Size (KB)
---- ---- ---------
LOD4 4 50,000
LOD7 4 50,000
LOD5 5 40,000
LOD8 5 40,000
These partitions are intended to be used for storing worlds that would otherwise
take a long time to build (eg. those that have large circuits in them), and are
thus easier to build once, store on X26, and download when they're needed on a
simulation machine. X26 should NOT be used for running simulations.
Of course, this configuration can be changed. Please assign the use of the
LODn partitions within the AAP. I suggest someone be asked to act as server to
keep track of what each partition is being used for.
-- Rich
∂21-Feb-89 1310 lansky@ai.sri.com AI-RR Seminar THIS THURSDAY -- 3:15pm -- Jay Weber
Received: from Warbucks.AI.SRI.COM by SAIL.Stanford.EDU with TCP; 21 Feb 89 13:10:01 PST
Received: from venice.ai.sri.com by Warbucks.AI.SRI.COM with INTERNET ;
Tue, 21 Feb 89 12:57:39 PST
Received: by venice.ai.sri.com (3.2/4.16)
id AA07647 for planlunch@ai.sri.com; Tue, 21 Feb 89 12:57:55 PST
Date: Tue, 21 Feb 89 12:57:55 PST
From: lansky@Warbucks.AI.SRI.COM (Amy Lansky)
Message-Id: <8902212057.AA07647@venice.ai.sri.com>
To: planlunch@Warbucks.AI.SRI.COM
Subject: AI-RR Seminar THIS THURSDAY -- 3:15pm -- Jay Weber
VISITORS: Please arrive 5 minutes early so that you can be escorted up
from the E-building receptionist's desk. Thanks!
-----------------------------------------------------------------------
A STATISTICAL APPROACH TO THE QUALIFICATION PROBLEM
Jay Weber (JAY@CS.ROCHESTER.EDU)
University of Rochester
3:15 PM, THURSDAY, February 23
SRI International, Building E, Room EJ228
The Qualification Problem asks how a reasoner can make reasonable
predictions about the future without exploring the impractically many
possibilities dictated by the past. This makes it the central problem
of causal reasoning. Previous work on this problem has concentrated
on its representational side, i.e. the mechanics of drawing and
defeating the defeasible inferences. In this talk, I show how the use
of conditional statistics not only provides a superior
representational solution, but also supports empirical justifications
for which evidence is ``ignored''. I show how the statistical impact
of past properties can be measured and ranked in parallel to
incrementally derive a reasonable body of evidence upon which to base
a prediction. Also, I characterize the kinds of causal laws that can
be reasoned about using efficient local propagation in Pearl's singly
connected Bayesian networks.
∂21-Feb-89 1552 @Score.Stanford.EDU:hayes@arisia.xerox.com Proposed CSD statement on censorship of rec.humor.funny
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 21 Feb 89 15:52:24 PST
Received: from arisia.Xerox.COM by SCORE.STANFORD.EDU with TCP; Tue 21 Feb 89 15:46:04-PST
Received: by arisia.Xerox.COM
(5.59++/IDA-1.2.6) id AA12218; Tue, 21 Feb 89 15:43:26 PST
Date: Tue, 21 Feb 89 15:43:26 PST
From: Pat Hayes <hayes@arisia.xerox.com>
Message-Id: <8902212343.AA12218@arisia.Xerox.COM>
To: JMC@SAIL.STANFORD.EDU
Cc: faculty@SCORE.STANFORD.EDU
In-Reply-To: John McCarthy's message of 20 Feb 89 20:10 PST <E3AzL@SAIL.Stanford.EDU>
Subject: Proposed CSD statement on censorship of rec.humor.funny
Im all in favor of such a statement. Theres no sharp line between
censoring 'offensive' humor and burning 'blasphemous' books ( or even
authors ) .
Pat
∂21-Feb-89 1610 @Score.Stanford.EDU:goldberg@polya.Stanford.EDU Ph.D. program
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 21 Feb 89 16:09:54 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Tue 21 Feb 89 16:05:10-PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA29973; Tue, 21 Feb 89 16:03:30 -0800
Date: Tue, 21 Feb 89 16:03:30 -0800
From: Andrew V. Goldberg <goldberg@polya.Stanford.EDU>
Message-Id: <8902220003.AA29973@polya.Stanford.EDU>
To: faculty@score
Subject: Ph.D. program
How about the following system for Ph.D. program examinations:
1. Comps (with the number of areas reduced from the current 15, or may be
with students choosing from some of the "optional" areas).
Comps have grades, but no passing scores.
2. Oral qual: a student presents research results to a committee, which
then asks the students questions on this material as well as on the
comp areas in which the student showed weaknesses. The committee also gets
a letter from the student's advisor summarizing research progress of the
student. Based on the research progress and exam performance, the committee
decides if the student has enough knowledge of the Computer Science and if
he/she is likely to produce an acceptable thesis.
The possible outcomes of the exam are
a. Pass.
b. Conditional pass: the student must meet additional requirements imposed
by the committee to strengthen some areas. (For example, the committee
can recommend the student to take a certain course and get at least "B",
of to re-take a comp and get a score that is within the top half of the
exam group.)
c. Fail. (Everybody gets two chances to take the oral.)
An "area qual" that guarantees breadth on knowledge in the student area of
specialization is also a possibility, but I think students get this breadth
anyway.
The proposed system has the following advantages:
-- it encourages early involvement in research as well as interaction with
an advisor (if you have to take an oral qual within, say, seven quarters,
then by that time you should have some research results, and your advisor
should know who you are).
-- it allows to enforce the minimum amount of knowledge expected from a
Stanford Ph.D. with an ability to tailor this knowledge to individual
cases.
-- with reduced pressure of comps, students will have more time to get involved
in research.
-- although certain amount of administration will be required to conduct oral
quals, this administration should not be too time-consuming, and will be
much more meaningful compared to that of some other proposals to stimulate
research.
--Andy
∂21-Feb-89 1633 @Score.Stanford.EDU:ungar@self Re: Ph.D. program
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 21 Feb 89 16:33:14 PST
Received: from self by SCORE.STANFORD.EDU with TCP; Tue 21 Feb 89 16:28:35-PST
Received: by self (4.0/inc-1.0)
id AA23147; Tue, 21 Feb 89 16:21:39 PST
Date: Tue, 21 Feb 89 16:21:39 PST
From: ungar@self.stanford.edu (David Ungar)
Message-Id: <8902220021.AA23147@self>
To: faculty@score.stanford.edu, goldberg@polya.Stanford.EDU
Subject: Re: Ph.D. program
It sounds reasonable to me.
David
∂21-Feb-89 1734 @Score.Stanford.EDU:jcm@ra.stanford.edu Ph.D. program
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 21 Feb 89 17:34:17 PST
Received: from ra.stanford.edu by SCORE.STANFORD.EDU with TCP; Tue 21 Feb 89 17:22:35-PST
Received: by ra.stanford.edu (5.59/25-eef) id AA00908; Tue, 21 Feb 89 17:21:16 PDT
Date: Tue, 21 Feb 89 17:21:16 PDT
From: John Mitchell <jcm@ra.stanford.edu>
Message-Id: <8902220121.AA00908@ra.stanford.edu>
To: faculty@score
Subject: Ph.D. program
I like Andy's proposal. I would like to add a suggestion
to keep the area qual, administered by area. So far, I have
found the MTC qual very effective at insuring that students
have a sufficiently broad exposure to the area, and as a
way of diagnosing the strengths and weaknesses of various
students. If administered properly, the area qual need not
stand in the way of research progres. But I think it is a
good mechanism for checking up on breadth. I do not have any
idea how successful quals are in other areas.
∂21-Feb-89 1937 @Score.Stanford.EDU:JMC@SAIL.Stanford.EDU draft extra sentence to precede final paragraph
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 21 Feb 89 19:37:20 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Tue 21 Feb 89 19:35:02-PST
Message-ID: <E3asY@SAIL.Stanford.EDU>
Date: 21 Feb 89 1935 PST
From: John McCarthy <JMC@SAIL.Stanford.EDU>
Subject: draft extra sentence to precede final paragraph
To: faculty@Score.Stanford.EDU
Censorship is not an appropriate tool for preventing or dealing
with offensive behavior.
∂21-Feb-89 2149 X3J13-mailer Source for section 2.4
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 21 Feb 89 21:48:43 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
for skona%csilvax@hub.ucsb.edu; id AA09830; Tue, 21 Feb 89 08:11:18 PST
Message-Id: <8902211611.AA09830@decwrl.dec.com>
From: chapman%aitg.DEC@decwrl.dec.com
Date: 21 Feb 89 11:09
To: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
Subject: Source for section 2.4
%% Slots
\beginsubSection{Introduction to Slots}
An {\word object}
that has {\datatype standard-class} as its {\word metaclass} has zero or
more named {\word slots}.
The {\word slots} of an {\word object} are determined by the {\word class}
of the {\word object}. Each {\word slot}
can hold one value. The {\word name} of a {\word slot} is a
{\datatype symbol} that is syntactically valid for use as a variable
name.
When a {\word slot} does not have a value, the {\word slot} is said to be {\bit
unbound}. When an unbound {\word slot} is read, the generic
function {\function slot-unbound} is invoked. The
system-supplied primary {\word method}
for {\function slot-unbound} signals an error.
The default initial value form for a {\word slot}
is defined by the \hbox{{\keyword
:initform}} slot option. When the {\keyword :initform} form is used to
supply a value, it is evaluated in the lexical environment in which
the {\function defclass} form was evaluated. The {\keyword :initform} along with
the lexical environment in which the {\function defclass} form was evaluated
is called a {\bit captured\/} {\keyword :initform}. See the section
``Object Creation and Initialization'' for more details.
A {\bit local slot\/} is defined to be a {\word slot}
that is visible to exactly
one {\word instance},
namely the one in which the {\word slot} is allocated. A {\bit
shared slot\/} is defined to be a {\word slot} that is visible to more than one
{\word instance} of a given {\word class} and its {\word subclasses}.
A {\word class} is said to define a {\word slot} with a given {\word name} when
the {\function defclass} form for that {\word class}
contains a {\word slot} specifier with
that {\word name}.
Defining a {\word local slot} does not immediately create a {\word slot};
it causes a {\word slot} to be created each time an
{\word instance} of the {\word class} is
created. Defining a {\word shared slot} immediately creates a {\word slot}.
The {\keyword :allocation} slot
option to {\function defclass} controls the kind
of {\word slot} that is defined.
If the value of the {\keyword :allocation} slot
option is {\keyword :instance}, a {\word local slot} is created.
If the value of
{\keyword :allocation} is {\keyword :class}, a {\word shared slot} is created.
A {\word slot} is said to be {\bit accessible\/} in an {\word instance}
of a {\word class} if
the {\word slot} is defined by the {\word class}
of the {\word instance} or is inherited from
a {\word superclass} of that {\word class}.
At most one {\word slot} of a given {\word name} can be
{\word accessible} in an {\word instance}.
A {\word shared slot} defined by a {\word class} is
{\word accessible} in all {\word instances}
of that {\word class}.
A detailed explanation of
the inheritance of {\word slots} is given in the section ``Inheritance of
Slots and Slot Options.''
\endsubSection%{Slots}
\beginsubSection{Accessing Slots}
{\word Slots} can be accessed in two ways: by use of the primitive function
{\function slot-value} and by use of {\word generic functions}
generated by the {\function
defclass} form.
The function {\function slot-value} can
be used with any of the {\word slot} names
specified in the {\function defclass} form to access a specific {\word slot}
{\word accessible} in an {\word instance} of the given {\word class}.
The macro {\function defclass} provides
syntax for generating {\word methods} to
read and write {\word slots}.
If a reader {\word method} is requested, a {\word method} is
automatically generated for reading the value of the {\word slot}, but no
{\word method} for storing a value into it is generated. If a writer {\word
method}
is requested, a {\word method} is automatically generated for storing a value
into the {\word slot}, but no {\word method}
for reading its value is generated. If
an accessor {\word method} is requested,
a {\word method} for reading the value of
the {\word slot} and a {\word method}
for storing a value into the {\word slot} are
automatically generated. Reader and writer {\word methods} are implemented
using {\function slot-value}.
When a reader or writer {\word method} is specified for a
{\word slot}, the name of the
{\word generic function} to which the generated {\word method} belongs is directly
specified. If the {\word name}
specified for the writer {\word method} is the symbol
{\tt name}, the {\word name} of the {\word generic function}
for writing the {\word slot}
is the symbol {\tt name}, and the {\word generic function} takes two
arguments: the new value and the {\word instance}, in that order. If the
{\word name}
specified for the accessor {\word method}
is the symbol {\tt name}, the
{\word name} of the {\word generic function} for reading the {\word slot}
is the symbol {\tt
name\/}, and the {\word name} of the {\word generic function} for writing the
{\word slot} is
the list {\tt (setf name)}.
A {\word generic function}
created or modified by supplying reader, writer, or
accessor {\word slot} options can be treated exactly as an ordinary
{\word generic function}.
Note that {\function slot-value} can be used to read or write the value of a
{\word slot} whether or not reader or writer {\word methods}
exist for that {\word slot}.
When {\function slot-value} is used, no reader or writer {\word methods} are
invoked.
The macro {\function with-slots} can be used to establish a lexical
environment in which specified {\word slots}
are lexically available as if they
were variables. The
macro {\function with-slots} invokes the function {\function
slot-value} to access the specified {\word slots}.
The macro {\function with-accessors} can be used to establish a lexical
environment in which specified {\word slots} are lexically available through
their accessors as if they were variables. The macro {\function
with-accessors} invokes the appropriate accessors to access the
specified {\word slots}.
Any accessors specified by {\function with-accessors} must
already have been defined before they are used.
\endsubSection%{Accessing Slots}
\beginsubsubsection{Inheritance of Slots and Slot Options}
The set of the {\word names} of all {\word slots}
{\word accessible} in an {\word instance} of a {\word class}
$C$ is the union of the sets of {\word names} of {\word slots}
defined by $C$ and its
{\word superclasses}. The structure of an {\word instance}
is the set of {\word names}
of {\word local slots} in that {\word instance}.
In the simplest case, only one {\word class} among $C$ and its
{\word superclasses}
defines a {\word slot} with a given {\word slot} name.
If a {\word slot} is defined by a
{\word superclass} of $C$\negthinspace, the {\word slot} is said to be
inherited. The characteristics of the {\word slot} are determined by the
{\word slot} specifier of the defining {\word class}.
Consider the defining {\word class} for
a slot $S$\negthinspace. If the value of the {\keyword :allocation}
slot
option is {\tt :instance}, then $S$ is a {\word local slot} and each
{\word instance}
of $C$ has its own {\word slot} named $S$ that stores its own value. If the
value of the {\keyword :allocation} slot
option is {\tt :class}, then $S$
is a {\word shared slot}, the {\word class}
that defined $S$ stores the value, and all
{\word instances} of $C$ can access that single {\word slot}.
If the {\keyword
:allocation} slot option is omitted, {\tt :instance} is used.
In general, more than one {\word class} among $C$ and its
{\word superclasses} can
define a {\word slot} with a given {\word name}.
In such cases, only one {\word slot} with
the given name is {\word accessible} in an {\word instance}
of $C$\negthinspace, and
the characteristics of that {\word slot} are
a combination of the several {\word slot}
specifiers, computed as follows:
\beginlist
\itemitem{\bull} All the {\word slot}
specifiers for a given {\word slot} name are ordered
from most specific to least specific, according to the order in $C$'s
{\word class precedence list} of the {\word classes}
that define them. All references
to the specificity of {\word slot} specifiers immediately below refers to this
ordering.
\itemitem{\bull} The allocation of a {\word slot}
is controlled by the most specific
{\word slot} specifier. If
the most specific {\word slot} specifier does not contain an
{\keyword :allocation} slot option, {\tt
:instance} is used. Less specific
{\word slot} specifiers do not affect the allocation.
\itemitem{\bull} The default initial value form for a
{\word slot}
is the value of the {\keyword :initform} slot option in the most
specific {\word slot} specifier that contains one. If no {\word slot} specifier
contains an {\keyword :initform} slot option, the {\word slot}
has no default
initial value form.
\itemitem{\bull} The contents of a {\word slot} will always be of type {\tt
(and} $T\sub 1$ $\ldots$ $T\sub n${\tt )} where $T\sub 1 \ldots T\sub n$ are
the values of the {\keyword :type} slot options contained
in all of the {\word slot}
specifiers. If no {\word slot}
specifier contains the {\keyword :type} slot option, the
contents of the {\word slot} will always be of type {\datatype t}. The result
of attempting to store in a {\word slot}
a value that does not satisfy the {\word type} of the {\word slot} is undefined.
\itemitem{\bull} The set of initialization arguments that initialize a given
{\word slot} is the union of the initialization arguments declared in the {\keyword
:initarg} slot options in all the {\word slot} specifiers.
\itemitem{\bull} The documentation string for a {\word slot} is the value of the
{\keyword :documentation} slot option
in the most specific {\word slot} specifier
that contains one. If no {\word slot} specifier contains a {\keyword
:documentation} slot option, the {\word slot} has no documentation string.
\endlist
A consequence of the allocation rule is that a {\word shared slot} can be
{\word shadowed}. For example, if a class $C\sub 1$ defines
a {\word slot} named $S$
whose value for the {\keyword :allocation} slot option is {\tt :class},
that {\word slot} is {\word accessible}
in {\word instances} of $C\sub 1$ and all of its
{\word subclasses}. However, if $C\sub 2$ is a {\word subclass}
of $C\sub 1$ and also
defines a {\word slot} named $S$\negthinspace, $C\sub 1$'s
{\word slot} is not shared
by {\word instances} of $C\sub 2$ and its {\word subclasses}. When a class
$C\sub 1$ defines a {\word shared slot}, any subclass $C\sub 2$ of $C\sub
1$ will share this single {\word slot}
unless the {\function defclass} form for
$C\sub 2$ specifies a {\word slot} of the same
{\word name} or there is a {\word superclass}
of $C\sub 2$ that precedes $C\sub 1$ in the {\word class precedence list} of
$C\sub 2$ that defines a {\word slot} of the same name.
A consequence of the type rule is that the value of a {\word slot} satisfies
the type constraint of each {\word slot} specifier that contributes to that
{\word slot}. Because the result of attempting to store in a
{\word slot} a value
that does not satisfy the type constraint for the {\word slot} is undefined,
the value in a {\word slot} might fail to satisfy its type constraint.
The {\keyword :reader}, {\keyword :writer}, and {\keyword :accessor}
slot options
create {\word methods} rather than define the characteristics of a {\word
slot}.
Reader and writer {\word methods} are inherited in the sense described in
the section ``Inheritance of Methods.''
{\word Methods} that access {\word slots}
use only the name of the {\word slot} and the {\word type}
of the {\word slot's} value. Suppose a {\word superclass}
provides a {\word method} that
expects to access a {\word shared slot} of a given {\word name},
and a {\word subclass} defines
a {\word local slot} with the same {\word name}.
If the {\word method} provided by the
{\word superclass}
is used on an {\word instance} of the {\word subclass},
the {\word method} accesses
the {\word local slot}.
∂21-Feb-89 2150 X3J13-mailer Source for section 6.1
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 21 Feb 89 21:50:01 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
for skona%csilvax@hub.ucsb.edu; id AA09971; Tue, 21 Feb 89 08:12:50 PST
Message-Id: <8902211612.AA09971@decwrl.dec.com>
From: chapman%aitg.DEC@decwrl.dec.com
Date: 21 Feb 89 11:10
To: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
Subject: Source for section 6.1
%% 6.1 Introduction
Following is information necessary to read the {\word tool}
descriptions in
this chapter and Chapter 7.
\beginsubSection{Notation}
This specification uses an extended Backus Normal Form (BNF) to
describe the syntax of @clisp. This section discusses the syntax of
BNF expressions. The primary extension used is the following:
$$\lbrack\!\lbrack\, O\,\rbrack\!\rbrack$$
An expression of this form will appear whenever a list of elements is
to be spliced into a larger structure and the elements can appear in
any order. The symbol $O$ represents a description of the syntax of
some number of syntactic elements to be spliced; that description must
be of the form
$$O\sub 1\ \vert\ \ldots\ \vert\ O\sub n$$
\noindent where each $O\sub i$ can be either of the form $S$ or of
the form $S${\rm *}. The expression $\lbrack\!\lbrack
O\,\rbrack\!\rbrack$ means that a list of the form
$$(O\sub{i\sub 1}\ldots O\sub{i\sub j})\quad 1\leq j$$
\noindent is spliced into the enclosing expression, such that if $n \neq m$
and $1\leq n,m\leq j$,
then either $O\sub{i\sub n}\neq O\sub{i\sub m}$
or $O\sub{i\sub n} = O\sub{i\sub m} = Q\sub{k}$, where for some
$1\leq k \leq n$, $O\sub{k}$ is of the form $Q\sub{k}${\rm *}.
For example, the expression
(\hbox{{\tt x}}\ {$\lbrack\!\lbrack$}$\,$\hbox{{\tt A}}$\ $
$\vert\ $\hbox{{\tt B}}{\rm *}$\ \vert\ $\hbox{{\tt C}}$\,$
{$\rbrack\!\rbrack$}$\ $\hbox{{\tt y}})
\noindent means that at most one {\tt A}, any number of {\tt B}'s, and
at most one {\tt C} can occur in any order.
It is a description of any of these:
\screen!
(x y)
(x B A C y)
(x A B B B B B C y)
(x C B A B B B y)
\endscreen!
\noindent but not any of these:
\screen!
(x B B A A C C y)
(x C B C y)
\endscreen!
\noindent In the first case, both {\tt A} and {\tt C} appear too often,
and in the second case {\tt C} appears too often.
An indirection extension is introduced in order to make this
new syntax more readable:
$$\downarrow\!O$$
\noindent If $O$ is a non-terminal symbol, the right-hand side
of its definition is substituted for the entire expression
$\downarrow\negthinspace O$. For example, the following BNF is equivalent to
the BNF in the previous example:
(\hbox{{\tt x}}$\ ${$\lbrack\!\lbrack$}$\downarrow\!O\,$
{$\rbrack\!\rbrack$}$\ $\hbox{{\tt y}})
O::= \hbox{{\tt A}}$\ \vert\ $\hbox{{\tt B}}{\rm *}$\ \vert\ $\hbox{{\tt C}}
The syntax description for a generic function describes the
lambda-list of the generic function itself, while the method
signatures describe the lambda-lists of the defined methods.
The syntax description for a function, macro, or special form
describes its parameters.
\beginsubsubsection{Operator description template}
Each {\word operator}
description contains the following information:
\label Name:
What the {\word operator} is called.
\label Syntax:
How to use the {\word operator} in code. For example:
\Defun {F} {x y {\opt} z \key\ k\/}
\noindent This description indicates that the function {\bf F}
has two required parameters, {\arg x\/} and {\arg y}. In addition,
there is an optional parameter {\arg z\/} and a keyword parameter {\arg
k}.
\label Method Signature (optional):
The description of a generic function includes descriptions of the
methods that are defined on that generic function by the standard. A
method signature is used to describe the parameters and
parameter specializers for each method.
Methods defined for the generic function must be of the form described
by the method signature.
\Defmeth {F} {\paren{x class\/} \paren{y t\/} {\opt} z \key\ k\/}
\noindent This signature indicates that this method on the generic function
{\bf F} has two required parameters, {\arg x\/}, which must be an
instance of the class {\it class}, and {\arg y}, which can be any
object. In addition, there is an optional parameter {\arg z\/} and a
keyword parameter {\arg k}. This signature also indicates that this
method on {\bf F} is a primary method and has no qualifiers.
\label Arguments:
The @clisp\ {\word type} or natural language description of
what arguments the
{\word operator} accepts, and information about defaults for optional
arguments.
For {\word special forms} and {\word macros}, their arguments are not
evaluated unless it is explictly stated in their descriptions that they
are evaluated.
\label Values:
The @clisp\ {\word type} or natural language description of
what is
returned by the operator.
\label Description:
A summary of the {\word operator}
and all intended aspects of the {\word operator}, but does not
necessarily have to include explicit reference to all its arguments.
\label Examples:
Examples of use of the {\word
operator}. These examples
are not part of the standard.
\label Side Effects:
Anything that is changed as a result of the
evaluation of the {\word form} containing this {\word operator}.
\label Affected By:
Anything that can affect the result this
{\word operator} produces.
\label Conditions:
Three kinds of information may appear here:
\beginlist
\item{\bull}
Situations which are detected by the {\word operator} and formally signalled.
\item{\bull}
Conditions which are handled by the {\word operator}.
\item{\bull}
Situations which may be detected by the {\word operator}.
\endlist
This field may not include conditions that could
be signalled by calling {\word operators\/} passed to this {\word operator}
as arguments or through dynamic variables.
\label See Also:
List of references to other parts of the
standard where information pertaining to this {\word operator} exists. This
list is not part of the standard.
\label Notes:
Information pertaining to this {\word operator} not
found elsewhere in this description. This information is not part of
the standard.
\endsubsubsection%{Operator description template}
\beginsubsubsection{Variable description template}
Each {\word variable}
description contains the following information:
\beginlist
\label Name:
What the {\word variable} is called.
\label Description:
A summary of the {\word variable}
and all intended aspects of the {\word variable}, but does not
necessarily include all the fields referenced below it.
\label Examples:
Examples of use of the {\word
variable}.
These examples
are not part of the standard.
\label Affected By:
Anything that can affect the value of this variable
including {\word functions} which bind this variable and
{\word functions} which assign this variable.
\label See Also:
List of references to other parts of the
standard where information pertaining to this {\word variable} exists. This
list is not part of the standard.
\label Notes:
Information pertaining to this {\word variable} not
found elsewhere in this description. This information is not part of
the standard.
\endsubsubsection%{Variable description template}
\beginsubsubsection{Other information}
Following are general notes that apply to Chapter 6.
Any argument that is named by a name appearing in the following
list has the meaning specified in this list.
\beginlist
\itemitem{\args}
The arguments required by a {\word function} (usually supplied as an argument
itself).
\itemitem{\array}
See ``Types''.
\itemitem{\boolean}
The symbol @nil\ or any non-@nil\ value.
\itemitem{\chara}
See ``Types''.
\itemitem{\env}
An implementation-defined {\word object} that carries the environment
information necessary for evaluating certain {\word forms}.
\itemitem{\fill-pointer}
A non-negative {\datatype integer} no larger than the total
number of elements in the {\datatype vector}
(as returned by @Funref[array-dimension]\rm);
it is the number of ``active'' or ``filled-in'' elements in the {\datatype
vector}.
The {\word fill pointer} constitutes the ``active length'' of the {\datatype
vector};
all {\datatype vector} elements whose index is less than the
{\word fill pointer} are
active, and the others are inactive.
{\datatype Vector} elements not in the active region are still considered
part of the {\datatype vector}.
\itemitem{\form}
An {\word operator} and its argument list
which is a data {\word object}
meant to be {\word evaluated} as a program
to produce zero or more {\word values} (which are also data {\word objects}).
\itemitem{\fnc}
Code that produces zero or more {\word values}.
See ``Types''.
\itemitem{\integer}
See ``Types''.
\itemitem{\list}
See ``Types''.
\itemitem{\object}
A data structure.
\itemitem{\pack}
The possible ways a package name can be supplied as an argument.
\itemitem{(or pathname stream string)}
The possible ways a pathname name can be supplied as an argument.
\issue{PATHNAME-STREAM}
\path
\endissue{PATHNAME-STREAM}
\itemitem{\simple-vector}
See ``Types''.
\itemitem{\type-spec}
See ``Type Specifiers''.
\itemitem{\undefined}
The value returned by the {\word form} being described is not defined
by this standard. See ``Errors''.
\itemitem{\vector}
See ``Types''.
\endlist
Following are notes that apply to {\datatype sequence} functions:
\itemitem{1.} The variants formed by adding {\function -if}
and {\function -if-not}
to an {\word operator's} name do not take an item,
but instead a one-argument function,
and elements are tested for satisfying or not satisfying the function.
As an example,
{\tt (remove {\arg item} {\arg sequence})}
Also,
{\tt (remove-if \#'numberp {\arg sequence})}
returns a {\arg sequence} from which all numbers have been removed.
%% 14.0.0 10
\itemitem{2.} An element {\arg x} of a {\datatype sequence}
``satisfies the test'' if any of
the following are true:
%% 14.0.0 11
\beginlist
\itemitem{a.}
A {\word function} not suffixed by {\function -if} or {\function -if-not}
was called,
{\arg testfn} was supplied by the keyword {\keyword test}, and
{\tt (funcall {\arg testfn} {\arg item} (funcall {\arg keyfn} {\arg x}))} is true.
\itemitem{b.}
%% 14.0.0 12
A {\word function} not suffixed by {\function -if} or {\function -if-not}
was called,
{\arg testfn} was supplied by the keyword {\keyword :test-not}, and
{\tt (funcall {\arg testfn} {\arg item} (funcall {\arg keyfn} {\arg x}))} is false.
\itemitem{c.}
%% 14.0.0 13
A {\word function} suffixed by {\function -if } was called, and
{\tt (funcall {\arg predicate} (funcall {\arg keyfn} {\arg x}))} is true.
\itemitem{d.}
%% 14.0.0 14
A {\word function} suffixed by {\function -if-not } was called, and
{\tt (funcall {\arg predicate} (funcall {\arg keyfn} {\arg x}))} is false.
\endlist
In each case {\arg keyfn} is the
value of the {\keyword key} argument.
%% 14.0.0 15
In the following function descriptions,
two elements {\arg x} and {\arg y}
taken from {\datatype sequences} ``match'' if
either of the following holds:
%% 14.0.0 16
\beginlist
\itemitem{a.}
{\arg Testfn} was supplied by {\keyword test}
and
{\tt (funcall {\arg testfn} (funcall {\arg keyfn} {\arg x})
(funcall {\arg keyfn} {\arg y}))} is true.
%% 14.0.0 17
\itemitem{b.}
{\arg Testfn} was supplied by {\keyword test-not}, and
{\tt (funcall {\arg testfn} (funcall {\arg keyfn} {\arg x}) (funcall {\arg keyfn}
{\arg y}))} is false.
\endlist
%% 14.0.0 18
The order of the arguments to {\arg testfn} corresponds
to the order in which those arguments (or the {\datatype sequences} containing
those arguments)
were given to the sequence function.
If a sequence function gives two elements from the same
sequence argument to {\arg testfn}, they are given in the same order in
which they appear in the {\datatype sequence}.
\endlist
The font key to be used in Chapters 6 and 7
is as follows:
\beginlist
\itemitem{\arg Argument}
Used to represent {\word operator} arguments.
\itemitem{\datatype Data-type}
Used to represent @clisp\
{\word data types\/}.
\itemitem{\word Defined word}
Used to represent the words whose
definitions appear in the ``Glossary''.
\itemitem{\function Tools}
Used to represent {\word tools}.
\itemitem{\keyword Keywords}
Used to represent {\word keywords\/}.
\endlist
\endsubsubsection%{Other information}
∂21-Feb-89 2151 X3J13-mailer Feb. 21 Letter Ballot
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 21 Feb 89 21:50:56 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
for skona%csilvax@hub.ucsb.edu; id AA09708; Tue, 21 Feb 89 08:07:50 PST
Message-Id: <8902211607.AA09708@decwrl.dec.com>
From: chapman%aitg.DEC@decwrl.dec.com
Date: 21 Feb 89 11:07
To: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
Subject: Feb. 21 Letter Ballot
Digital Equipment Corporation
290 Donald Lynch Blvd.
Marlborough, Mass. 01752
DLB5-2/B10
617-490-8027
Dear Members,
The issues, proposals, and sections of the standard named
below have been mailed to the X3J13 mailing list electronically
and via hardcopy.
The purpose of this ballot is to come to closure on certain
parts of the standard that are either non-controversial, or are
required to be agreed upon before work continues on the standard.
These proposals presumably have been reviewed and debated before
you received this ballot. The nature of the items on this ballot
is that an absolute "no" vote is not possible. If you don't like
the proposals or the sections in the standard, your vote should be
"I" (see below), and you should state your problem and your
proposed fix. If there is a majority of "I" votes, the proposal
or section will be corrected and brought to vote again at the
March meeting. Hopefully that won't be necessary since we have
another 20 or so proposals and sections to vote on at the meeting.
For each proposal and section, please choose one of the
following:
[Y]es: adopt the Proposal or section as is.
[I]f the following condition holds....
[A]bstain
- Who can vote?
Only principals may vote.
- Notes
Your vote must be received by me by March 14, 1989, in
order to be counted.
If you wish to mail your ballot in hardcopy form, please
send it to me at the address in the letterhead.
!
Page 2
- Letter ballot
________________________________________________________________________
Issue or section name | Version | Y | I | A |
------------------------------------------------------------------------
CUT-OFF-DATES | 4 | | | |
------------------------------------------------------------------------
ERROR-TERMINOLOGY | 5 | | | |
------------------------------------------------------------------------
FONTS | 2 | | | |
------------------------------------------------------------------------
TOC | 1 | | | |
------------------------------------------------------------------------
Section 1.8 | 5.8 | | | |
------------------------------------------------------------------------
Section 2.3 | 5.8 | | | |
------------------------------------------------------------------------
Section 2.4 | 5.8 | | | |
------------------------------------------------------------------------
Section 2.5 | 5.8 | | | |
------------------------------------------------------------------------
Section 6.1 | 5.8 | | | |
------------------------------------------------------------------------
Thanks in advance for reviewing these proposals and sections,
Kathy Chapman
∂21-Feb-89 2153 X3J13-mailer Issue: TOC
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 21 Feb 89 21:52:47 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
for skona%csilvax@hub.ucsb.edu; id AA09649; Tue, 21 Feb 89 08:07:07 PST
Message-Id: <8902211607.AA09649@decwrl.dec.com>
From: chapman%aitg.DEC@decwrl.dec.com
Date: 21 Feb 89 11:06
To: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
Subject: Issue: TOC
Issue: TOC
References: Working draft of the standard
Category: Editorial
Edit history: 25-JAN-89, Version 1 by Chapman
Problem Description:
The Table of Contents of the standard has changed several times since
the first one was introduced in November, 1987. One step in finalizing
the standard is to agree on the TOC.
Proposal (TOC:STANDARD)
Chapter 1. Introduction
CONTENTS
1.1 Scope, Purpose, and Application
1.2 Organization of the Document
1.3 Referenced Publications
1.4 Definitions
1.5 Compliance
1.6 Implementation-defined Features
Values
Results
Data Representation and Typing
Program and Control Structure
Comparisons
Numerical Calculations
User Interface
Input/Output
Compiling
Miscellaneous
Programming Environment
1.7 Language Extensions
1.8 Portability Issues
Chapter 2. Objects and Types
CONTENTS
2.1 Introduction
2.2 Types
Type Hierarchy and Relationships
Data Type Definition
Type Specifiers
2.3 Classes
Introduction to Classes
Metaclasses
Standard Metaclasses
Defining Classes
Creating Instances of Classes
Inheritance
Inheritance of Class Options
Examples
Determining the Class Precedence List
Topological Sorting
Examples
Redefining Classes
Modifying the Structure of Instances
Initializing Newly Added Local Slots
Customizing Class Redefinition
Extensions
Integrating Types and Classes
2.4 Slots
Introduction to Slots
Accessing Slots
Inheritance of Slots and Slot Options
2.5 Objects
Object Creation and Initialization
Initialization Arguments
Declaring the Validity of Initialization Arguments
Defaulting of Initialization Arguments
Rules for Initialization Arguments
Shared-Initialize
Initialize-Instance
Definitions of Make-Instance and Initialize-Instance
Changing the Class of an Instance
Modifying the Structure of the Instance
Initializing Newly Added Local Slots
Customizing the Change of Class of an Instance
Reinitializing an Instance
Customizing Reinitialization
Meta-Objects
Standard Meta-objects
Chapter 3. Object Syntax
CONTENTS
3.1 Character Reader
Reader Algorithm
Numbers as tokens
Symbols as tokens
Macro character collection
3.2 Object Syntax
Chapter 4. Evaluation and Compilation
CONTENTS
4.1 Evaluation Model
Introduction
Context and Environment
The Model
Form evaluation
Self-evaluating forms
Symbols as forms
Conses as forms
Return values
Shadowing
Extent
Generic Functions and Methods
Introduction to Generic Functions
Introduction to Methods
Agreement on Parameter Specializers and Qualifiers
Congruent Lambda-Lists for All Methods of a Generic Function
Keyword Arguments in Generic Functions and Methods
Method Selection and Combination
Determining the Effective Method
Standard Method Combination
Declarative Method Combination
Built-in Method Combination Types
Inheritance of Methods
Lambda-expressions
4.2 Compilation
Chapter 5. Other Topics
CONTENTS
5.1 Errors
Error Terminology
Condition System Concepts
Condtion System Data Types
Condtion System Operation
5.2 Input/Output
Files
Character and Binary Input/Output
Loading
5.3 Interface with the Programming Environment
Top level loop
Environment inquiry
Time
5.4 Generalized Reference
Chapter 6. Catalog of Tools (A-M)
A-F plus non-alphabetics
G-M
Chapter 7. Catalog of Tools (N-Z)
N-S
T-Z
Rationale:
The current TOC is a result of a year's worth of meetings and many
discussions of the editorial committee. The organization loosely
follows the CLOS chapters 1 and 2 organization by putting the
concepts first, and followed by an alphabetic listing of the
functions/macros/special forms/variables/constants.
The information that deals with data types is organized according to
the Lisp type hierarchy, and a listing of each language element
that is associated with that data type is located at the end
of each data type description in Chapter 2. These listings are
derived from the contents of the chapters in CLtL.
If we come to the conclusion that the standard should be shortened,
Chapters 6 and 7 can be modified to include fewer tools, and section
6.1 can be modified to reflect movement of some of the non-essential
parts of each description to an appendix.
Current Practice:
CLtL, as well as many other Lisp language specifications,
are organized by data types. The Lucid reference manual's chapters
each deal with a data type, but within those chapters, the information
is organized by concepts followed by an alphabetic listing of
language elements.
CLOS chapters 1 and 2 are organized by concepts first and an
alphabetic listing of language elements next.
Adoption Cost:
None.
Benefits:
The data type organization is useful for describing Lisp, and is therefore
used in chapters 2 and 3. However, categorizing
language elements by the data types they are meant to be used with imposes
an unnecessary structure on the document.
Conversion Cost:
None.
Aesthetics:
None.
Discussion:
∂21-Feb-89 2155 X3J13-mailer Issue: FONTS
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 21 Feb 89 21:55:38 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
for skona%csilvax@hub.ucsb.edu; id AA09577; Tue, 21 Feb 89 08:05:55 PST
Message-Id: <8902211605.AA09577@decwrl.dec.com>
From: chapman%aitg.DEC@decwrl.dec.com
Date: 21 Feb 89 11:05
To: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
Subject: Issue: FONTS
Issue: FONTS
References: Working draft of the standard
Category: Clarifiaction
Edit history: 25-JAN-89, Version 1 by Chapman
7-FEB-89, Version 2 by Chapman (added discussion)
Problem Description:
The Common Lisp language description makes use of many commonly-used
English words for both their establish meanings and for special
purposes. Since the standard is required to be unambiguous,
a way was devised to distinguish an English word from special word of the same
name.
Proposal (FONTS:STANDARD)
Following is a list of the types of words that have been chosen for
special fonting and the name of the font used to represent each.
Word type Font name
Objects of type xxx (e.g. symbols) Slanted 10 point
Words in the glossary Italics
Tools in Chapters 6 and 7 Bold 9 point
Words in the keyword package defined by the standard Bold 9 point
Parameters supplied to functions/macros/special forms Sans serif 10 point
Rationale:
If the wording in the standard is unambiguous, users of the
standard will find it much easier to write portable code and
conforming implementations.
Current Practice:
CLtL uses fonting mainly for emphasis and for referring to
parameters in function descriptions.
Adoption Cost:
None.
Benefits:
The English descriptions in the standard will be less ambiguous.
Conversion Cost:
None.
Aesthetics:
The fonts have been reworked several times in order to improve
readability. It still requires some familiarity with the style
in order to discover its utility.
Discussion:
Steele says:
"Looks fine to me."
Rosenking says:
"Lets go with this proposal."
∂21-Feb-89 2201 X3J13-mailer Issue: CUT-OFF-DATES
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 21 Feb 89 22:00:44 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
for skona%csilvax@hub.ucsb.edu; id AA09483; Tue, 21 Feb 89 08:05:05 PST
Message-Id: <8902211605.AA09483@decwrl.dec.com>
From: chapman%aitg.DEC@decwrl.dec.com
Date: 21 Feb 89 11:04
To: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
Subject: Issue: CUT-OFF-DATES
Issue: CUT-OFF-DATES
References: Working draft of the standard
Category: Policy
Edit history: 20-DEC-88, Version 1 by Chapman
9-JAN-89, Version 2 by Chapman
25-JAN-89, Version 3 by Chapman
7-FEB-89, Version 4 by Chapman
Problem Description:
The X3J13 committee has informally agreed that a 12/89 standard is
a doable goal. However, the standard has to be reviewed by a large
number of people outside the X3J13 committee. We must allow plenty
of time for these reviews, and should therefore plan our internal
reviews and "document freeze" accordingly.
Proposal (CUT-OFF-DATES:ESTABLISH)
Item Dates
________________________________________________Final Changes___Letter Ballot__
Format of tool descriptions 11/1/88 2/21/89
Meaning of each item in each tool description 11/1/88 2/21/89
Fonts 2/1/89 2/21/89
Changes via clean-up to existing functions 4/1/89
Adding functions via clean-up 3/15/89
Conformance issues 3/1/89 mtg
Error terms 2/19/89 2/21/89
Changes to TOC 2/19/89 2/21/89
Contents of sections:
Chapter 1. Introduction 4/1/89 n/a
CONTENTS
1.1 Scope, Purpose, and Application 3/1/89 mtg
1.2 Organization of the Document 3/1/89 mtg
1.3 Referenced Publications 3/1/89 mtg
1.4 Definitions 3/1/89 mtg
1.5 Compliance 3/1/89 mtg
1.6 Implementation-defined Features 3/15/89 mtg
Values
Results
Data Representation and Typing
Program and Control Structure
Comparisons
Numerical Calculations
User Interface
Input/Output
Compiling
Miscellaneous
Programming Environment
1.7 Language Extensions 3/1/89 mtg
1.8 Portability Issues 2/19/89 2/21/89
Chapter 2. Objects and Types 4/1/89 4/14/89
CONTENTS
2.1 Introduction 3/15/89 mtg
2.2 Types 3/22/89 mtg
Type Hierarchy and Relationships
Data Type Definition
Type Specifiers
2.3 Classes 2/19/89 2/21/89
Introduction to Classes
Metaclasses
Standard Metaclasses
Defining Classes
Creating Instances of Classes
Inheritance
Inheritance of Class Options
Examples
Determining the Class Precedence List
Topological Sorting
Examples
Redefining Classes
Modifying the Structure of Instances
Initializing Newly Added Local Slots
Customizing Class Redefinition
Extensions
Integrating Types and Classes
2.4 Slots 2/19/89 2/21/89
Introduction to Slots
Accessing Slots
Inheritance of Slots and Slot Options
2.5 Objects 2/19/89 2/21/89
Object Creation and Initialization
Initialization Arguments
Declaring the Validity of Initialization Arguments
Defaulting of Initialization Arguments
Rules for Initialization Arguments
Shared-Initialize
Initialize-Instance
Definitions of Make-Instance and Initialize-Instance
Changing the Class of an Instance
Modifying the Structure of the Instance
Initializing Newly Added Local Slots
Customizing the Change of Class of an Instance
Reinitializing an Instance
Customizing Reinitialization
Meta-Objects
Standard Meta-objects
Chapter 3. Object Syntax 4/14/89 5/14/89
CONTENTS
3.1 Character Reader 4/1/89 4/14/89
Reader Algorithm
Numbers as tokens
Symbols as tokens
Macro character collection
3.2 Object Syntax 4/8/89 4/14/89
Chapter 4. Evaluation and Compilation 5/1/89 5/14/89
CONTENTS
4.1 Evaluation Model 4/14/89 5/14/89
Introduction
Context and Environment
The Model
Form evaluation
Self-evaluating forms
Symbols as forms
Conses as forms
Return values
Shadowing
Extent
Generic Functions and Methods
Introduction to Generic Functions
Introduction to Methods
Agreement on Parameter Specializers and Qualifiers
Congruent Lambda-Lists for All Methods of a Generic Function
Keyword Arguments in Generic Functions and Methods
Method Selection and Combination
Determining the Effective Method
Standard Method Combination
Declarative Method Combination
Built-in Method Combination Types
Inheritance of Methods
Lambda-expressions
4.2 Compilation 4/22/89 5/14/89
Chapter 5. Other Topics 4/1/89 4/14/89
CONTENTS
5.1 Errors 3/15/89 mtg
Error Terminology
Condition System Concepts
Condtion System Data Types
Condtion System Operation
5.2 Input/Output 3/8/89 mtg
Files
Character and Binary Input/Output
Loading
5.3 Interface with the Programming Environment 3/8/89 mtg
Top level loop
Environment inquiry
Time
5.4 Generalized Reference 3/8/89 mtg
Chapter 6. Catalog of Tools (A-M) 6/14/89
A-F plus non-alphabetics 4/1/89 4/14/89
G-M 5/1/89 5/14/89
Chapter 7. Catalog of Tools (N-Z) 6/30/89
N-S 6/1/89 6/14/89
T-Z 6/14/89 6/30/89
Glossary 4/1/89 4/14/89
The following will be decided by a letter ballot mailed on 2/21/89:
This list of cut-off-dates (issue CUT-OFF-DATES)
Table of Contents of the standard (issue TOC)
Error terms (issue ERROR-TERMINOLOGY)
Fonts used for distinguishing special words and phrases (issue FONTS)
The following sections in the standard:
1.8 Portability Issues
2.3 Classes
2.4 Slots
2.5 Objects
6.1 Introduction (Format and meaning of tool descriptions in Chapters 6
and 7)
The following will be decided at the 3/89 meeting:
Conformance issues (the issues presented at the 1/89 meeting)
Chapter 1. Introduction (even though all parts have been voted on,
chapter 1 as a whole should be voted on)
The following sections in the standard:
1.1 Scope, Purpose, and Application
1.2 Organization of the Document
1.3 Referenced Publications
1.4 Definitions
1.5 Compliance
1.6 Implementation-defined Features
1.7 Language Extensions
2.1 Introduction
2.2 Types
5.1 Errors
5.2 Input/Output
5.3 Interface with the Programming Environment
5.4 Generalized Reference
The following will be decided by a letter ballot mailed on 4/14/89:
Chapter 2. Objects and Types (ditto, chapter 1)
Chapter 5. Other Topics (ditto, chapter 1)
Glossary
The following sections in the standard:
3.1 Character Reader
3.2 Object Syntax
Chapter 6, A-F plus non-alphabetics
The following will be decided by a letter ballot mailed on 5/14/89:
Chapter 3. Object Syntax (ditto, chapter 1)
Chapter 4. Evaluation and Compilation (ditto, chapter 1)
The following sections in the standard:
4.2 Compilation
G-M
The following will be decided by a letter ballot mailed on 6/14/89:
Chapter 6. Catalog of Tools (A-M) (ditto, chapter 1)
The following section in the standard:
N-S
The following will be decided by a letter ballot mailed on 6/30/89:
Chapter 7. Catalog of Tools (N-Z) (ditto, chapter 1)
The following section in the standard:
T-Z
All comments received according to this schedule will be incorporated
by 6/30/89. Any comments received after the dates listed above will
only be considered if they are of an extreme nature, if they impact
the correctness of the document. Otherwise the comments will be filed
and reserved for the next standard.
To change these dates, a 2/3 vote of the editorial committee
or a majority vote of X3J13 is required.
Rationale:
In order to complete this standard and move on to the next version,
we need to establish dates after which changes will not be allowed.
Current Practice:
None.
Adoption Cost:
None.
Benefits:
Establishing cut-off dates will encourage reviewers to complete
a thorough review in a timely manner.
Conversion Cost:
None.
Aesthetics:
None.
Discussion:
Comment:
Larry Masinter says:
"There are a couple of areas where I expect some further work that might
impact these dates:
a) pathname functions
I'm still hoping to get some cleanup of many of the pathname issues
b) errors signalled, by name
I'm still hoping that we can get at least a partial listing, for each
function, of the possible errors signalled, under what circumstances.
c) pending cleanups
There will probably be 10-15 cleanup issues dealing with ambiguities that
will drag out beyond 3/89. I hope not, but I'm trying to be realistic;
there are just too many "open" issues left."
Jeff Rosenking says:
I agree with the CUT-OFF-DATES proposal and believe that a
strict adherence to it may allow us to complete the standard in
the desired time frame. If an exception situation arises then
the exception clause may be voted on by the editorial committee
and/or X3J13 as a whole; I think this provides enough room for
modification, if it is needed.
One concern I have is on the cut-off-date for the Format of tool
descriptions. The apparent need to modify (shorten) the standard
will most likely require a change in the tool description format.
I personally favor having the present format that we adopted, if
I was drafting the standard for my own use. BUT, since I am not
the only intended user of this standard and since we are not the
only group (country) I agree that we have to consider the
feelings of all those who may use this document.
I will support a modification to the tool formats to extract the
examples field and put them in a library or appendix section. If
addiontal measures need to be taken to "trim" the standard we may
want to limit the tool formats to just include a DESCRIPTION,
SYNTAX, ARGUMENTS and VALUES field, with the other fieldsput into
supplementary volumes of the standard. Perhaps the Japanese, and
also the Germans, English and French, will provide alternative
methods for making the standard more concise. Their input and
agreement, on ANSI Common LISP, will make the standard much more
valuable.
∂21-Feb-89 2201 X3J13-mailer Issue: ERROR-TERMINOLOGY
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 21 Feb 89 22:01:42 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
for skona%csilvax@hub.ucsb.edu; id AA09435; Tue, 21 Feb 89 08:04:17 PST
Message-Id: <8902211604.AA09435@decwrl.dec.com>
From: chapman%aitg.DEC@decwrl.dec.com
Date: 21 Feb 89 11:04
To: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
Subject: Issue: ERROR-TERMINOLOGY
Issue: ERROR-TERMINOLOGY
References: Chapter 5, Section 5.1, Working draft of the standard
CLOS Chapter 1
CLtL Chapter 1, Section 1.2.4
Condition System, Version 18
Category: Clarification
Edit history: 27-DEC-88, Version 1 by Chapman
31-JAN-89, Version 2 by Chapman
6-FEB-89, Version 3 by Chapman, RPG and Barmar comments included
8-FEB-89, Version 4 by Chapman, added more to Current Practice
21-FEB-89, Version 5 by Chapman, added van Roggen and RPG comments
Problem Description:
In CLtL, CLOS and the Condition System, similar but slightly
different language is used to describe
non-normal actions by CL operators. The X3J13 committee needs to
agree on a standard set of terms and their meanings.
Proposal (ERROR-TERMINOLOGY:STANDARD TERMS)
TERM MEANING (including CLtL -> standard conversion)
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
CONFORMING CODE (*) Code that adheres to the following requirements:
(1) Conforming code shall not use any constructions
that are prohibited by the standard.
(2) Conforming code shall not depend on extensions
included in an implementation.
SAFE CODE (*) Code processed with the SAFETY optimization at its
highest setting. SAFETY is a lexical property of code.
UNSAFE CODE (*) Code processed with lower safety levels.
Note: Unsafe code is not necesarily code that does not
do error checking. In many cases it may do less error
checking, but no guarantee that error checking will be
less in unsafe code is expressed or implied.
Implementations are permitted to treat all code as safe
code all the time, by simply ignoring the SAFETY
quality or the entire OPTIMIZE declaration.
IS SIGNALLED An error is signalled in both safe and unsafe code.
Conforming code may rely on the fact that the error
will be signalled in both safe and unsafe code.
Every implementation is required to detect the error
in both safe and unsafe code. For example, "an error
is signalled if UNEXPORT is given a symbol not
accessible in the current package."
SHOULD BE SIGNALLED An error will be signalled in safe code, and an error
might or might not be signalled in unsafe code.
Every implementation is required to detect the error at
least in safe code. When the error is not signalled,
the "consequences are undefined" (see below).
Note: The situation which has been identified as an
error is illegal in all implementations, but some
implementations do not actually detect the situation.
Conforming code known to be safe may rely on the
error's being signalled.
For example, "an error should be signalled if ENDP is
given a non-list argument." (Note that there are no
explicit examples of "should signal an error" in
CLtL outside of the Implementation Notes, from which
this example was taken.)
CONSEQUENCES ARE UNDEFINED The consequences are unpredictable. The consequences
may range from harmless to fatal. No conforming code
can depend on the results or effects. Conforming code
must treat the results and effects as unpredictable.
In places where the words "must", "must not" or "may
not" are used, then "the consequences are undefined"
if the stated requirement is not met, and no specific
consequence is explicitly stated.
For example: CLtL currently says: (page 69) "Once a
name has been declared by DEFCONSTANT to be constant,
any further assignment or binding of that special
variable is an error." This statement would be
transformed to: "Once a name has been declared by
DEFCONSTANT to be constant, any further assignment or
binding of that special variable has undefined
consequences."
Note: A result or effect is unpredictable if it might
vary among implementations or separate invocations
within a single implementation. Theh definition of
a harmless effect is difficult to specify precisely.
It is intended that printing error messages on the
stream *ERROR-OUTPUT* or modifying implementation
data during normal operations are harmless. Allocating
storage, invoking a garbage collector, and re-hashing
are prototypicl examples of things that have harmless
effects. In general, an effect is harmless is if does
not cause the implementation to halt or otherwise enter
an inconsistent state.
An effect is fatal if it causes the implementation to
halt or destroys user, implementation, or system data.
For example, leaving the file system in an inconsistent
state is considered fatal. Other unpredictable effects
include entering the debugger or destroying a user data
structure.
If code depends on a harmless effect, then the result
can be fatal. This is why conforming code may not
depend on such effects.
Implementations are permitted to do anything in this
situation.
RETURN VALUES ARE UNSPECIFIED Only the number and nature of the return values
of a construct are not well specifiedbut any
side-effect and transfer-of-control behavior is well
specified. For example, if the return values of some
function F are unspecified, then an expression such as
(length (list (F))) is still well-specified because it
does not rely on any particular aspect of the value or
values returned by F.
CONSEQUENCES ARE UNSPECIFIED The consequences are unpredictable but harmless.
Implementations are permitted to specify the
consequences of this situation. No conforming code may
depend on the results or effects of this situation,
and all conforming code is required to treat the
results and effects of this situation as unpredictable
but harmless. For example, ``the consequences of the
garbage collector when invoked are unspecified.''
IMPLEMENTATIONS MAY BE EXTENDED An implementation is free to treat
the situation in ANY ONE of the following ways:
(1)When the situation occurs, an error is signalled at
least in safe code,
OR
(2)When the situation occurs, the "consequences are
undefined",
OR
(3)When the situation occurs, the consequences are
defined.
Also, no conforming code can depend on the results or
effects of this situation, and all conforming code must
treat the results and effects of the situation as
undefined. Implementations are permitted to do anything
in this situation. For example, "implementations may be
extended to define other type specifiers to have a
corresponding class."
Note: Users should consult the implementation reference
manual to determine the results or effects of this
situation, but should never depend on the results or
effects of this situation in code to be run on other
implementations.
FREE TO EXTEND THE SYNTAX Implementations are permitted to define unambiguous
extensions to the syntax of the construct being
described. No conforming code can depend on this
extension. All conforming code is required to treat
the syntax as meaningless. The standard may disallow
certain extensions while allowing others. For example,
"no implementation is free to extend the syntax of
DEFCLASS."
WARNING IS ISSUED A warning is issued, as described in WARN, in both safe
and unsafe code and when the situation is detected by
the compiler. Conforming code may rely on the fact
that a warning will be issued in both safe and unsafe
code and when the situation is detected by the compiler.
Every implementation is required to detect this
situation in both safe and unsafe code and when the
situation is detected by the compiler. The presence of
a warning will in no way alter the value returned by
the form which caused the situation to occur. For
example, "a warning is issued by the compiler if a
declaration specifier is not one of those defined in
Chapter 9 of CLtL and has not been declared in a
DECLARATION declaration."
WARNING SHOULD BE ISSUED A warning may be issued. Conforming code may not rely
on the fact that a warning will be issued. If the
situation is detected by the compiler, a warning may or
may not be issued, depending on the implementation.
The presence of a warning will in no way alter the
value returned by the form which caused the situation
to occur. For example, (paraphrasing from CLtL, p. 160)
"a warning should be issued by a compiler if a variable
declared to be ignored is ever referred to or is also
declared special, or if a variable is lexical, never
referred to, and not declared to be ignored."
(*) means this term is used to define other terms in this proposal,
not explicitly used in the standard.
Rationale:
For the standard to be an exact specification, terminology must be
defined and agreed upon.
Current Practice:
CLtL uses "is signalled", "should be signalled", "is an error",
"a warning is issued", and "a warning should be issued".
It also uses "is not permitted", "is desireable that", "is not legitimate",
"is illegal", and "should be" (not associated with "signalled"),
"must be", "must not", as well as other such terms.
The definition of "is an error" in CLtL has come to mean "is
allowed" in places where implementations typically extend the language.
CLOS and the Condition System use "is undefined" "is unspecified",
"may be extended", "free to extend the syntax", and "return values are
undefined".
Adoption Cost:
The cost of adopting this terminology will be mostly associated with the
change from "is an error" to some other more specific terminology
from the above list (typically "is an error" -> "is undefined").
Benefits:
Specific terminology will disambiguate function descriptions which
will save implementor's time and decrease user frustration. Users should
be able to write more portable code if the specification is exact.
Conversion Cost:
See Adoption Cost.
Aesthetics:
None.
Discussion:
Barmar comments:
"... I still hate giving the synonyms "undefined" and "unspecified"
different meanings in the standard, but I've given up on that issue."
RPG responds:
"This point is important. In looking over all intended uses of one over the
other, almost all the time we will be saying that something is undefined
when we want people to not use it because the effects could get you, while
we will be saying that values are unspecified. Other times we will be
saying that whether or not something happens is unspecified.
I doubt we will be able to settle this without fine tuning as we see
the effects in the document."
RPG also says:
Many people seem to believe that saying something is harmless is a useless
thing to say in the standard. If we were to drop this term, then every
time we are ``explicitly vague'' a valid possibility is that a fatal error
can occur. How is it any better to say that what happens when some
operation happens is ``explictly vague''? Also, to try to enumerate a
a set of alternatives presumes we are able to forsee all implementation
technologies, which is simply not possible.
To be more explicit, it is valid to specify what can happen if an illegal
operation is performed. If we are not able to list all such effects, users
can have two questions: Do *I* have to worry about detecting that my
program is about to perform this action because my run will be trashed, or
can I simply let it happen without worry? ``Undefined'' and
``unspecified'' are the terms that anwer these questions.
People have asked what happens if *read-base* is changed, is that
harmless? Well, for one thing changing that is never claimed to be among
the things whose effects is unspecified. Second, the other clauses in the
definition must be read at the same time as you read the one about
harmless effects: programs that depend on the effects are not conforming.
Because *read-base* is something explicitly to depend upon, any change to
it behind your back is not harmless.
Certainly in the definition of harmless effects we can explicitly
rule out unspecified changes to things like *read-base* (we can enumerate
them if you like).
People seem to feel that if we cannot with mathematical precision define a
term we should not use it. The attitude to head in that direction is good,
but if you want to go all the way, we are sadly many years away from a
suitable draft. When I read the current draft (and CLtL for that matter) I
find that almost every paragraph requires my detailed knowledge of Lisp
(and sometimes Lisp implementation technology) to understand. Therefore,
we cannot hope for a self-contained document.
∂21-Feb-89 2149 X3J13-mailer Source for section 1.8
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 21 Feb 89 21:46:38 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
for skona%csilvax@hub.ucsb.edu; id AA09753; Tue, 21 Feb 89 08:08:26 PST
Message-Id: <8902211608.AA09753@decwrl.dec.com>
From: chapman%aitg.DEC@decwrl.dec.com
Date: 21 Feb 89 11:08
To: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
Subject: Source for section 1.8
%%Portability Issues
Following is a list of situations which are known to cause portability
problems between implementations:
\beginlist
%% 5.1.4 3
\item{\bull} {\word Macros}
provided by an {\word implementation} may expand
into code that is not portable among differing {\word implementations}.
\item{\bull} {\datatype Floating}-point numbers
\item{\bull} Implementation-dependent sizes
\item{\bull} Conditions
\item{\bull} Declarations
\item{\bull} Files: treatment of {\datatype pathnames}
native syntax, actual
files present
\item{\bull} {\datatype Packages}
\item{\bull} Deliberate non-portability: {\tt #+}, {\tt #-}
\item{\bull} Extended syntax for some
{\word macros} and {\word special forms}, e.g. {\function if}
\item{\bull} Extended argument syntax for some {\word functions},
e.g. non-standard
{\function open} keywords
\item{\bull} Extended functionality of {\word operators} -
allowing arguments not required by the
standard. e.g. {\tt (string pathname)} and {\tt (intern string package-name)}
\item{\bull} Extended {\function format} operations
\item{\bull} File system capabilities
\item{\bull} I/O to a terminal
\endlist
∂21-Feb-89 2208 X3J13-mailer Source for section 2.5
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 21 Feb 89 22:07:48 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
for skona%csilvax@hub.ucsb.edu; id AA09989; Tue, 21 Feb 89 08:14:05 PST
Message-Id: <8902211614.AA09989@decwrl.dec.com>
From: chapman%aitg.DEC@decwrl.dec.com
Date: 21 Feb 89 11:10
To: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
Subject: Source for section 2.5
%%Objects
\beginsubSection{Object Creation and Initialization}
The generic function {\function make-instance} creates and returns a new
{\word instance} of a {\word class}.
The first argument is a {\word class} or the {\word name} of a
{\word class},
and the remaining arguments form an {\bit initialization argument
list}.
The initialization of a new {\word instance} consists of several distinct
steps, including the following: combining the explicitly supplied
initialization arguments with default values for the unsupplied
initialization arguments, checking the validity of the initialization
arguments, allocating storage for the {\word instance}, filling
{\word slots} with
values, and executing user-supplied {\word methods} that perform additional
initialization. Each step of {\function make-instance} is implemented by a
{\word generic function}
to provide a mechanism for customizing that step. In
addition, {\function make-instance} is itself a {\word generic function}
and thus
also can be customized.
The \OS\ specifies system-supplied primary {\word methods} for each step and
thus specifies a well-defined standard behavior for the entire
initialization process. The standard behavior provides four simple
mechanisms for controlling initialization:
\beginlist
\itemitem{\bull} Declaring a {\datatype symbol}
to be an initialization argument for a
{\word slot}. An initialization argument is declared by using the {\keyword
:initarg} slot
option to {\function defclass}. This provides a mechanism
for supplying a value for a {\word slot} in a call to {\function make-instance}.
\itemitem{\bull} Supplying a default value form for an initialization
argument. Default value forms for initialization arguments are
defined by using the {\keyword :default-initargs} class
option to {\function
defclass}. If an initialization argument is not explicitly provided
as an argument to {\function make-instance}, the default value form is
evaluated in the lexical environment of the {\function defclass} form that
defined it, and the resulting value is used as the value of the
initialization argument.
\itemitem{\bull} Supplying a default initial value form for a {\word slot}.
A
default initial value form for a {\word slot} is defined by using the {\keyword
:initform} slot
option to {\function defclass}. If no initialization
argument associated with that {\word slot}
is given as an argument to {\function
make-instance} or is defaulted by {\keyword :default-initargs}, this
default initial value form is evaluated in the lexical environment of
the {\function defclass} form that defined it, and the resulting value is
stored in the {\word slot}.
The {\keyword :initform} form for a {\word local slot} may be
used when creating an {\word instance}, when updating an
{\word instance} to conform
to a redefined {\word class},
or when updating an {\word instance} to conform to the
definition of a different {\word class}.
The {\keyword :initform} form for a {\word shared
slot} may be used when defining or re-defining the {\word class}.
\itemitem{\bull} Defining {\word methods}
for {\function initialize-instance} and {\function
shared-initialize}. The slot-filling behavior described above is
implemented by a system-supplied primary {\word method} for {\function
initialize-instance} which invokes {\function shared-initialize}. The
generic function {\function shared-initialize} implements the parts of
initialization shared by these four situations: when making an
{\word instance},
when re-initializing an {\word instance}, when updating an {\word instance}
to conform to a redefined {\word class},
and when updating an {\word instance} to
conform to the definition of a different {\word class}. The system-supplied
primary {\word method} for {\function shared-initialize}
directly implements the
slot-filling behavior described above, and {\function initialize-instance}
simply invokes {\function shared-initialize}.
\endlist
\beginsubsubsection{Initialization Arguments}
An initialization argument controls {\word object} creation and
initialization. It is often convenient to use keyword {\datatype symbols}
to name
initialization arguments, but the {\word name} of an initialization argument
can be any {\datatype symbol},
including {\tt nil}. An initialization argument
can be used in two ways: to fill a {\word slot} with a value or to provide an
argument for an initialization {\word method}. A single initialization
argument can be used for both purposes.
An {\bit initialization argument list\/} is a list of alternating
initialization argument names and values. Its structure is identical
to a property list and also to the portion of an argument list
processed for {\keyword \&key} parameters. As in those lists, if an
initialization argument name appears more than once in an
initialization argument list, the leftmost occurrence supplies the
value and the remaining occurrences are ignored. The arguments to
{\function make-instance} (after the first argument) form an {\word initialization
argument list}. Error-checking of initialization argument names is
disabled if the keyword argument pair whose keyword is {\keyword
:allow-other-keys} and whose value is non-{\tt nil} appears in the
{\word initialization argument list}.
An initialization argument can be associated with a {\word slot}.
If the
initialization argument has a value in the {\word initialization argument
list}, the value is stored into the {\word slot}
of the newly created {\word object},
overriding any {\keyword :initform} form associated with the {\word slot}. A
single initialization argument can initialize more than one {\word slot}. An
initialization argument that initializes a {\word shared slot} stores its
value into the {\word shared slot}, replacing any previous value.
An initialization argument can be associated with a {\word method}. When an
{\word object} is created and a particular initialization argument is
supplied, the generic functions {\function initialize-instance}, {\function
shared-initialize}, and {\function allocate-instance} are called with that
initialization argument's name and value as a keyword argument pair.
If a value for the initialization argument is not supplied in the
{\word initialization argument list}, the {\word method's}
{\word lambda-list} supplies a
default value.
Initialization arguments are used in four situations: when making
an {\word instance}, when re-initializing an {\word instance},
when updating an {\word instance} to
conform to a redefined {\word class},
and when updating an {\word instance} to conform
to the definition of a different {\word class}.
Because initialization arguments are used to control the creation and
initialization of an {\word instance} of some particular
{\word class}, we say that an
initialization argument is ``an initialization argument for'' that
{\word class}.
\endsubsubsection%{Initialization Arguments}
\beginsubsubsection{Declaring the Validity of Initialization Arguments}
Initialization arguments are checked for validity in each of the four
situations that use them. An initialization argument may be valid in
one situation and not another. For example, the system-supplied
primary {\word method}
for {\function make-instance} defined for the class {\datatype
standard-class} checks the validity of its initialization arguments
and signals an error if an initialization argument is supplied that is
not declared as valid in that situation.
There are two means for declaring initialization arguments valid.
\beginlist
\itemitem{\bull} Initialization arguments that fill {\word slots}
are declared as
valid by the {\keyword :initarg} slot
option to {\function defclass}. The {\keyword
:initarg} slot
option is inherited from {\word superclasses}. Thus the set of
valid initialization arguments that fill {\word slots} for a {\word class} is the
union of the initialization arguments that fill {\word slots} declared as
valid by that {\word class} and its {\word superclasses}.
Initialization arguments
that fill {\word slots} are valid in all four contexts.
\itemitem{\bull} Initialization arguments that supply arguments to {\word
methods}
are declared as valid by defining those {\word methods}. The keyword name of
each keyword parameter specified in the {\word method's}
{\word lambda-list} becomes
an initialization argument for all {\word classes} for which the {\word
method} is
applicable. Thus {\word method} inheritance controls the set of valid
initialization arguments that supply arguments to {\word methods}. The
{\word generic functions} for which {\word method}
definitions serve to declare
initialization arguments valid are as follows:
\beginlist
\itemitem{--} Making an {\word instance} of a {\word class}:
{\function allocate-instance},
{\function initialize-instance}, and {\function shared-initialize}.
Initialization arguments declared as valid by these {\word methods} are
valid when making an {\word instance} of a {\word class}.
\itemitem{--} Re-initializing an {\word instance}: {\function reinitialize-instance}
and {\function shared-initialize}.
Initialization arguments declared as valid by these {\word methods} are
valid when re-initializing an {\word instance}.
\itemitem{--} Updating an {\word instance} to conform to a redefined
{\word class}:
{\function update-instance-for-redefined-class} and {\function shared-initialize}.
Initialization arguments declared as valid by these {\word methods} are
valid when updating an {\word instance} to conform to a redefined {\word
class}.
\itemitem{--} Updating an {\word instance} to conform to the definition of a
different {\word class}:
{\function update-instance-for-different-class} and {\function
shared-initialize}.
Initialization arguments declared as valid by these {\word methods} are
valid when updating an {\word instance} to conform to the definition
of a different {\word class}.
\endlist
\endlist
The set of valid initialization arguments for a {\word class} is the set of
valid initialization arguments that either fill {\word slots} or supply
arguments to {\word methods}, along with the predefined initialization
argument {\keyword :allow-other-keys}. The default value for {\keyword
:allow-other-keys} is {\tt nil}. The meaning of {\keyword
:allow-other-keys} is the same as when it is passed to an ordinary
{\word function}.
\endsubsubsection%{Declaring the Validity of Initialization Arguments}
\beginsubsubsection{Defaulting of Initialization Arguments}
A default value {\word form} can be supplied for an initialization
argument by using the {\keyword :default-initargs} {\word class} option. If an
initialization argument is declared valid by some particular {\word class},
its default value form might be specified by a different {\word class}.
In this case {\keyword :default-initargs} is used to supply a default value
for an inherited initialization argument.
The {\keyword :default-initargs} option is used only to provide default
values for initialization arguments; it does not declare a {\datatype symbol}
as a
valid initialization argument name. Furthermore, the {\keyword
:default-initargs} option is used only to provide default values for
initialization arguments when making an {\word instance}.
The argument to the {\keyword :default-initargs} class
option is a list of
alternating initialization argument names and {\word forms}.
Each {\word form} is the
default value form for the corresponding initialization
argument. The default value {\word form} of an initialization
argument is used and evaluated only if that initialization argument
does not appear in the arguments to {\function make-instance} and is not
defaulted by a more specific {\word class}. The default value {\word form} is
evaluated in the lexical environment of the {\function defclass} form that
supplied it; the resulting value is used as the initialization
argument's value.
The initialization arguments supplied to {\function make-instance} are combined
with defaulted initialization arguments to produce a {\bit
defaulted initialization argument list}. A {\word defaulted initialization
argument list} is a list of alternating initialization argument names and
values in which unsupplied initialization arguments are defaulted and in
which the explicitly supplied initialization arguments appear earlier in
the list than the defaulted initialization arguments. Defaulted
initialization arguments are ordered according to the order in the {\word
class
precedence list} of the {\datatype classes} that supplied the default values.
There is a distinction between the purposes of the {\keyword
:default-initargs} and the {\keyword :initform} options with respect to the
initialization of {\word slots}. The {\keyword :default-initargs}
class option
provides a mechanism for the user to give a default value {\word form}
for an initialization argument without knowing whether the
initialization argument initializes a {\word slot}
or is passed to a {\word method}.
If that initialization argument is not explicitly supplied in a call
to {\function make-instance}, the default value {\word form} is used, just
as if it had been supplied in the call. In contrast, the {\keyword
:initform} slot option provides a mechanism for the user to give a
default initial value form for a {\word slot}. An {\keyword :initform} form is
used to initialize a {\word slot} only if no initialization argument
associated with that {\word slot} is given as an argument to {\function
make-instance} or is defaulted by {\keyword :default-initargs}.
The order of evaluation of default value {\word forms} for initialization
arguments and the order of evaluation of {\keyword :initform} forms are
undefined. If the order of evaluation is important, {\function
initialize-instance} or {\function shared-initialize} {\word methods}
should be used
instead.
\endsubsubsection%{Defaulting of Initialization Arguments}
\beginsubsubsection{Rules for Initialization Arguments}
The {\keyword :initarg} slot option may be specified more than
once for a given {\word slot}.
The following rules specify when initialization arguments may be
multiply defined:
\beginlist
\itemitem{\bull} A given initialization argument can be used to
initialize more than one {\word slot} if the same initialization argument name
appears in more than one {\keyword :initarg} slot option.
\itemitem{\bull} A given initialization argument name can appear
in the {\word lambda-list} of more than one initialization {\word method}.
\itemitem{\bull} A given initialization argument name can
appear both in an {\keyword :initarg} slot option and
in the {\word lambda-list}
of an initialization {\word method}.
\endlist
If two or more initialization arguments that initialize
the same {\word slot}
are given in the arguments to {\function make-instance}, the
leftmost of these initialization arguments in the {\word initialization
argument list} supplies the value, even if the initialization arguments
have different names.
If two or more different initialization arguments that
initialize the same {\word slot} have default values and none is given
explicitly in the arguments to {\function make-instance}, the initialization
argument that appears in a {\keyword :default-initargs} class
option in the
most specific of the {\word classes} supplies the value. If a single {\keyword
:default-initargs} class option specifies two or more initialization
arguments that initialize the same {\word slot} and none is given explicitly
in the arguments to {\function make-instance}, the leftmost in the {\keyword
:default-initargs} class
option supplies the value, and the values of
the remaining default value {\word forms} are ignored.
Initialization arguments given explicitly in the
arguments to {\function make-instance} appear to the left of defaulted
initialization arguments. Suppose that the classes $C\sub 1$ and
$C\sub 2$ supply the values of defaulted initialization arguments for
different {\word slots}, and suppose that $C\sub 1$ is more specific than
$C\sub 2$; then the defaulted initialization argument whose value is
supplied by $C\sub 1$ is to the left of the defaulted initialization
argument whose value is supplied by $C\sub 2$ in the {\word defaulted
initialization argument list}. If a single {\keyword :default-initargs}
class option supplies the values of initialization arguments for two
different {\datatype slots}, the
initialization argument whose value is specified
farther to the left in the {\keyword :default-initargs} class
option appears
farther to the left in the {\word defaulted initialization argument list}.
If a {\word slot} has both an {\keyword :initform} form and an {\keyword
:initarg} slot option, and the initialization argument is defaulted
using {\keyword :default-initargs} or is supplied to {\function make-instance},
the captured {\keyword :initform} form is neither used nor evaluated.
The following is an example of the above rules:
\screen!
(defclass q () ((x :initarg a)))
(defclass r (q) ((x :initarg b))
(:default-initargs a 1 b 2))
\endscreen!
$$\vbox{\halign{\strut#\hfil&\quad\hfil#\hfil&\quad\hfil#\hfil\cr
{}&\bf Defaulted&{}\cr
\bf Form&\bf Initialization Argument List&\bf Contents of Slot\cr
\noalign{\hrule}
{\tt (make-instance 'r)}&{\tt (a 1 b 2)}&{\tt 1}\cr
{\tt (make-instance 'r 'a 3)}&{\tt (a 3 b 2)}&{\tt 3}\cr
{\tt (make-instance 'r 'b 4)}&{\tt (b 4 a 1)}&{\tt 4}\cr
{\tt (make-instance 'r 'a 1 'a 2)}&{\tt (a 1 a 2 b 2)}&{\tt 1}\cr}}$$
\endsubsubsection%{Rules for Initialization arguments}
\beginsubsubsection{Shared-Initialize}
The generic function {\function shared-initialize} is used to fill the {\word
slots}
of an {\word instance}
using initialization arguments and {\keyword :initform}
forms when an {\word instance} is created, when an
{\word instance} is re-initialized,
when an {\word instance}
is updated to conform to a redefined {\word class}, and when
an {\word instance} is updated to conform to a different {\word class}.
It uses
standard {\word method} combination. It takes the following arguments: the
{\word instance} to be initialized, a
specification of a set of {\word names} of {\word slots}
{\word accessible} in that {\word instance}, and any number of initialization
arguments. The arguments after the first two must form an {\word initialization
argument list}.
The second argument to {\function shared-initialize} may be one of the following:
\beginlist
\itemitem{\bull} It can be {\datatype list} of {\word slot} names, which specifies
the set of those {\word slot} names.
\itemitem{\bull} It can be {\tt nil}, which specifies the empty set of
{\word slot} names.
\itemitem{\bull} It can be the symbol {\tt t}, which specifies the set of
all of the {\word slots}.
\endlist
There is a system-supplied primary {\word method} for {\function
shared-initialize} whose first parameter specializer is the class {\datatype
standard-object}. This {\word method} behaves as follows on each {\word
slot},
whether shared or local:
\beginlist
\itemitem{\bull} If an initialization argument in the {\word initialization
argument list} specifies a value for that {\word slot}, that value is stored
into the {\word slot}, even if a value has already been stored in the {\word
slot}
before the {\word method} is run.
The affected {\word slots} are independent of which
{\word slots} are indicated by the second argument to {\function shared-initialize}.
\itemitem{\bull} Any {\word slots}
indicated by the second argument that are still
unbound at this point are initialized according to their {\keyword
:initform} forms. For any such {\word slot}
that has an {\keyword :initform} form,
that {\word form} is evaluated in the
lexical environment of its defining {\function
defclass} form and the result is stored into the {\word slot}.
For example,
if a {\keyword :before} method stores a value in the
{\word slot}, the {\keyword
:initform} form will not be used to supply a value for the {\word slot}. If
the second argument specifies a {\word name} that does not correspond to any
{\word slots} {\word accessible}
in the {\word instance}, the results are unspecified.
\itemitem{\bull} The rules mentioned in the section ``Rules for
Initialization Arguments'' are obeyed.
\endlist
The generic function {\function shared-initialize} is called by the
system-supplied primary {\word methods}
for {\function reinitialize-instance}, {\function
update-instance-for-different-class}, {\function
update-instance-for-redefined-class}, and {\function
initialize-instance}. Thus, {\word methods} can be written for {\function
shared-initialize} to specify actions that should be taken in all of
these contexts.
\endsubsubsection%{Shared-Initialize}
\beginsubsubsection{Initialize-Instance}
The generic function {\function initialize-instance} is called by {\function
make-instance} to initialize a newly created {\word instance}. It uses
standard {\word method} combination. {\word Methods} for {\function
initialize-instance} can be defined in order to perform any
initialization that cannot be achieved with the simple {\word slot}-filling
mechanisms.
During initialization, {\function initialize-instance} is invoked
after the following actions have been taken:
\beginlist
\itemitem{\bull} The {\word defaulted initialization argument list}
has been computed by
combining the supplied {\word initialization argument list} with any
default
initialization arguments for the {\word class}.
\itemitem{\bull} The validity of the {\word defaulted initialization argument
list} has been checked. If any of the initialization arguments has not
been declared as valid, an error is signalled.
\itemitem{\bull} A new {\word instance} whose {\word slots}
are unbound has been created.
\endlist
The generic function {\function initialize-instance} is called with the
new {\word instance} and the defaulted initialization arguments. There is
a system-supplied primary {\word method} for {\function initialize-instance}
whose parameter specializer is the class {\datatype standard-object}. This
{\word method} calls the generic function
{\function shared-initialize} to fill in
the {\word slots} according to the initialization arguments and the {\keyword
:initform} forms for the {\word slots}; the generic function {\function
shared-initialize} is called with the following arguments: the {\word instance},
{\tt t}, and the defaulted initialization arguments.
Note that {\function initialize-instance} provides the {\word defaulted
initialization argument list} in its call to {\function shared-initialize},
so the first step performed by the system-supplied primary {\word method} for
{\function shared-initialize} takes into account both the initialization
arguments provided in the call to {\function make-instance} and the
{\word defaulted initialization argument list}.
{\word Methods} for {\function initialize-instance} can be defined to specify
actions to be taken when an {\word instance} is initialized.
If only {\keyword :after}
methods for {\function initialize-instance} are defined, they will be
run after the system-supplied primary {\word method} for initialization and
therefore will not interfere with the default behavior of {\function
initialize-instance}.
The \OS\ provides two {\word functions} that are useful in the bodies of {\function
initialize-instance} methods. The function {\function slot-boundp}
returns a boolean value that indicates whether a specified {\word slot} has a
value; this provides a mechanism for writing {\keyword :after} methods for
{\function initialize-instance} that initialize {\word slots} only if they have
not already been initialized. The function {\function slot-makunbound}
causes the {\word slot} to have no value.
\endsubsubsection%{INITIALIZE-INSTANCE}
\beginsubsubsection{Definitions of Make-Instance and Initialize-Instance}
The generic function {\function make-instance} behaves as if it were defined as
follows, except that certain optimizations are permitted:
\screen!
(defmethod make-instance ((class standard-class) &rest initargs)
(setq initargs (default-initargs class initargs))
...
(let ((instance (apply #'allocate-instance class initargs)))
(apply #'initialize-instance instance initargs)
instance))
(defmethod make-instance ((class-name symbol) &rest initargs)
(apply #'make-instance (find-class class-name) initargs))
\endscreen!
%This is the code:
%(defmethod make-instance ((class standard-class) &rest initargs)
% (setq initargs (default-initargs class initargs))
% (let* ((proto (class-prototype class))
% (methods
% (append
% (compute-applicable-methods #'allocate-instance `(,class))
% (compute-applicable-methods #'initialize-instance `(,proto))
% (compute-applicable-methods #'shared-initialize `(,proto nil)))))
% (unless
% (subsetp
% (let ((keys '()))
% (do ((plist initargs (cddr plist)))
% ((null plist) keys)
% (push (car plist) keys)))
% (union
% (class-slot-initargs class)
% (reduce #'union (mapcar #'function-keywords methods))))
% (error ...)))
% (let ((instance (apply #'allocate-instance class initargs)))
% (apply #'initialize-instance instance initargs)
% instance))
The elided code in the definition of {\function make-instance} checks the
supplied initialization arguments to determine whether an initialization
argument was supplied that neither filled a {\word slot} nor supplied an argument
to an applicable {\word method}.
%This check could be implemented using the generic
%functions ???{\function class-prototype},??? {\function
%compute-applicable-methods}, {\function
%function-keywords}, and ???{\function class-slot-initargs}. ???
%See Chapter~3 for a
%description of this initialization argument check.
The generic function {\function initialize-instance} behaves as if it were
defined as follows, except that certain optimizations are permitted:
\screen!
(defmethod initialize-instance ((instance standard-object) &rest initargs)
(apply #'shared-initialize instance t initargs)))
\endscreen!
These procedures can be customized at either the Programmer Interface level,
the meta-object level, or both.
Customizing at the Programmer Interface level includes using the {\keyword
:initform}, {\keyword :initarg}, and {\keyword :default-initargs} options to
{\function defclass}, as well as defining {\word methods}
for {\function make-instance}
and {\function initialize-instance}. It is also possible to define
{\word methods} for {\function shared-initialize}, which would be invoked by the
generic functions {\function reinitialize-instance}, {\function
update-instance-for-redefined-class}, {\function
update-instance-for-different-class}, and {\function
initialize-instance}.
The meta-object level supports additional
customization.
%by allowing methods to be defined on {\function
%make-instance},
%???{\bf default-initargs}???, and {\function
%allocate-instance}.
%Chapters~2 and~3 document each of these generic
%functions and the system-supplied primary methods.
Implementations are permitted to make certain optimizations to {\function
initialize-instance} and {\function shared-initialize}.
%The
%description of {\bf shared-initialize} in Chapter~2 mentions the
%possible optimizations.
%Because of optimization, the check for valid initialization arguments
%might not be implemented using the generic functions
%???{\function class-prototype},???
%{\function compute-applicable-methods}, {\function
%function-keywords}, and
%???{\function class-slot-initargs}???. In addition,
%methods for the generic function
%???{\function default-initargs},??? and the
%system-supplied primary methods for
%???{\function allocate-instance}???, {\function
%initialize-instance}, and {\function shared-initialize} might not be called on
%every call to {\function make-instance} or might not receive exactly the
%arguments that would be expected.
\endsubsubsection%{Definitions of MAKE-INSTANCE and Initialize-Instance}
\endsubSection%{Object Creation and Initialization}
\beginsubSection{Changing the Class of an Instance}
The function {\function change-class} can be used to change the {\word class}
of an
{\word instance} from its current class,
$C\sub {\hbox{{\prmseven from}}}$, to a
different class, $C\sub {\hbox{{\prmseven to}}}$; it changes the
structure of the {\word instance} to conform to the definition of the class
$C\sub {\hbox{{\prmseven to}}}$.
Note that changing the {\word class} of an {\word instance}
may cause {\word slots} to be
added or deleted.
When {\function change-class} is invoked on an {\word instance},
a two-step updating
process takes place. The first step modifies the structure of
the {\word instance}
by adding new local {\word slots} and discarding local {\word slots} that
are not specified in the new version of the {\word instance}. The second step
initializes the newly added local {\word slots} and performs any other
user-defined actions. These two steps are further described in the two
following sections.
\beginsubsubsection{Modifying the Structure of the Instance}
In order to make the {\word instance} conform to the class $C\sub
{\hbox{{\prmseven to}}}$, {\word local slots} specified by the class $C\sub
{\hbox{{\prmseven to}}}$ that are not specified by the class $C\sub
{\hbox{{\prmseven from}}}$ are added, and {\word local slots} not specified by
the class $C\sub {\hbox{{\prmseven to}}}$ that are specified by the
class $C\sub {\hbox{{\prmseven from}}}$ are discarded.
The values of {\word local slots} specified by both the class $C\sub
{\hbox{{\prmseven to}}}$ and the class $C\sub {\hbox{{\prmseven
from}}}$ are retained. If such a {\word local slot} was unbound, it remains
unbound.
The values of {\word slots} specified as shared in the class $C\sub
{\hbox{{\prmseven from}}}$ and as local in the class $C\sub
{\hbox{{\prmseven to}}}$ are retained.
This first step of the update does not affect the values of any {\word shared
slots}.
\endsubsubsection%{Modifying the Structure of the Instance}
\beginsubsubsection{Initializing Newly Added Local Slots}
The second step of the update initializes the newly added {\word slots} and
performs any other user-defined actions. This step is implemented by
the generic function {\function update-instance-for-different-class}. The
generic function {\function update-instance-for-different-class} is invoked
by {\function change-class} after the first step of the update has been
completed.
The generic function {\function update-instance-for-different-class} is
invoked on two arguments computed by {\function change-class}. The first
argument passed is a copy of the {\word instance} being updated and is an
{\word instance} of the class $C\sub {\hbox{{\prmseven from}}}$; this copy has
{\word dynamic extent} within the generic function {\function change-class}.
The
second argument is the {\word instance} as updated so far by {\function change-class}
and is an {\word instance} of the class $C\sub {\hbox{{\prmseven to}}}$.
The generic function {\function update-instance-for-different-class} also
takes any number of initialization arguments. When it is called by
{\function change-class}, no initialization arguments are provided.
There is a system-supplied primary {\word method} for {\function
update-instance-for-different-class} that has two parameter
specializers, each of which is the class {\datatype standard-object}. First
this {\word method} checks the validity of initialization arguments and
signals an error if an initialization argument is supplied that is not
declared as valid. (See the section ``Declaring the Validity of
Initialization Arguments'' for more information.) Then it calls the
generic function {\function shared-initialize} with the following arguments:
the {\word instance}, a list of {\word names} of the newly added
{\word slots}, and the
initialization arguments it received.
\endsubsubsection%{Initializing Newly added Local Slots}
\beginsubsubsection{Customizing the Change of Class of an Instance}
{\word Methods}
for {\function update-instance-for-different-class} may be defined
to specify actions to be taken when an {\word instance} is updated. If only
{\keyword :after} methods for {\function update-instance-for-different-class} are
defined, they will be run after the system-supplied primary {\word method} for
initialization and will not interfere with the default behavior of
{\function update-instance-for-different-class}. Because no initialization
arguments are passed to {\function update-instance-for-different-class} when
it is called by {\function change-class},
the {\keyword :initform} forms for {\word slots}
that are filled by {\keyword :before} methods for {\function
update-instance-for-different-class} will not be evaluated by {\function
shared-initialize}.
{\word Methods}
for {\function shared-initialize} may be defined to customize {\word class}
redefinition. See the section ``Shared-Initialize'' for more
information.
\endsubsubsection%{Customizing the Change of Class of an Instance}
\endsubSection%{Changing the Classes of an Instance}
\beginsubSection{Reinitializing an Instance}
The generic function {\function reinitialize-instance} may be used to change
the values of {\word slots} according to initialization arguments.
The process of reinitialization changes the values of some {\word slots} and
performs any user-defined actions. It does not modify the structure
of an {\word instance} to add or delete {\word slots},
and it does not use any {\keyword
:initform} forms to initialize {\word slots}.
The generic function {\function reinitialize-instance} may be called
directly. It takes one required argument, the {\word instance}. It also
takes any number of initialization arguments to be used by {\word methods} for
{\function reinitialize-instance} or for {\function shared-initialize}. The
arguments after the required {\word instance} must form an
{\word initialization
argument list}.
There is a system-supplied primary {\word method} for {\function
reinitialize-instance} whose parameter specializer is the class {\datatype
standard-object}. First this {\word method} checks the validity of
initialization arguments and signals an error if an initialization
argument is supplied that is not declared as valid. (See the section
``Declaring the Validity of Initialization Arguments'' for more
information.) Then it calls the generic function {\function
shared-initialize} with the following arguments: the {\word instance}, {\tt
nil}, and the initialization arguments it received.
\beginsubsubsection{Customizing Reinitialization}
{\word Methods} for {\function reinitialize-instance} may be defined to specify
actions to be taken when an {\word instance} is updated.
If only {\keyword :after}
methods for {\function reinitialize-instance} are defined, they will be run
after the system-supplied primary {\word method} for initialization and
therefore will not interfere with the default behavior of {\function
reinitialize-instance}.
{\word Methods} for {\function shared-initialize} may
be defined to customize {\word class}
redefinition. See the section ``Shared-Initialize'' for more
information.
\endsubsubsection%{Customizing Reinitialization}
\endsubSection%{Reinitializing an Instance}
\beginsubSection{Meta-Objects}
The implementation of the \OS\ manipulates {\word classes},
{\word methods}, and {\word generic
functions}.
The \OS\ contains a set of {\word generic
functions} defined by {\word methods} on {\word classes};
the behavior of those {\word generic
functions} defines the behavior of the \OS.
The {\word instances} of the {\word classes}
on which those {\word methods} are defined are called meta-objects.
%Programming
%at the meta-object protocol level involves defining new classes of
%meta-objects along with methods specialized on these classes.
\beginsubSection{Standard Meta-objects}
The \OS\ supplies a set of meta-objects, called standard
meta-objects. These include the class {\datatype standard-object} and
{\word instances} of the classes {\datatype standard-method}, {\datatype
standard-generic-function}, and {\datatype method-combination}.
\beginlist
\itemitem{\bull}
The class {\datatype standard-method} is the default {\word class} of
{\word methods} defined by the forms {\function defmethod}, {\function
defgeneric}, {\function generic-function}, {\function generic-flet}, {\function
generic-labels}, and {\function with-added-methods}.
\itemitem{\bull}
The class {\datatype standard-generic-function} is the default {\word class} of
{\word generic functions} defined by the forms {\function defmethod},
{\function defgeneric}, {\function generic-function}, {\function generic-flet},
{\function generic-labels}, {\function with-added-methods}, and {\function defclass}.
\itemitem{\bull} The {\word class} named {\datatype standard-object}
is an {\word instance} of
the class {\datatype standard-class} and is a {\word superclass}
of every {\word class} that
is an {\word instance} of {\datatype standard-class}
except itself and {\datatype
structure-class}.
\itemitem{\bull} Every {\word method} combination object is an {\word instance}
of a
{\word subclass} of the class {\datatype method-combination}.
\endlist
\endsubSection%{Standard Meta-objects}
\endSection%{Meta-Objects}
∂21-Feb-89 2209 X3J13-mailer Source for section 2.3
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 21 Feb 89 22:09:26 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
for skona%csilvax@hub.ucsb.edu; id AA09793; Tue, 21 Feb 89 08:11:01 PST
Message-Id: <8902211611.AA09793@decwrl.dec.com>
From: chapman%aitg.DEC@decwrl.dec.com
Date: 21 Feb 89 11:09
To: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
Subject: Source for section 2.3
%% Classes
\beginsubSection{Introduction to Classes}
A {\bit class\/} is an {\word object}
that determines the structure and behavior
of a set of other {\word objects}, which are called its {\bit instances}.
A {\word class} can inherit structure and behavior from other {\word classes}.
A {\word class} whose definition refers to other {\word classes}
for the purpose of
inheriting from them is said to be a {\bit subclass\/} of each of
those {\word classes}. The {\word classes} that are designated for purposes of
inheritance are said to be {\bit superclasses\/}
of the inheriting {\word class}.
A {\word class} can have a {\bit name}. The function {\function class-name} takes a
{\word class} object and returns its {\word name}.
The {\word name} of an anonymous {\word class} is
{\tt nil}. A {\datatype symbol}
can {\bit name\/} a {\word class}. The function {\function
find-class} takes a {\datatype symbol} and returns the {\word class} that the
{\datatype symbol}
names. A {\word class} has a {\bit proper name\/} if the
{\word name} is a {\datatype symbol}
and if the {\word name} of the {\word class}
names that {\word class}. That is, a class~$C$ has the {\bit proper
name\/}~$S$ if $S=$ {\tt (class-name $C$)} and $C=$ {\tt (find-class
$S$)}. Notice that it is possible for {\tt (find-class $S\sub 1$)}
$=$ {\tt (find-class $S\sub 2$)} and $S\sub 1\neq S\sub 2$.
If $C=$ {\tt (find-class $S$)}, we say that $C$ is the class named
$S$.
A class $C\sub{1}$ is a direct {\bit superclass\/} of a class
$C\sub{2}$ if $C\sub{2}$ explicitly designates $C\sub{1}$ as a
{\word superclass} in its definition. In this case $C\sub{2}$ is a
direct {\bit subclass\/} of $C\sub{1}$. A class $C\sub{n}$ is a {\bit
superclass\/} of a class $C\sub{1}$ if there exists a series of
classes $C\sub{2},\ldots,C\sub{n-1}$ such that $C\sub{i+1}$ is a
direct {\word superclass} of $C\sub{i}$ for $1 \leq i<n$. In this case,
$C\sub{1}$ is a {\bit subclass\/} of $C\sub{n}$. A {\word class} is
considered neither a {\word superclass} nor a {\word subclass}
of itself. That is, if
$C\sub{1}$ is a {\word superclass} of $C\sub{2}$, then $C\sub{1} \neq
C\sub{2}$. The set of {\word classes} consisting of some given
class $C$ along with all of its {\word superclasses} is called ``$C$ and its
superclasses.''
Each {\word class}
has a {\bit class precedence list}, which is a total ordering
on the set of the given {\word class} and its
{\word superclasses}. The total ordering
is expressed as a list ordered from most specific to least specific.
The {\word class precedence list} is used in several ways. In general, more
specific {\word classes} can {\bit shadow}, or override, features that would
otherwise be inherited from less specific {\word classes}. The
{\word method} selection
and combination process uses the {\word class precedence list} to order
{\word methods}
from most specific to least specific.
When a {\word class} is defined, the order
in which its direct {\word superclasses}
are mentioned in the defining form is important. Each {\word class} has a
{\bit local precedence order\/}, which is a list consisting of the
{\word class} followed by its direct
{\word superclasses} in the order mentioned
in the defining {\word form}.
A {\word class precedence list}
is always consistent with the {\word local precedence
order} of each {\word class} in the list.
The {\word classes} in each {\word local precedence
order} appear within the {\word class precedence list} in the same order. If
the {\word local precedence orders} are inconsistent with each other,
no {\word class
precedence list} can be constructed, and an error is signalled.
The {\word class precedence list} and its computation is discussed
in the section ``Determining the Class Precedence List.''
{\word Classes} are organized into a directed acyclic graph. There are
two distinguished {\word classes},
named {\datatype t} and {\datatype standard-object}.
The {\word class} named {\datatype t} has no {\word superclasses}.
It is a {\word superclass} of
every {\word class} except itself.
The {\word class} named {\datatype standard-object} is
an {\word instance} of
the class {\datatype standard-class} and is a {\word superclass} of
every {\word class} that is an
{\word instance} of {\datatype standard-class} except itself.
There is a mapping from the object system {\word class} space into
the {\word type} space. Many of the standard {\word types}
specified in this document have a corresponding
{\word class} that has the same {\word name} as the
{\word type}. Some {\word types} do
not have a corresponding {\word class}. The integration of
the {\word type} and {\word class}
systems is discussed in the section ``Integrating Types and Classes.''
{\word Classes} are represented by {\word objects} that are themselves
{\word instances} of {\word classes}.
The {\word class} of the {\word class} of an {\word object} is termed
the {\bit metaclass\/} of that {\word object}. When no misinterpretation is
possible, the term {\bit metaclass\/} will be used to refer to a {\word
class}
that has {\word instances} that are themselves
{\word classes}. The {\word metaclass}
determines the form of inheritance used by the {\word classes} that are its
{\word instances} and the representation of the
{\word instances} of those {\word classes}.
The \CLOS\ provides a default {\word metaclass},
{\datatype standard-class}, that is
appropriate for most programs.
%The meta-object protocol provides
%mechanisms for defining and using new metaclasses.
Except where otherwise specified, all {\word classes} mentioned in this
standard are {\word instances} of the
class {\datatype standard-class}, all {\word generic
functions} are {\word instances}
of the class {\datatype standard-generic-function},
and all {\word methods} are {\word instances} of the class {\datatype standard-method}.
\endsubSection%{Classes}
%\beginsubsubsection{Metaclasses}
%??? Is the following paragraph necessary in this specification???
%
%The {\bit metaclass\/} of an object is the class of its class. The
%metaclass determines the representation of instances of its instances and
%the forms of inheritance used by its instances for slot descriptions and
%method inheritance. The metaclass mechanism can be used to provide
%particular forms of optimization or to tailor the \CLOS\ for particular
%uses.
%The protocol for defining metaclasses is discussed in the chapter
%``The \CLOS\ Meta-Object Protocol.''
%\endsubsubsection%{Metaclasses}
\beginsubsubsection{Standard Metaclasses}
The \CLOS\ provides a number of predefined {\word metaclasses}.
These include the
classes {\datatype standard-class}, {\datatype built-in-class}, and {\datatype
structure-class}:
\beginlist
\itemitem{\bull}
The class {\datatype standard-class} is the default {\word class} of
{\word classes} defined
by {\function defclass}.
\itemitem{\bull} The class {\datatype built-in-class} is the {\word class} whose
{\word instances} are {\word classes}
that have special implementations with
restricted capabilities. Any {\word class} that corresponds to a standard
{\word type}
might be an {\word instance} of {\datatype built-in-class}.
The predefined {\word type} specifiers that are required to have
corresponding {\word classes}
are listed in Figure {\chapno--\the\capno}. It is
implementation-dependent
whether each of these {\word classes} is implemented as a
{\datatype built-in-class}.
\itemitem{\bull}
All {\word classes} defined by means of {\function defstruct}
are {\word instances} of
{\datatype structure-class}.
\endlist
\endsubsubsection%{Standard Metaclasses}
\beginsubSection{Defining Classes}
The macro {\function defclass} is used to define a new named {\word class}.
%The
%syntax for {\function defclass} is given in Figure??
The definition of a {\word class} includes:
\beginlist
\itemitem{\bull} The {\word name} of the new {\word class}.
For newly defined {\word classes}
this {\word name} is a proper name.
\itemitem{\bull} The list of the direct {\word superclasses}
of the new {\word class}.
\itemitem{\bull} A set of {\bit slot} specifiers. Each {\word slot} specifier
includes the {\word name} of the {\word slot}
and zero or more {\bit slot} options. A
{\word slot} option pertains only to a single {\word slot}.
If a {\word class} definition
contains two {\word slot}
specifiers with the same {\word name}, an error is signalled.
\itemitem{\bull} A set of {\bit class} options.
Each {\word class} option pertains
to the {\word class} as a whole.
\endlist
The {\word slot}
options and {\word class} options of the {\function defclass} form provide
mechanisms for the following:
\beginlist
\itemitem{\bull} Supplying a default initial value {\word form}
for a given {\word slot}.
\itemitem{\bull} Requesting that {\word methods} for {\word generic functions}
be automatically generated for reading or writing {\word slots}.
\itemitem{\bull} Controlling whether a given {\word slot} is shared by
{\word instances}
of the {\word class} or whether each
{\word instance} of the {\word class} has its own {\word slot}.
\itemitem{\bull} Supplying a set of initialization arguments and initialization
argument defaults to be used in {\word instance} creation.
%\itemitem{\bull} Requesting that a constructor function be automatically
%generated for making instances of the new class.
\itemitem{\bull} Indicating that the {\word metaclass}
is to be other than the default.
\itemitem{\bull} Indicating the expected {\word type}
for the value stored in the {\word slot}.
\itemitem{\bull} Indicating the documentation string for the {\word slot}.
\endlist
\endsubSection%{Defining Classes}
\goodbreak
\beginsubSection{Creating Instances of Classes}
The generic function {\function make-instance} creates and returns a new
{\word instance} of a {\word class}.
The \OS\ provides several mechanisms for
specifying how a new {\word instance} is to be initialized. For example, it
is possible to specify the initial values for {\word slots} in newly created
{\word instances}
either by giving arguments to {\function make-instance} or by
providing default initial values. Further initialization activities
can be performed by {\word methods} written for {\word generic functions}
that are
part of the initialization protocol. The complete initialization
protocol is described in the section ``Object Creation and
Initialization.''
\endsubSection%{Creating Instances of Classes}
\beginsubSection{Inheritance}
A {\word class}
can inherit {\word methods}, {\word slots},
and some {\function defclass} options
from its {\word superclasses}.
The following sections describe the inheritance of
{\word methods}, the inheritance of {\word slots} and {\word slot} options,
and the inheritance of
{\word class} options.
\beginsubsubsection{Inheritance of Class Options}
The {\keyword :default-initargs} class option is inherited. The set of
defaulted initialization arguments for a {\word class} is the union of the
sets of initialization arguments supplied in the {\keyword
:default-initargs} class options of the {\word class} and its
{\word superclasses}.
When more than one default initial value {\word form} is supplied for a given
initialization argument, the default initial value {\word form} that is used
is the one supplied by the {\word class} that is most specific according to
the {\word class precedence list}.
If a given {\keyword :default-initargs} class option specifies an
initialization argument of the same {\word name} more than once, an
error is signalled.
\endsubsubsection%{Inheritance of Class Options}
\beginsubsubsection{Examples}
\screen!
(defclass C1 ()
((S1 :initform 5.4 :type number)
(S2 :allocation :class)))
(defclass C2 (C1)
((S1 :initform 5 :type integer)
(S2 :allocation :instance)
(S3 :accessor C2-S3)))
\endscreen!
Instances of the class {\tt C1} have a {\word local slot}
named {\tt S1}, whose default
initial value is 5.4 and whose value should always be a {\datatype number}.
The class {\tt C1} also has a {\word shared slot} named {\tt S2}.
There is a {\word local slot} named {\tt S1}
in {\word instances} of {\tt C2}. The
default initial value of {\tt S1} is 5. The value of {\tt S1} will be
of type {\tt (and integer number)}. There are also {\word local slots} named
{\tt S2} and {\tt S3} in {\word instances} of {\tt C2}. The class {\tt C2}
has a {\word method} for {\tt C2-S3} for reading the value of slot {\tt S3};
there is also a {\word method} for {\tt (setf C2-S3)} that writes the
value of {\tt S3}.
\endsubsubsection%{Examples of Inheritance}
\endsubSection%{Inheritance}
\beginsubSection{Determining the Class Precedence List}
The {\function defclass} form for a {\word class}
provides a total ordering on that
{\word class} and its direct {\word superclasses}.
This ordering is called the {\bit
local precedence order}. It is an ordered list of the {\word class} and its
direct {\word superclasses}. The {\bit class precedence list\/} for a
class $C$ is a total ordering on $C$ and its {\word superclasses}
that is consistent
with the {\word local precedence orders} for each of $C$ and its
{\word superclasses}.
A {\word class} precedes its direct {\word superclasses}, and a
direct {\word superclass}
precedes all other direct {\word superclasses} specified to
its right in the {\word superclasses}
list of the {\function defclass} form. For
every class $C$, define $$R\sub C=\{(C,C\sub 1),(C\sub 1,C\sub
2),\ldots,(C\sub {n-1},C\sub n)\}$$ where $C\sub 1,\ldots,C\sub n$ are
the direct {\word superclasses} of $C$ in the order in which
they are mentioned in the {\function defclass} form. These ordered pairs
generate the total ordering on the class $C$ and its direct
{\word superclasses}.
Let $S\sub C$ be the set of $C$ and its {\word superclasses}. Let $R$ be
$$R=\bigcup\sub{c\in {S\sub C}}R\sub c$$.
The set $R$ may or may not generate a partial ordering, depending on
whether the $R\sub c$, $c\in S\sub C$, are consistent; it is assumed
that they are consistent and that $R$ generates a partial ordering.
When the $R\sub c$ are not consistent, it is said that $R$ is inconsistent.
%This partial ordering is generated by taking the the transitive
%closure of the set $R\cup \{(c,c) \vert c\in {S\sub C}\}$. When
%$(C\sub 1,C\sub 2)\in R$\negthinspace, it is said that $C\sub 1$
%{\bit precedes or equals} $C\sub 2$. Intuitively, $C\sub 1$ precedes
%or equals $C\sub 2$ when $C\sub 1=C\sub 2$ or $C\sub 2$ is a
%superclass of $C\sub 1$.
%
%Recall that a partial ordering of the set $S$ is a relation between
%objects of $S$ that is transitive, reflexive, and antisymmetric. The
%set $\{(c,c) \vert c\in {S\subC}\}$ was added to the transitive
%closure of the set $R$ in order to make the relation reflexive. In
%the remainder of this section the set of precedence relations $R$ and
%not the partial ordering will be used.
To compute the {\word class precedence list} for~$C$\negthinspace,
topologically sort the elements of $S\sub C$ with respect to the
partial ordering generated by $R$\negthinspace. When the topological
sort must select a {\word class} from a set of two or more
{\word classes}, none of
which are preceded by other {\word classes} with respect to~$R$\negthinspace,
the {\word class} selected is chosen deterministically, as described below.
If $R$ is inconsistent, an error is signalled.
\goodbreak
\beginsubsubsection{Topological Sorting}
Topological sorting proceeds by finding a class $C$ in~$S\sub C$ such
that no other {\word class} precedes that element according to the elements
in~$R$\negthinspace. The class $C$ is placed first in the result.
Remove $C$ from $S\sub C$, and remove all pairs of the form $(C,D)$,
$D\in S\sub C$, from $R$\negthinspace. Repeat the process, adding
{\word classes} with no predecessors to the end of the result. Stop when no
element can be found that has no predecessor.
If $S\sub C$ is not empty and the process has stopped, the set $R$ is
inconsistent. If every {\word class} in the finite set of
{\word classes} is preceded
by another, then $R$ contains a loop. That is, there is a chain of
classes $C\sub 1,\ldots,C\sub n$ such that $C\sub i$ precedes
$C\sub{i+1}$, $1\leq i<n$, and $C\sub n$ precedes $C\sub 1$.
Sometimes there are several {\word classes} from $S\sub C$ with no
predecessors. In this case select the one that has a direct
{\word subclass} rightmost in the {\word class precedence list} computed so far.
%Because a direct superclass precedes all other direct superclasses to
%its right, there can be only one such candidate class.
If there is no
such candidate {\word class}, $R$ does not generate a partial ordering---the
$R\sub c$, $c\in S\sub C$, are inconsistent.
In more precise terms, let $\{N\sub 1,\ldots,N\sub m\}$, $m\geq 2$, be
the {\word classes} from $S\sub C$ with no predecessors. Let $(C\sub
1\ldots C\sub n)$, $n\geq 1$, be the {\word class precedence list}
constructed so far. $C\sub 1$ is the most specific {\word class}, and $C\sub
n$ is the least specific. Let $1\leq j\leq n$ be the largest number
such that there exists an $i$ where $1\leq i\leq m$ and $N\sub i$
is a direct {\word superclass} of $C\sub j$; $N\sub i$ is placed next.
The effect of this rule for selecting from a set of {\word classes} with no
predecessors is that the {\word classes} in a simple {\word superclass} chain are
adjacent in the {\word class precedence list} and that {\word classes} in each
relatively separated subgraph are adjacent in the {\word class
precedence list}. For example, let $T\sub 1$ and $T\sub 2$ be subgraphs
whose only element in common is the class $J$\negthinspace. Suppose
that no {\word superclass} of $J$ appears in either $T\sub 1$ or $T\sub 2$.
Let $C\sub 1$ be the bottom of $T\sub 1$; and let $C\sub 2$ be the
bottom of $T\sub 2$. Suppose $C$ is a {\word class} whose direct {\word
superclasses}
are $C\sub 1$ and $C\sub 2$ in that order, then the {\word class precedence
list} for $C$ will start with $C$ and will be followed by all {\word classes}
in $T\sub 1$ except $J$. All the {\word classes} of $T\sub 2$ will be next.
The class $J$ and its {\word superclasses} will appear last.
\endsubsubsection%{Topological Sorting}
\beginsubsubsection{Examples}
This example determines a {\word class precedence list} for the
class {\tt pie}. The following {\word classes} are defined:
\screen!
(defclass pie (apple cinnamon) ())
(defclass apple (fruit) ())
(defclass cinnamon (spice) ())
(defclass fruit (food) ())
(defclass spice (food) ())
(defclass food () ())
\endscreen!
The set $S$~$=$ $\{${\tt pie, apple, cinnamon, fruit, spice, food,
standard-object, t}$\}$. The set $R$~$=$ $\{${\tt (pie, apple),
(apple, cinnamon), (apple, fruit), (cinnamon, spice), (fruit, food),
\hfil\break (spice, food), (food, standard-object), (standard-object,
t)}$\}$.
The class {\tt pie} is not preceded by anything, so it comes first;
the result so far is {\tt (pie)}. Remove {\tt pie} from $S$ and pairs
mentioning {\tt pie} from $R$ to get $S$~$=$ $\{${\tt apple, cinnamon,
fruit, spice, food, standard-object, t}$\}$ and $R$~$=$~$\{${\tt
(apple, cinnamon), (apple, fruit), (cinnamon, spice), (fruit,
food),\hfil\break (spice, food), (food, standard-object),
(standard-object, t)}$\}$.
The class {\tt apple} is not preceded by anything, so it is next; the
result is {\tt (pie apple)}. Removing {\tt apple} and the relevant
pairs results in $S$~$=$ $\{${\tt cinnamon, fruit, spice, food,
standard-object, t}$\}$ and $R$~$=$ $\{${\tt (cinnamon, spice),
(fruit, food), (spice, food), (food, standard-object),\hfil\break
(standard-object, t)}$\}$.
The classes {\tt cinnamon} and {\tt fruit} are not preceded by
anything, so the one with a direct {\word subclass} rightmost in the {\word
class
precedence list} computed so far goes next. The class {\tt apple} is a
direct {\word subclass} of {\tt fruit}, and the class {\tt pie} is a direct
{\word subclass} of {\tt cinnamon}. Because {\tt apple} appears to the right
of {\tt pie} in the {\word class precedence list},
{\tt fruit} goes next, and the
result so far is {\tt (pie apple fruit)}. $S$~$=$ $\{${\tt cinnamon,
spice, food, standard-object, t}$\}$; $R$~$=$ $\{${\tt (cinnamon,
spice), (spice, food),\hfil\break (food, standard-object),
(standard-object, t)}$\}$.
The class {\tt cinnamon} is next, giving the result so far as {\tt
(pie apple fruit cinnamon)}. At this point $S$~$=$ $\{${\tt spice,
food, standard-object, t}$\}$; $R$~$=$ $\{${\tt (spice, food), (food,
standard-object), (standard-object, t)}$\}$.
The classes {\tt spice}, {\tt food}, {\tt standard-object}, and {\tt
t} are added in that order, and the {\word class precedence list} is {\tt (pie
apple fruit cinnamon spice food standard-object t)}.
It is possible to write a set of {\word class} definitions that cannot be
ordered. For example:
\screen!
(defclass new-class (fruit apple) ())
(defclass apple (fruit) ())
\endscreen!
The class {\tt fruit} must precede {\tt apple} because the local
ordering of {\word superclasses} must be preserved. The class {\tt apple} must
precede {\tt fruit} because a {\word class} always precedes its own
{\word superclasses}. When this situation occurs, an error is signalled when
the system tries to compute the {\word class precedence list}.
The following might appear to be a conflicting set of definitions:
\screen!
(defclass pie (apple cinnamon) ())
(defclass pastry (cinnamon apple) ())
(defclass apple () ())
(defclass cinnamon () ())
\endscreen!
The {\word class precedence list} for {\tt pie} is {\tt (pie apple cinnamon
standard-object t)}.
The {\word class precedence list} for {\tt pastry} is {\tt (pastry cinnamon apple
standard-object t)}.
It is not a problem for {\tt apple} to precede {\tt cinnamon} in the
ordering of the {\word superclasses} of {\tt pie} but not in the ordering for
{\tt pastry}. However, it is not possible to build a new {\word class} that
has both {\tt pie} and {\tt pastry} as {\word superclasses}.
\endsubsubsection%{Examples}
\endsubSection%{Determining the Class Precedence List}
\beginsubSection{Redefining Classes}
A {\word class}
that is an {\word instance} of {\datatype standard-class} can be redefined
if the new {\word class}
will also be an {\word instance} of {\datatype standard-class}.
Redefining a {\word class} modifies the existing {\word class} object
to reflect the
new {\word class} definition; it does not create a new
{\word class} object for the
{\word class}. Any {\word method object}
created by a {\keyword :reader}, {\keyword :writer}, or
{\keyword :accessor} option specified by the old {\function defclass} form is
removed from the corresponding {\word generic function}.
{\word Methods} specified by the new {\function defclass} form are added.
% any function specified by the {\keyword :constructor}
% option of the old {\function defclass} form is removed from the
% corresponding symbol function cell.
When the class $C$ is redefined, changes are propagated to its {\word instances}
and to {\word instances} of any of its {\word subclasses}. Updating such an
{\word instance} occurs at an implementation-dependent time, but no later than
the next time a {\word slot}
of that {\word instance} is read or written. Updating an
{\word instance}
does not change its identity as defined by the {\function eq}
function. The updating process may change the {\word slots} of that
particular {\word instance},
but it does not create a new {\word instance}. Whether
updating an {\word instance} consumes storage is implementation-dependent.
Note that redefining a {\word class} may cause {\word slots}
to be added or deleted.
If a {\word class} is redefined in a way that changes the set of
{\word local slots}
accessible in {\word instances},
the {\word instances} will be updated. It is
implementation-dependent whether {\word instances} are updated if a
{\word class} is
redefined in a way that does not change the set of {\word local slots}
accessible in {\word instances}.
The value of a {\word slot}
that is specified as shared both in the old {\word class}
and in the new {\word class} is retained.
If such a {\word shared slot} was unbound
in the old {\word class}, it will be unbound in the new {\word class}.
{\word Slots} that
were local in the old {\word class} and that are shared in the new
{\word class} are
initialized. Newly added {\word shared slots} are initialized.
Each newly added {\word shared slot} is set to the result of evaluating the
captured {\keyword :initform} form for the {\word slot}
that was specified in the
{\function defclass} form for the new {\word class}.
If there is no {\keyword :initform}
form, the {\word slot} is unbound.
If a {\word class} is redefined in such a way that the set of {\word local
slots}
{\word accessible} in an {\word instance} of the {\word class}
is changed, a two-step process
of updating the {\word instances} of the {\word class} takes place.
The process may
be explicitly started by invoking the generic function {\function
make-instances-obsolete}. This two-step process can happen in other
circumstances in some implementations. For example, in some
implementations this two-step process will be triggered if the order
of {\word slots} in storage is changed.
The first step modifies the structure of the {\word instance} by adding new
{\word local slots} and discarding {\word local slots}
that are not defined in the new
version of the {\word class}.
The second step initializes the newly-added {\word local slots} and performs
any other user-defined actions. These two steps are further specified
in the next two sections.
\beginsubsubsection{Modifying the Structure of Instances}
The first step modifies the structure of {\word instances} of the redefined
{\word class} to conform to its new {\word class} definition.
Local {\word slots} specified
by the new {\word class} definition that are not specified as either local or
shared by the old {\word class} are added, and {\word slots}
not specified as either
local or shared by the new {\word class} definition that are specified as
local by the old {\word class} are discarded.
The {\word names} of these added and discarded
{\word slots} are passed as arguments
to {\function update-instance-for-redefined-class}
as described in the next section.
The values of {\word local slots} specified by both the new and old {\word
classes}
are retained. If such a local {\word slot} was unbound, it remains unbound.
The value of a {\word slot} that is specified as shared in the old
{\word class} and
as local in the new {\word class} is retained. If such a {\word shared slot}
was
unbound, the {\word local slot} will be unbound.
\endsubsubsection%{Modifying the Structure of the Instance}
\beginsubsubsection{Initializing Newly Added Local Slots}
The second step initializes the newly added {\word local slots} and performs
any other user-defined actions. This step is implemented by the generic
function {\function update-instance-for-redefined-class}, which is called after
completion of the first step of modifying the structure of the
{\word instance}.
The generic function {\function update-instance-for-redefined-class} takes
four required arguments: the {\word instance} being updated after it has
undergone the first step, a list of the names of {\word local slots} that were
added, a list of the names of {\word local slots} that were discarded, and a
property list containing the {\word slot} names and values of
{\word slots} that were
discarded and had values. Included among the discarded {\word slots} are
{\word slots} that were local in the old {\word class} and that are shared in the new
{\word class}.
The generic function {\function update-instance-for-redefined-class} also
takes any number of initialization arguments. When it is called by
the system to update an {\word instance} whose {\word class}
has been redefined, no
initialization arguments are provided.
There is a system-supplied primary {\word method} for {\function
update-instance-for-redefined-class} whose parameter specializer for
its {\word instance}
argument is the class {\datatype standard-object}. First this
{\word method} checks the validity of initialization arguments and signals an
error if an initialization argument is supplied that is not declared
as valid. (See the section ``Declaring the Validity of Initialization
Arguments'' for more information.) Then it calls the generic function
{\function shared-initialize} with the following arguments: the
{\word instance},
the list of {\word names} of
the newly added {\word slots}, and the initialization
arguments it received.
\endsubsubsection%{Initializing Newly added Local Slots}
\beginsubsubsection{Customizing Class Redefinition}
{\word Methods}
for {\function update-instance-for-redefined-class} may be defined
to specify actions to be taken when an {\word instance} is updated. If only
{\keyword :after} methods for
{\function update-instance-for-redefined-class} are
defined, they will be run after the system-supplied primary {\word method} for
initialization and therefore will not interfere with the default
behavior of {\function update-instance-for-redefined-class}. Because no
initialization arguments are passed to {\function
update-instance-for-redefined-class} when it is called by the system,
the {\keyword :initform} forms for {\word slots}
that are filled by {\keyword :before}
methods for {\function update-instance-for-redefined-class} will not be
evaluated by {\function shared-initialize}.
{\word Methods}
for {\function shared-initialize} may be defined to customize {\word class}
redefinition. See the section ``Shared-Initialize'' for more
information.
\endsubsubsection%{Customizing Class Redefinition}
\beginsubsubsection{Extensions}
There are two allowed extensions to {\word class} redefinition:
\beginlist
\itemitem{\bull} The \OS\ may be extended to permit the new {\word class}
to be an {\word instance} of a {\word metaclass}
other than the {\word metaclass} of the
old {\word class}.
\itemitem{\bull} The \OS\ may be extended to support an updating process
when either the old or the new {\word class} is an {\word instance} of a
{\word class}
other than {\datatype standard-class} that is not a {\datatype built-in-class}.
\endlist
\endsubsubsection%{Extensions}
\beginsubSection{Integrating Types and Classes}
The \CLOS\ maps the space of {\word classes} into the {\word type} space.
Every {\word class}
that has a proper name has a corresponding {\word type} with the same
{\word name}.
The proper name of every {\word class} is a valid type specifier. In
addition, every {\word class object} is a valid type specifier. Thus the
expression {\tt (typep {\tt object class\/})} evaluates to true if the
{\word class} of {\tt object\/} is {\tt class\/} itself or a
{\word subclass} of {\tt
class}. The evaluation of the expression {\tt (subtypep {\tt class1
class2\/})} returns the values {\tt t~t} if {\tt class1\/} is a
subclass of {\tt class2\/} or if they are the same {\word class}; otherwise it
returns the values {\tt nil~t}. If $I$ is an {\word instance} of some
{\word class}
$C$ named $S$ and $C$ is an {\word instance} of {\datatype standard-class}, the
evaluation of the expression {\tt (type-of $I$\/)} will return $S$ if
$S$ is the proper name of $C$\negthinspace; if $S$ is not the proper
name of $C$\negthinspace, the expression {\tt (type-of $I$\/)} will
return $C$\negthinspace.
Because the names of {\word classes}
and {\word class objects} are type specifiers, they may
be used in the special form {\function the} and in type declarations.
Many but not all of the predefined type specifiers have a
corresponding {\word class} with
the same proper name as the {\word type}. These type
specifiers are listed in Figure {\chapno--\the\capno}.
For example, the type {\datatype array\/}
has a corresponding {\word class} named {\datatype array\/}.
No type specifier that is a
list, such as {\tt (vector double-float 100)}, has a corresponding {\word
class}.
The form {\function deftype} does not create any {\word classes}.
Each {\word class} that corresponds to a predefined type specifier
can be implemented in one of three ways, at the discretion of each
implementation. It can be a {\datatype standard-class\/} (of the kind
defined by {\function defclass}), a {\datatype structure-class\/} (defined
by {\function defstruct}), or a {\datatype built-in-class\/} (implemented in
a special, non-extensible way).
A {\datatype built-in-class}
is one whose {\word instances} have restricted capabilities or
special representations. Attempting to use {\function defclass} to define
{\word subclasses} of a {\datatype built-in-class}
signals an error. Calling {\function
make-instance} to create an {\word instance} of a
{\datatype built-in-class} signals an error.
Calling {\function slot-value} on an
{\word instance} of a {\datatype built-in-class} signals an
error.
Redefining a {\datatype built-in-class}
or using {\function change-class} to change
the {\word class} of an {\word instance}
to or from a {\datatype built-in-class} signals an error.
However, {\datatype built-in-classes} can be used as parameter specializers in
{\word methods}.
%The \OS\ specifies that all predefined type specifiers
%listed in Figure~2-1 are built-in classes, but a particular
%implementation is allowed to extend the \OS\ to define some of them as
%standard classes or as structure classes.
It is possible to determine whether a {\word class}
is a {\datatype built-in-class} by
checking the {\word metaclass}.
A standard {\word class} is an {\word instance} of {\datatype
standard-class}, a built-in {\word class}
is an {\word instance} of {\datatype
built-in-class}, and a structure {\word class}
is an {\word instance} of {\datatype
structure-class}.
Each {\datatype structure} type created by {\function defstruct} without using the {\tt
:type} option has a corresponding {\word class}.
This {\word class} is an {\word instance} of
{\datatype structure-class}.
%A portable program must assume that {\datatype
%structure-class} is a subclass of {\datatype built-in-class} and has the
%same restrictions as built-in classes. Whether {\datatype structure-class}
%in fact is a subclass of {\datatype built-in-class} is
%implementation dependent.
The {\tt :include} option of {\function defstruct} creates a direct
{\word subclass} of the {\word class}
that corresponds to the included {\datatype structure}.
The purpose of specifying that many of the standard type
specifiers have a corresponding {\word class}
is to enable users to write {\word methods} that
discriminate on these {\word types}.
{\word Method} selection requires that a
{\word class precedence list} can be
determined for each {\word class}.
The hierarchical relationships among the type specifiers
are mirrored by relationships among the {\word classes} corresponding to those
{\word types}. The existing type hierarchy is used for determining the
{\word class precedence list}
for each {\word class} that corresponds to a predefined
{\word type}. In some cases,
a {\word local precedence order} is not specifiied for two {\word supertypes}
of a
given type specifier. For example, {\datatype null} is a {\word subtype}
of both
{\datatype symbol} and {\datatype list}, but it is not specified
whether {\datatype symbol} is more specific or less
specific than {\datatype list}. The \CLOS\ defines those
relationships for all such {\word classes}.
Figure {\chapno--\the\capno}
lists the set of {\word classes} required by the \OS\
that correspond to predefined type specifiers. The
{\word superclasses} of each such {\word class}
are presented in order from most
specific to most general, thereby defining the {\word class precedence list}
for the {\word class}. The {\word local precedence order} for
each {\word class} that
corresponds to a type specifier can be derived from this
table.
\boxfig
{\dimen0=.75pc
\tabskip \dimen0 plus .5 fil
\halign to \hsize {#\hfil\tabskip \dimen0 plus 1fil\hfil\tabskip \dimen0 plus .5 fil&\hfil\cr %was &
\noalign{\vskip -9pt}
\hfil\bf Predefined Type&\bf Class Precedence List for Corresponding Class\span\omit\span\omit\cr
\noalign{\vskip 2pt\hrule\vskip 2pt}
array&(array t)\cr
bit-vector&(bit-vector vector array sequence t)\cr
character&(character t)\cr
complex&(complex number t)\cr
cons&(cons list sequence t)\cr
float&(float number t)\cr
integer&(integer rational number t)\cr
list&(list sequence t)\cr
null&(null symbol list sequence t)\cr
number&(number t)\cr
ratio&(ratio rational number t)\cr
rational&(rational number t)\cr
sequence&(sequence t)\cr
string&(string vector array sequence t)\cr
symbol&(symbol t)\cr
t&(t)\cr
vector&(vector array sequence t)\cr
\noalign{\vskip -9pt}
}}
\caption{}
\endfig
Individual implementations may be extended to define other type
specifiers to have a corresponding {\word class}. Individual implementations
may be extended to add other {\word subclass} relationships and to add other
elements to the {\word class precedence lists} in the preceding figure,
as long as
they do not violate the type relationships and disjointness
requirements specified by this standard.
A standard {\word class} defined with no direct {\word superclasses} is guaranteed to
be disjoint from all of the {\word classes} in the table, except for the
class named {\datatype t}.
%The following Common Lisp types will have corresponding classes when
%Common Lisp is modified to define them each as being disjoint from {\datatype
%cons}, {\datatype symbol}, {\datatype array}, {\datatype number}, and
%{\datatype character}:
%
%\beginlist
%
%\item{\bull} function
%\item{\bull} hash-table
%\item{\bull} package
%\item{\bull} pathname
%\item{\bull} random-state
%\item{\bull} readtable
%\item{\bull} stream
%
%\endlist
\endsubSection%{Integrating Types and Classes}
∂21-Feb-89 2210 @Score.Stanford.EDU:linton@interviews.Stanford.EDU Re: Ph.D. program
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 21 Feb 89 22:10:12 PST
Received: from interviews.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Tue 21 Feb 89 22:06:59-PST
Received: by interviews.Stanford.EDU (5.57/Ultrix2.4-C)
id AA09458; Tue, 21 Feb 89 21:51:10 PST
Date: Tue, 21 Feb 89 21:51:10 PST
From: linton@interviews.Stanford.EDU (Mark Linton)
Message-Id: <8902220551.AA09458@interviews.Stanford.EDU>
To: goldberg@polya.stanford.edu
Subject: Re: Ph.D. program
Cc: faculty@score.Stanford.EDU
I recall a CSL discussion of similar issues when we were
forming the thesis proposal requirement. Students were
concerned about the "oral qual" you describe--it is very open-ended
when you can ask about research issues as well as general breadth.
The conclusion was that we (CSL) decided to make the systems breadth
requirement (qual) separate from a thesis proposal/research area exam.
There was also a lot of student anxiety about the notion of "failing"
the oral exam (now the thesis proposal).
It seems to be another disadvantage of this "oral qual" is that
the student's fate is in the hands of a smaller group (I assume
the exam committee would be small). I think this style of exam
would also require more faculty time. One of the reasons CSL switched
to a written qual was the feeling that oral exams were not the best
use of everyone's time. I would rather spend more time advising
students who are make reasonable-but-could-be-better progress
on their theses!
I applaud efforts to improve the system and I would certainly like
to help students complete their degrees more rapidly. However,
we should be very careful to introduce change only when we are sure
it will have a beneficial effect. I am unconvinced we have the evidence
necessary to convict the comps or quals of more than misdemeanors, and
I am even less sure of the effect of alternative proposals.
Mark
∂21-Feb-89 2237 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu NIPS POST-MEETING WORKSHOPS
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 21 Feb 89 22:37:26 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA17757; Tue, 21 Feb 89 22:35:07 -0800
Message-Id: <8902220635.AA17757@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Tue, 21 Feb 89 22:35:34 PST
Received: by BYUADMIN (Mailer R2.01A) id 5531; Tue, 21 Feb 89 23:33:37 MST
Date: Tue, 21 Feb 89 08:42:23 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Stephen J Hanson <jose@TRACTATUS.BELLCORE.COM>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Stephen J Hanson <jose@TRACTATUS.BELLCORE.COM>
Subject: NIPS POST-MEETING WORKSHOPS
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
NIPS-89 POST-CONFERENCE WORKSHOPS
DECEMBER 1-2, 1989
REQUEST FOR PROPOSALS
Following the regular NIPS program, workshops on current topics in
Neural Information Processing will be held on December 1 and 2, 1989,
at a ski resort near Denver. Proposals by qualified individuals
interested in chairing one of these workshops are solicited.
Past topics have included: Rules and Connectionist Models; Speech,
Neural Networks and Hidden Markov Models; Imaging Techniques in
Neurobiology; Computational Complexity Issues; Fault Tolerance in
Neural Networks; Benchmarking and Comparing Neural Network
Applications; Architectural Issues; Fast Training Techniques.
The format of the workshops is informal. Beyond reporting on past
research, their goal is to provide a forum for scientists actively
working in the field to freely discuss current issues of concern and
interest. Sessions will meet in the morning and in the afternoon of
both days, with free time in between for ongoing individual exchange
or outdoor activities. Specific open and/or controversial issues are
encouraged and preferred as workshop topics. Individuals interested
in chairing a workshop must propose a topic of current interest and
must be willing to accept responsibility for their group's discussion.
Discussion leaders' responsibilities include: arrange brief informal
presentations by experts working on this topic, moderate or lead the
discussion; and report its high points, findings and conclusions to
the group during evening plenary sessions.
Submission Procedure: Interested parties should submit a short
proposal for a workshop of interest by May 30, 1989. Proposals should
include a title and a short description of what the workshop is to
address and accomplish. It should state why the topic is of interest
or controversial, why it should be discussed and what the targeted
group of participants is. In addition, please send a brief resume of
the prospective workshop chair, list of publications and evidence of
scholarship in the field of interest.
Mail submissions to:
Kathie Hibbard
NIPS89 Local Committee
Engineering Center
Campus Box 425
Boulder, CO, 80309-0425
Name, mailing address, phone number, and e-mail net address (if
applicable) should be on all submissions.
Workshop Organizing Committee:
Alex Waibel, Carnegie-Mellon, Workshop Chairman;
Howard Wachtel, University of Colorado, Workshop Local Arrangements;
Kathie Hibbard, University of Colorado, NIPS General Local
Arrangements;
PROPOSALS MUST BE RECEIVED BY MAY 30, 1989.
∂21-Feb-89 2239 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu WADS '89
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 21 Feb 89 22:38:50 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA17798; Tue, 21 Feb 89 22:36:37 -0800
Message-Id: <8902220636.AA17798@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Tue, 21 Feb 89 22:37:04 PST
Received: by BYUADMIN (Mailer R2.01A) id 5591; Tue, 21 Feb 89 23:33:59 MST
Date: Tue, 21 Feb 89 08:47:58 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
DEHNE%CARLETON.CA@Forsythe.Stanford.EDU
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: DEHNE%CARLETON.CA@Forsythe.Stanford.EDU
Subject: WADS '89
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
Please note that, because of a collision with PODC, the 1989 Workshop
on Algorithms and Data Structures has been shifted by one day to Aug. 17-19.
-----------------------------------------------------------------------
CALL FOR PAPERS
Workshop on Algorithms
and Data Structures
August 17-19, 1989
Carleton University
Ottawa, Canada
The Workshop, which continues the 1988 Scandinavian Workshop on
Algorithm Theory, is intended as a forum for researchers in the area of
design and analysis of algorithms and data structures.
We invite submissions of papers presenting original research on
algorithms and data structures in all areas, including combinatorics,
computational geometry, databases, graphics, parallel and distributed
computing. Contributors are invited to send 4 copies of a full paper
(not exceeding 12 pages) to
Workshop on Algorithms and Data Structures
School of Computer Science
Carleton University
Ottawa, Canada K1S 5B6
tel.: (613) 788-4333, 564-7545, e-mail: workshop@carleton.bitnet
Submissions must arrive before March 15, 1989. Authors will be notified
of acceptance or rejection by April 30, 1989. Proceedings will be
published, possibly in the Springer Verlag series Lecture Notes in
Computer Science. The final versions of accepted papers must arrive in
camera-ready form before May 25, 1989, to ensure the availability of the
proceedings at the conference.
Invited Speakers:
Michael Atallah (Purdue), Luc Devroye (McGill), Herbert Edelsbrunner
(Urbana Champaign), Gaston Gonnet (Waterloo), Jan van Leeuwen (Utrecht),
Chee Yap (Courant Institute).
Program Committee:
Selim Akl (Queen's), Frank Dehne (Carleton), Greg Fredrickson (Purdue),
David Kirkpatrick (UBC), Andrzej Lingas (Linkoeping), Kurt Mehlhorn (U.
des Saarlandes), Ian Munro (Waterloo), Joerg-Ruediger Sack (Carleton),
Nicola Santoro (Carleton), Esko Ukkonen (Helsinki), Jorge Urrutia
(Ottawa), Derick Wood (Waterloo).
Organizing Committee:
Frank Fiala, John Oommen, Ekow Otoo (Carleton), Robert Probert (Ottawa).
-----------------------------------------------------------------------
∂21-Feb-89 2241 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Seventh Amsterdam Colloquium -- Call for papers
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 21 Feb 89 22:41:01 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA17876; Tue, 21 Feb 89 22:38:46 -0800
Message-Id: <8902220638.AA17876@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Tue, 21 Feb 89 22:39:13 PST
Received: by BYUADMIN (Mailer R2.01A) id 5674; Tue, 21 Feb 89 23:37:32 MST
Date: Tue, 21 Feb 89 09:09:00 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Leen Torenvliet <leen%uva.uucp%MCVAX.BITNET@forsythe.stanford.edu>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Leen Torenvliet <leen%uva.uucp%MCVAX.BITNET@forsythe.stanford.edu>
Subject: Seventh Amsterdam Colloquium -- Call for papers
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
Call for Papers
From December 19-22, 1989 the Seventh Amsterdam Colloquium will be held. The
Amsterdam Colloquia are organized every two years by the ITLI ('Instituut
voor Taal, Logica en Informatie') in which the Departments of Philosophy,
Mathematics and Computer Science of the University of Amsterdam cooperate
to stimulate and coordinate interdisciplinary research on language,
meaning and information. The Amsterdam Colloquia are devoted to the same
aim, and are open for all scholars working in this field, whatever their
background.
The Colloquium will consist of invited lectures and contributed talks.
People who want to contribute a paper are requested to send in an extended
abstract of approximately ten pages (4000 words) before September 1, 1989.
Abstracts postmarked later than August 31 cannot be accepted. All abstracts
will be strictly refereed by a program committee. Contributors will be notified
of acceptance by October 15. The abstracts of accepted papers will be
distributed among the participants in advance. Full proceedings will be
available shortly after the Colloquium is held.
Those who are interested in contributing a paper or in attending the
Colloquium, are kindly requested to return the accompanying reply form.
They will receive further announcements.
For further information contact:
Martin Stokhof
ITLI/Department of Philosophy
University of Amsterdam
Nieuwe Doelenstraat 15
1012 CP Amsterdam
The Netherlands
e-mail: stokhof%uvaalf.surfnet@hsara5.earn
or:
Leen Torenvliet
ITLI/Departments of Mathematics and Computer Science
University of Amsterdam
Nieuwe Achtergract 166
1018 WV Amsterdam
The Netherlands
e-mail: leen@uva.UUCP
-----------------------------------------------------------------------------
Reply Form
Seventh Amsterdam Colloquium, December 19-22, 1989
Name:
Address:
City:
Country:
| | wants to receive further announcements
| | intends to attend
| | intends to send in an abstract
-------------------------------------------------------------------------
∂21-Feb-89 2243 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Call for papers - FST&TCS9
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 21 Feb 89 22:43:01 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA17951; Tue, 21 Feb 89 22:40:52 -0800
Message-Id: <8902220640.AA17951@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Tue, 21 Feb 89 22:41:19 PST
Received: by BYUADMIN (Mailer R2.01A) id 5747; Tue, 21 Feb 89 23:39:25 MST
Date: Tue, 21 Feb 89 09:16:32 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Ashok Chandra <ashok@IBM.COM>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Ashok Chandra <ashok@IBM.COM>
Subject: Call for papers - FST&TCS9
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
Call For Papers - FST&TCS
Ninth Conference on
FOUNDATIONS OF SOFTWARE TECHNOLOGY AND THEORETICAL COMPUTER SCIENCE
Bangalore, India, 19-21 December 1989
FST&TCS conferences have been organized since 1981, to provide a forum for
presenting original research results, in Theoretical aspects of Computer
Science and Theoretical Foundations of Software Technology. Authors are
invited to submit papers in the following and related areas:
Theory of Computation
Automata and Formal Languages
Algorithms and Complexity
Formal Semantics, Specifications, and Proof Theory
Database Theory
Mathematical Aspects of Programming Languages
Functional and Logic Programming
Programming Methodology
Distributed Computing
Software Technology
Papers should be at most 20 PAGES (5000 WORDS) long. The covering letter
should indicate the address (and author, in case of multiple authors) for
all further correspondence. The names of the authors and their
affiliations should only appear on the cover page of the paper. It should
be possible to remove this page and send the papers to reviewers to
facilitate blind refereeing. Please also give the CR classification
numbers on the cover page. When citing papers submitted elsewhere, but
not published at the time of submission to this conference, the
similarities, and more importantly the differences between such works
must be clearly brought out. FOUR copies of each paper should
be sent to:
FST&TCS9 Conference Secretariat
TRDDC
1, Mangaldas Road
Pune 411 001, INDIA
Tel: (212)-662453 Telex: 0145-464
IMPORTANT DATES:
Last date for paper submission: May 15, 1989
Notification of acceptance to authors: August 1, 1989
Final camera-ready copy due on: September 5, 1989
CONFERENCE ADVISORY COMMITTEE:
D. Bjorner (Denmark)
A. Chandra (IBM Research)
S. Crespi Reghizzi (Milan)
Z. Galil (Columbia)
D. Gries (Cornell)
M. Joseph (Warwick)
A. Joshi (Pennsylvania)
U. Montanari (Pisa)
R. Narasimhan (TIFR)
M. Nivat (Paris)
R. Parikh (New York)
S. Rao Kosaraju (Johns Hopkins)
S. Sahni (Minnesota)
TECHNICAL PROGRAMME COMMITTEE:
G. P. Bhattacharjee (IIT Kharagpur)
S. Biswas (IIT Kanpur)
A. Kumar (IIT Delhi)
S. Kumar (TRDDC, Pune)
C. R. Muthukrishnan (IIT Madras)
K. V. Nori (TRDDC, Pune)
L. M. Patnaik (IISc, Banglore)
H. V. Sahasrabuddhe (Poona University)
R. Sangal (IIT Kanpur)
R. K. Shyamsunder (TIFR)
P. S. Thiagarajan (Matscience, Madras)
C. E. Veni Madhavan (IISc, Banglore)
G. Venkatesh (IIT Bombay)
∂21-Feb-89 2250 @Score.Stanford.EDU:gio@sumex-aim.stanford.edu Re: Ph.D. program
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 21 Feb 89 22:50:47 PST
Received: from sumex-aim.stanford.edu by SCORE.STANFORD.EDU with TCP; Tue 21 Feb 89 22:48:09-PST
Received: by sumex-aim.stanford.edu (4.0/inc-1.0)
id AA19274; Tue, 21 Feb 89 22:47:38 PST
Date: Tue, 21 Feb 1989 22:47:37 PST
From: Gio Wiederhold <gio@sumex-aim.stanford.edu>
To: Andrew V. Goldberg <goldberg@polya.stanford.edu>
Cc: faculty@score.stanford.edu
Subject: Re: Ph.D. program
In-Reply-To: Your message of Tue, 21 Feb 89 16:03:30 -0800
Message-Id: <CMM.0.88.604133257.gio@sumex-aim.stanford.edu>
Andy's proposal makes sense to me. Gio
∂21-Feb-89 2251 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Structure in Complexity Theory - Preliminary Program
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 21 Feb 89 22:51:11 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA18159; Tue, 21 Feb 89 22:48:54 -0800
Message-Id: <8902220648.AA18159@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Tue, 21 Feb 89 22:49:21 PST
Received: by BYUADMIN (Mailer R2.01A) id 5874; Tue, 21 Feb 89 23:46:07 MST
Date: Tue, 21 Feb 89 09:36:21 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
"Stephen R. Mahaney" <srm@RESEARCH.ATT.COM>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: "Stephen R. Mahaney" <srm@RESEARCH.ATT.COM>
Subject: Structure in Complexity Theory - Preliminary Program
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
Structure In Complexity Theory
Fourth Annual Conference
Sponsored by the
IEEE Computer Society Technical Committee on
Mathematical Foundations of Computing
and
The University of Oregon
In cooperation with ACM-SIGACT
June 18-22, 1989
University of Oregon Campus
Eugene, Oregon
PRELIMINARY TECHNICAL PROGRAM
(This Schedule is Subject to Changes)
Monday, June 19
Morning Session; Chair: Eric Allender
S. Kurtz, Chicago; S. Mahaney, AT&T Bell Laboratories; J. Royer, Chi-
cago; The isomorphism conjecture fails relative to a random oracle.
S. Homer, Boston Univ.; A. Selman, Northeastern; Oracles for struc-
tural properties: the isomorphism problem and public-key cryptography.
O. Watanabe, Tokyo Inst. Tech.; S. Tang, Beijin Comp. Inst.; On poly-
nomial time Turing and many-one completeness in PSpace.
J. Wang, Boston Univ.; P-creative sets versus p-completely creative
sets.
Afternoon Session; Chair: Jose Balcazar
S. Ben-David, B. Chor, O. Goldreich, Technion; M. Luby, Toronto;
Toward a theory of average case complexity.
J. Lutz, Iowa State; Almost everywhere high nonuniform complexity.
TO BE ARRANGED.
P. Clote, Boston College; E. Kranakis, Centre for Math & CS, Amster-
dam; Boolean functions, invariance groups, and parallel complexity.
Tuesday, June 20
Morning Session; Chair: Neil Immerman
R. Schore, Cornell; T. Slaman, Chicago; The P-T-degrees of the recur-
sive sets: lattice embeddings, extensions of embeddings, and the two
quantifier theory.
Y. Marcoux, Montreal; Composition is almost as good as s-1-1.
K. Regan, Cornell; Finitary substructure languages with application to
the theory of NP-completeness.
J. Trahan, LSU; V. Ramachandran and M. Loui, Illinois at Urbana-
Champaign; The Power of Parallel Random Access Machines with Augmented
Instruction Sets.
N. Immerman, Yale; S. Landau, Wesleyan; The complexity of iterated
multiplication.
Afternoon; OUTING or FREE TIME
Wednesday, July 21
Morning Session; Chair: Tim Long
E. Mayr, J. W. Goethe; A. Subramanian, Stanford; The complexity of
circuit value and network stability.
C. Wilson, Oregon; Decomposing NC and AC.
M. Krentel, Rice; On finding locally optimal solutions.
J. Cai, Yale; J. Hartmanis, Cornell; The complexity of the real line
is a fractal.
Afternoon Session; Chair: Janos Simon
T. Lam, Univ. Hong Kong; W. Ruzzo, Washington; Results on communica-
tion complexity classes.
U. Feige, A. Shamir; Weizmann Inst.; Multi-oracle interactive proto-
cols with space bounded verifiers.
M. Li, Harvard; P. Vitanyi, Amsterdam; Inductive reasoning and Kolmo-
gorov complexity.
E. Allender, Rutgers; The generalized Kolmogorov complexity of sets.
Thursday, June 22
Morning Session; Chair: Paul Vitanyi
R. Downey, Victorian Univ. of Wellington; W. Gasarch, U. Maryland; S.
Homer, Boston Univ.; M. Moses, Victorian Univ. of Wellington; On
honest polynomial reductions, relativizations, and P=NP.
Kobler, U. Stuttgart; U. Schoning, EWH Koblentz; S. Toda, Univ. of
Electro-communications, Tokyo; J. Toran, Barcelona; Turing machines
with few accepting computations and low sets for PP.
R. Beigel, Johns Hopkins; On the relativized power of additional
accepting paths.
R. Beigel, Johns Hopkins; L. Hemachandra, Rochester; G. Wechsung,
Friedrich-Schiller Univ.; On the power of probabilistic polynomial
time: P~NP[log] is contained in PP.
Afternoon Session; Chair: Avi Widgerson
L. Pitt, Illinois; M. Warmuth, UC-Santa Cruz; The minimum consistent
DFA problem cannot be approximated within any polynomial.
W. Maass, Illinois at Chicago; T. Slaman, Chicago; The complexity
types of computable sets.
M. Krause, Humboldt Univ.; C. Meinel, S. Waack, Akademie der Wissen-
schaften der DDR; Separating complexity classes related to certain
input oblivious logarithmic space-bounded Turing machines.
R. Chang, Cornell; On the structure of bounded queries to arbitrary NP
sets.
Jose Balcazar, Univ. Politecnica Catalunya; Nondeterministic witnesses
and nonuniform advice.
The Program Committee consisted of Eric Allender, Jose Balcazar,
Neil Immerman, Tim Long, Janos Simon, Paul Vitanyi, Avi Wigder
∂22-Feb-89 0023 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu CO89 Combinatorial Optimization Conference
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 22 Feb 89 00:23:09 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA20679; Wed, 22 Feb 89 00:21:06 -0800
Message-Id: <8902220821.AA20679@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Wed, 22 Feb 89 00:21:33 PST
Received: by BYUADMIN (Mailer R2.01A) id 8485; Wed, 22 Feb 89 01:12:07 MST
Date: Tue, 21 Feb 89 10:23:08 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
M Dyer <dyer%DCS.LEEDS.AC.UK@Forsythe.Stanford.EDU>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: M Dyer <dyer%DCS.LEEDS.AC.UK@Forsythe.Stanford.EDU>
Subject: CO89 Combinatorial Optimization Conference
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
CO89 Combinatorial Optimization Conference
10-13 July, 1989
University of Leeds, Leeds, U.K.
GENERAL INFORMATION
CO89 is the fifth in a series of conferences on Combinatorial Optimization which
have
been held at regular intervals in the U.K. The conferences are intended for up
to 100
participants to meet in a reasonably informal atmosphere.
TOPICS COVERED
All aspects of Combinatorial Optimization including:
Design and analysis of parallel and sequential algorithms.
Linear and integer programming.
Graph theory and combinatorics.
Complexity Theory.
Cryptography.
Applications in O.R. and Computer Science.
INVITED SPEAKERS
A. M. Frieze, Carnegie-Mellon University, Pittsburgh, U.S.A.
Z. Galil, Columbia University, New York, U.S.A. and Tel Aviv University, Israel.
M. R. Jerrum, Edinburgh University, U.K.
J. K. Lenstra, Centre for Mathematics and Computer Science, Amsterdam, and
Erasmus University,
Rotterdam, The Netherlands.
C. L. Monma, Bell Communications Research, U.S.A.
P. Toth, Bologna University, Italy.
CONFERENCE FORMAT
Each of the invited speakers will deliver a one hour lecture surveying results
in his area
of interest and presenting his own recent research.
Participants may contribute papers on any area of Combinatorial Optimization.
The time allowed
for these presentations will be 20-30 minutes. The deadline for abstracts will
be April 1, 1989.
Acceptance of the paper will be on the basis of this abstract, and contributors
will be notified
of acceptance within three weeks of submission.
It is expected that refereed papers from the conference will be published in a
special issue of
Discrete Applied Mathematics.
ARRANGEMENTS & COST
The conference will take place in Tetley Hall, which is a university hall of
residence
situated in its own pleasant grounds. All accommodation and meals will be
provided in the Hall.
It is hoped that participants will arrive in time for lunch on Monday, 10th
July.
Registration will take take place from 10 a.m. until 4 p.m. on Monday. The
conference
proceedings will begin at 2 p.m. on Monday and continue until 12.30 p.m. on
Thursday 13th.
(Lunch will be provided for participants on the 13th.) Overnight accommodation
(without meals)
can be booked for the nights of the 9th and/or 13th at a cost of 16.50 pounds
per night, in addition to
the conference fee.
The charge for accommodation and meals for the whole conference will be 102
pounds.
In addition there is a registration charge of 60 pounds to cover other costs.
It is hoped that it will be possible to refund some or all of the registration
fee
to participants if current applications for financial
support for the conference are successful. The total cost to participants is
therefore (currently)
162 pounds, if paid
before 31st May, 1989. There will be a late booking supplement of 10 pounds
thereafter.
Alternatively, participants may register on a daily basis at a cost of 35 pounds
per day including lunch, tea and coffee. Overnight accommodation including
dinner and breakfast
can be booked at a further cost of 35 pounds per night.
TRAVEL
There are direct flights from Amsterdam and Paris to Leeds and Bradford airport,
in addition to various internal flights. There are regular rail and coach
services
between Leeds and London.
LEEDS
The University of Leeds is one of the largest universities in the United
Kingdom.
Leeds itself is a lively modern city with a great variety of attractions and
cultural activities.
The city centre combines fine Victorian buildings with modern shopping
developments in mainly
pedestrian precincts. Leeds benefits from the open and varied countryside
immediately to the
North. The Yorkshire Dales National Park, containing some of the finest scenery
in Britain,
is within easy reach.
ORGANISING COMMITTEE
T. B. Boffey, Liverpool
M. E. Dyer (Secretary), Leeds
T. I. Fenner, London
S. French (Chairman), Leeds
R. W. Irving, Glasgow
C. J. H. McDiarmid, Oxford
C. N. Potts, Southampton
L. G. Proll (Treasurer), Leeds
R. Whitty, London
ENQUIRIES
Any enquiries and all correspondence about the conference should be addressed to
The Secretary, CO89
School of Computer Studies
University of Leeds
Leeds LS2 9JT
U.K.
e-mail: co89@uk.ac.leeds.dcs
CO89 APPLICATION FORM
Name: ..................................................................
Address: ..................................................................
..................................................................
..................................................................
..................................................................
..................................................................
Phone: ..................................................................
Please complete and return the appropriate section (A or B) below:
A : Full conference
Conference fee 162 pounds.
Number of extra nights (if any) at16.50 pounds per night: ...
(Indicate which nights in the space below.)
B : Daily attendance
Daily rate 35 pounds per day. Number of days: ...
(Indicate which days in the space below.)
Overnight accommodation, 35 pounds per night.
Number of nights: ...
(Indicate which nights in the space below.)
Please mail this form, and send payment (in pounds sterling) to the address
given for
enquiries above. Please note that there is a late booking supplement of 10
pounds for all
applications received after 31st May, 1989.
∂22-Feb-89 0030 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Capital City Conference on Combinatorics and Theoretical Computer
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 22 Feb 89 00:29:47 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA20874; Wed, 22 Feb 89 00:27:43 -0800
Message-Id: <8902220827.AA20874@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Wed, 22 Feb 89 00:28:07 PST
Received: by BYUADMIN (Mailer R2.01A) id 8676; Wed, 22 Feb 89 01:21:27 MST
Date: Tue, 21 Feb 89 10:27:29 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
rodica simion <SIMION%GWUVM.BITNET@forsythe.stanford.edu>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: rodica simion <SIMION%GWUVM.BITNET@forsythe.stanford.edu>
Subject: Capital City Conference on Combinatorics and Theoretical Computer
Scien
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
announcement *** call for papers *** registration information
CAPITAL CITY CONFERENCE ON
COMBINATORICS and THEORETICAL COMPUTER SCIENCE
MAY 22-26, 1989
at
The George Washington University, Washington, D.C.
sponsored by the National Science Foundation
and The George Washington University
The aim of the conference is to offer a setting for relaxed and
productive professional interaction between combinatorists and
theoretical computer scientists.
We will aim for substantive rather than numerous talks, in an effort to
maximize information content and depth, and to allow time for discussions
among the participants. We hope that the conference activities will
expand the participants' research interests across the
boundaries of the two disciplines, and lead to increased collaboration
between members of the two communities.
TOPICS AND PRINCIPAL SPEAKERS
graph theory: LASZLO LOVASZ
Princeton University and Eotvos Lorand University
"Communication Complexity of Graph Problems"
May 22, 11:00 a.m. and 2:00 p.m., and May 23, 11 a.m.
algebraic combinatorics:
RICHARD STANLEY
Massachusetts Institute of Technology
"Applications of Algebra to Combinatorics"
May 24, 11:00 a.m. and 2:00 p.m., and May 25, 11:00 a.m.
algorithms and complexity:
RICHARD KARP
University of California, Berkeley
"Randomized Algorithms"
May 25, 2:00 p.m. and May 26, 11:00 a.m. and 2:00 p.m.
Each principal speaker will give three lectures which will
overview the topic and will highlight major results, techniques, and open
problems. The principal speakers will be asked to provide a list of
suggested reading which will be made available to the interested
preregistrants before the time of the conference.
PROBLEM SESSION Thursday, May 25, 7:30 p.m.
We invite contributions of open problems which will
generate discussions and
collaborations. Please send problems, including references, by
March 1, 1989. Preregistered participants will receive the list of
problems before the beginning of the conference.
SPECIAL SESSION Wednesday, May 24, 7:30 p.m.
Interested participants are invited to an evening
discussion on topics
including funding sources for research in combinatorics and
theoretical computer science, and
educational issues in combinatorics and computer science. If you wish
to suggest other discussion topics, please do so by March 1, 1989.
CALL FOR PAPERS
We will schedule 25-minute contributed talks on subjects directly
related to the conference topics and consistent with the theme of
the conference. We will do our best to accommodate
contributed talks to the extent permitted by the intent to give sufficient
time to each talk, and to have time for informal discussions among
the participants.
If you are interested in giving a contributed talk, please submit
before March 1, 1989 a two-page abstract describing the subject, background,
and main results of your paper.
In the case of joint work, please indicate which of the authors will
give the talk.
A special issue of Discrete Applied Mathematics and/or Annals of
Discrete Mathematics will be devoted to the refereed proceedings
of this conference. Complete texts of submissions must reach
Rodica Simion by June 15, 1989.
PARTICIPANTS SUPPORT
Limited funds are available for partial support of participants,
in particular for graduate students.
Selection for the graduate student awards will be made based on a
description of the student's research interests and work, and two letters
of recommendation.
For full consideration, applications should be received by
March 7, 1989.
LOCAL INFORMATION
The conference talks will begin on May 22, at 9:00 a.m.,
in Marvin Center, room 402. The registration desk will open at 8:30 a.m.,
in room 410. Marvin Center is located on the GWU campus at 800↑ 21~{st}
Street, N.↑ W.
We have reserved blocks of rooms
at reduced rates, under "GWU Math Dept Conference",
at several hotels which are within 10-15 min.↑ walking distance of the
metro station and campus.
River Inn, 924↑ 25~{th} Street, N.W., (202) 337-7600;
↑$95 single/double.
Georgetown Marbury Hotel, 3000 M Street, N.W., (202) 726-5000;
↑$80 single/double.
State Plaza Hotel, 2117 E Street, N.W., (202) 861-8200 or
1-800-424-2859; mention "group number 2815";
↑$85 single, ↑$95 double.
Lombardy Hotel, 2019 I Street, N.W., (202) 828-2600;
↑$80 single, ↑$90 double.
Please call the hotel directly and guarantee your
reservations by April 21, 1989.
After this date, the rooms will be released, and the regular rates will
apply to available rooms.
On a first come first served basis, until April 15, 1989,
rooms can be reserved in
Thurston Hall, 1900 F Street, N.W.. This is a GWU DORMITORY
with air-conditioned rooms, private bath, and sheets/towels/etc. provided.
The information on the registration form is particularly important
in signing up for dormitory space. The rates are $30 for single, ↑$20 for
double occupancy.
From National Airport, take the metro Blue Line to the GWU/Foggy
Bottom stop, which is at 23~{rd} St. and I St., N.W. Cab rides from
National and Dulles Airports are approx. $10 and $30, resp. From
Union Station, take the metro Red Line to Metro Center, change to the Blue
Line, and get off at GWU/Foggy Bottom. Cab rides from Union Station are
approx. $5.
May weather in Washington is pleasant, with average highs of
68F and lows of 58F. May is also a popular camping time.
Attractive camping facilities exist at Greenbelt Park (National Park
Service), (301) 344-3948.
REGISTRATION
To register, please send your completed
registration form, or facsimile, and check to the address on the form.
Refunds, less ↑$10, will be made if a written request is received by
May 10, 1989.
REGISTRATION FORM
The following information will be very helpful in planning the
conference events.
Full name .................................................................
Title ...............................
Business address ...........................................................
...........................................................................
City .......................... State ...... Zip Code ............
Phone (B).........................Phone (H).........................
e-mail address .....................................................
Registration fee: $80 if received by April 15, 1989; $95 after April 15, 1989.
Amount enclosed ↑$ ...............
During the conference I will stay at Marbury ........ River Inn ........
Lombardy ......... State Plaza .......... Other ............................
Arrival time ........................ Departure time ........................
I wish to request a dormitory room.
I wish to share a room: yes .... no .... no preference ......
Sex F ........ M ........
My roommate should be smoker ...... non-smoker ....... no preference .......
For dormitory space, please send a separate check for the full
amount. Please make your check(s) payable to The George Washington
University, and mail your check(s) and registration form to Rodica Simion,
Department of Mathematics, George Washington University, Washington,
D.C. 20052.
MAIL and FURTHER INQUIRIES
Regarding the problem/special session, please contact
Louis Shapiro, Mathematics Department, Howard University, Washington,
D.C. 20059, (202) 636-7125; regarding other matters, please contact Rodica
Simion, Department of Mathematics, George Washington University, Washington,
D.C. 20052; (202) 994-6238; simion@gwuvm.bitnet
chairperson
Rodica Simion, George Washington University
program committee
Ira Gessel, Brandeis University
Robert W. Robinson, University of Georgia
Michael Saks, University of California, San Diego
organizing committee
Hosam Mahmoud, George Washington University
Louis Shapiro, Howard University
Dan Ullman, George Washington University
∂22-Feb-89 0052 @Score.Stanford.EDU:cheriton@Pescadero.Stanford.EDU Re: draft extra sentence to precede final paragraph
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 22 Feb 89 00:52:08 PST
Received: from Pescadero.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Wed 22 Feb 89 00:50:02-PST
Received: by Pescadero.Stanford.EDU (5.59/25-eef) id AA05887; Wed, 22 Feb 89 00:48:19 PDT
Date: Wed, 22 Feb 89 00:48:19 PDT
From: David Cheriton <cheriton@Pescadero.Stanford.EDU>
Message-Id: <8902220848.AA05887@Pescadero.Stanford.EDU>
To: JMC@SAIL.Stanford.EDU, faculty@Score.Stanford.EDU
Subject: Re: draft extra sentence to precede final paragraph
In-Reply-To: <E3asY@SAIL.Stanford.EDU> from John McCarthy
<JMC@SAIL.Stanford.EDU> on 21 Feb 89 1935 PST
I basically support JMC's position, but (living up the the general
reputation of academics) I find it rather fascinating the range of
problems raised by this sentence. In particular, how does one define
"offensive behavior" and "censorship"? If offensivity (word?) is in
the eye(?) of the beholder, presumably anything might be offensive
so censorship is not an appropriate tool for preventing or dealing
with any type of behavior? This society seems to have some "accepted" (?)
forms of censorship (such as true in advertising laws, laws against
advocating violence, making death threats, etc.)
I also wonder whether "censorship" has some clear delineations.
I wonder if the reality in this society is that this whoe issue is
actually a matter of judgment, not (just) a matter of principle.
∂22-Feb-89 0121 @Score.Stanford.EDU:cheriton@Pescadero.Stanford.EDU Random theories of PhD-ology
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 22 Feb 89 01:21:00 PST
Received: from Pescadero.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Wed 22 Feb 89 01:18:49-PST
Received: by Pescadero.Stanford.EDU (5.59/25-eef) id AA06100; Wed, 22 Feb 89 01:17:11 PDT
Date: Wed, 22 Feb 89 01:17:11 PDT
From: David Cheriton <cheriton@Pescadero.Stanford.EDU>
Message-Id: <8902220917.AA06100@Pescadero.Stanford.EDU>
To: faculty@score
Subject: Random theories of PhD-ology
1) Any trials and tribulations cause people to complain.
Students complain for the same reasons. Any changes to the system
will not signiifcantly decrease the complaints unless we cease to
fail people at all.
2) Our students suffer more from neglect than anything else. As child
psychologists will some day discover, children are better abused
than neglected. I think we'd all be better off if we demanded/expected
more from our students. Many of us can sing the praises of EE students
who survive the EE qual where only 1/3 or so make it each year.
3) Academics form committees because they are cowards.
The real purpose of the comp/qual committees to lean on students in ways
that we are too chicken to do individually (especially when it comes to
failing someone). Witness the number of fails on oral defenses!
Unfortunately, we have tricked ourselves into thinking this stuff
is actually an important part of a successful Ph.D. even though
it constitutes about 1/6 to 1/4 of the program and has no proven
correlation with the quality of the product - a new researcher.
I think it would be interesting for each faculty member to design the
optimal Ph.D. program for their students only(!) as an exercise for
the May retreat, and see how much commmonality we actually have.
David C.
∂22-Feb-89 1059 @Score.Stanford.EDU:hayes@arisia.xerox.com draft extra sentence to precede final paragraph
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 22 Feb 89 10:59:37 PST
Received: from arisia.Xerox.COM by SCORE.STANFORD.EDU with TCP; Wed 22 Feb 89 10:56:21-PST
Received: by arisia.Xerox.COM
(5.59++/IDA-1.2.6) id AA29488; Wed, 22 Feb 89 10:53:48 PST
Date: Wed, 22 Feb 89 10:53:48 PST
From: Pat Hayes <hayes@arisia.xerox.com>
Message-Id: <8902221853.AA29488@arisia.Xerox.COM>
To: cheriton@Pescadero.Stanford.EDU
Cc: JMC@SAIL.STANFORD.EDU, faculty@SCORE.STANFORD.EDU
In-Reply-To: David Cheriton's message of Wed, 22 Feb 89 00:48:19 PDT <8902220848.AA05887@Pescadero.Stanford.EDU>
Subject: draft extra sentence to precede final paragraph
The ideas of 'giving offense' and 'censorship' are clearer, both
legally and in ordinary understanding, than David Cheriton implies.
Offensivity is not completely in the eye of the beholder: thus, for
example, incitement to commit a crime is not (merely) offensive, and
making false claims to mislead unwary consumers is not (merely)
offensive. Laws forbidding such behavior are not censorship laws in
the same sense that, say, laws forbidding the expression of religious
views, racial humor or pornographic anecdotes would be. The key
difference is that in the latter case, nobody will be harmed who cares
not to read the publications: one has the option of closing the book
if one finds it offensive.
Of course this is all a matter of judgement, and lines arent
completely sharp, and the issues are more complex than one likes to
think about. Nevertheless, surely a university should strive to draw
its boundaries on the side of freedom and openness; and closing down
an electronic bboard because it has a few jokes on it which might
offend scotsmen ( or jews, blacks, germans or poles ) seems
quite the wrong sort of action to take.
Pat
∂22-Feb-89 1110 @Score.Stanford.EDU:bhayes@polya.Stanford.EDU Proposed changes
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 22 Feb 89 11:10:18 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Wed 22 Feb 89 11:08:27-PST
Received: from LOCALHOST by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA05304; Wed, 22 Feb 89 11:06:51 -0800
Message-Id: <8902221906.AA05304@polya.Stanford.EDU>
To: faculty@score, phd-program@polya.Stanford.EDU
Reply-To: phd-program@polya.Stanford.EDU
Subject: Proposed changes
Date: Wed, 22 Feb 89 11:06:49 -0800
From: bhayes@polya.Stanford.EDU
I'm a bit worried that I keep hearing proposals for changes to the PhD
program, but I've heard very little discussion of the underlying
assumptions of these proposals. Rather than zero right in on changes,
why don't some of you discuss your opinions on:
o What is the purpose of the advisor/advisee relationship?
o What should a the world at large be able to infer about the holder
of a Stanford PhD?
o What are the skills every degree holder should have?
I have heard very little agreement on goal of the program, and until
there's some agreement on what the goals are, I don't see how we can
evaluate one suggestion against another.
-Barry
∂22-Feb-89 1127 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Textbook on Kolmogorov Complexity: in the making
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 22 Feb 89 11:27:21 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA06151; Wed, 22 Feb 89 11:24:59 -0800
Message-Id: <8902221924.AA06151@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Wed, 22 Feb 89 11:25:23 PST
Received: by BYUADMIN (Mailer R2.01A) id 4182; Wed, 22 Feb 89 12:20:55 MST
Date: Wed, 22 Feb 89 09:11:08 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Paul Vitanyi <paulv%CWI.NL@Forsythe.Stanford.EDU>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Paul Vitanyi <paulv%CWI.NL@Forsythe.Stanford.EDU>
Subject: Textbook on Kolmogorov Complexity: in the making
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
Textbook on Kolmogorov Complexity: in the making
For some time we have been engaged in a project to write a
book on ``Introduction to Kolmogorov Complexity and its
Applications,'' by Ming Li and Paul Vitanyi, to be published
by Addison-Wesley, 1990? We are aiming at a self-contained
text-book with many examples and exercises in both Kolmo-
gorov complexity (KC) and its applications. We strive for
comprehensive treatment of KC and all known applications of
KC, either to use in the main text or as examples or exer-
cises. Knowledge on the subject is scattered far and wide,
in different locations like East and West, and in different
disciplines like Statistics, Logics, Computer Science, Pro-
bability Theory, Philosophy, Mathematics. Therefore we ask
your help. If you know of any nice examples or exercises (no
matter how trivial or difficult) we would be grateful if you
could you send them to us.
We sollicit any help and suggestions you can give us on
subjects you feel are missing in the surveys below, more
detail on subjects that are mentioned, examples and exer-
cises, work that is not referenced or is missing. (A
separate comprehensive bibliography is available on
request.)
Unpublished material we use will be properly credited
in the main text of all versions. Lemmas, examples, exer-
cises and so on will be properly attributed.
Addresses (we prefer you to use the Netherlands
address): Ming Li, Computer Science Department, York Univer-
sity, 4700 Keeler Street, Ontario, Canada M3J 1P3
(li@yuyetti.bitnet); or Paul Vitanyi, CWI, Kruislaan 413,
1098 SJ Amsterdam, The Netherlands (paulv@piring.cwi.nl or
paulv@mcvax.bitnet).
Some pilot publications:
M. Li and P.M.B. Vitanyi, Two Decades of Applied Kolmogoro
Complexity, Proc. 3rd IEEE Structure in Complexity Theory
Conference, 1988, pp. 80-101. (Full expanded version to
appear as "Kolmogorov Complexity and its Applications" in
the `Handbook of Theoretical Computer Science' (Jan van
Leeuwen, Managing Editor), North-Holland. Preprint as CWI
report.)
M. Li and P.M.B. Vitanyi, Kolmogorovskaya slozhnost':
dvadsat' let spustia, Uspekhi Mat. Nauk, 43:6 (1988), pp.
129-166. (= Russian Mathematical Surveys)
∂22-Feb-89 1209 STAGER@Score.Stanford.EDU 1989/90 Courses and Degrees
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 22 Feb 89 12:09:01 PST
Date: Wed 22 Feb 89 11:56:05-PST
From: Claire Stager <STAGER@Score.Stanford.EDU>
Subject: 1989/90 Courses and Degrees
To: faculty@Score.Stanford.EDU
Office: CS-TAC 29, 723-6094
Message-ID: <12472767115.19.STAGER@Score.Stanford.EDU>
A reminder:
All 1989/90 Courses and Degrees course description revisions must be turned
in to me by this FRIDAY, FEBRUARY 24.
Thanks.
Claire
-------
∂22-Feb-89 1327 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu CDOOD 89 - CFP
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 22 Feb 89 13:27:44 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA14476; Wed, 22 Feb 89 13:25:28 -0800
Message-Id: <8902222125.AA14476@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Wed, 22 Feb 89 13:25:52 PST
Received: by BYUADMIN (Mailer R2.01A) id 6837; Wed, 22 Feb 89 14:22:00 MST
Date: Wed, 22 Feb 89 09:18:06 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Moshe Vardi <VARDI%ALMVMA.BITNET@forsythe.stanford.edu>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Moshe Vardi <VARDI%ALMVMA.BITNET@forsythe.stanford.edu>
Subject: CDOOD 89 - CFP
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
Call for Papers
The First International Conference
on Deductive and Object-Oriented Databases (DOOD89)
Kyoto, Japan December 4-6, 1989
Sponsored by: Advanced Software Technology & Mechatronics Research Institute
of Kyoto (ASTEM RI/Kyoto)
Information Processing Society of Japan (IPSJ)
Supported by: ECRC, ICOT, INRIA, MCC
in cooperation with: ACM SIGMOD, IEEE CS
Location: Conference Hall of the Science Center Bldg. in Kyoto Research Park
Aim:
Deductive databases and object-oriented databases are at the
forefront
of research in next generation intelligent database systems. Object-oriented
programming and design methodologies hold great promise in reducing the
complexity of very large software systems in such domains as computer-aided
design and manufacturing, integrated office information systems, and artificial
intelligence. Object-oriented database systems will enhance the programmer/user
productivity of such systems. Research in deductive databases is aimed at
discovering efficient schemes to uniformly represent assertions and deductive
rules, and to respond to highly expressive queries against the knowledge base
of assertions and rules, and to check for the validity of knowledge. As
for logic programming, logic has provided the basis for this area of research
and nowadays there are strong interactions between these two fields. Recently,
research has been aimed at integrating the object-oriented paradigm and
rule-based deduction to provide a single powerful framework for intelligent
database systems.
The primary objective of this conference is to provide a common forum of
technical discussions between researchers in deductive databases and
object-oriented databases, thereby accelerating the integration of the
technical outputs of these two areas of research. We expect the conference
to be continued on an annual basis with sponsorship from major next-generation
computer projects around the world, such as ECRC, ICOT, INRIA, and MCC.
Topics included:
The conference will address new developments in theoretical and practical
aspects of deductive databases (DD), object-oriented databases (OOD), and
the integration of these two disciplines. Papers are solicited which describe
original and novel research within this framework. The following is a partial
list of topics of interest.
Integrating Logic and Object Paradigms
Concurrent Logic/Object Programming
Integrity Enforcement in DOOD
Artificial Intelligence Techniques in DOOD
Query Languages and Query Optimization
Advanced User Interface to DOOD Systems
Operational DOOD Systems
Integration of DOOD with Programming Languages
Formalization of the Object-Oriented Concepts
Performance of DOOD Systems
Applications of DOOD Systems
Consistency Checking in DOOD
Instructions: Authors should submit five (5) copies of a full paper to one
of Program Committee Chairpersons by May 1, 1989. Papers should be no
longer than 20 typewritten (double spaced) pages in English. The Author
Name(s) and Affiliation(s) should appear on the cover sheet.
Program Committee Chairpersons:
[American]
Won KIM
MCC
3500 West Balcones Center Drive
Austin, Texas 78759
U.S.A.
Computer Mail: kim@mcc.com
[European]
Jean-Marie NICOLAS
ECRC
Arabellastr. 17
8000 Munich 81
FR Germany
Computer Mail: jmn@ecrcvax.uucp
[Far East]
Shojiro NISHIO
Dept. of Information and Computer Sciences
Faculty of Engineering Science
Osaka University
Toyonaka, Osaka, 560 Japan
Computer Mail: nishio%osaka-u.junet@RELAY.CS.NET
Important Dates:
May 1, 1989 Deadline for paper submission
August 1, 1989 Notification of acceptance
September 25, 1989 Final version due
November 1, 1989 Deadline for advanced registration
The Organization of Committees
General Chairperson: Yutaka Ohno (ASTEM RI/Kyoto)
Steering Committee Chairperson: Jack Minker (U. of Maryland)
Organizing Committee Vice-Chairperson: Yahiko Kambayashi (Kyushu U.)
Executive Committee Chairperson: Akifumi Makinouchi (Fujitsu)
Executive Committee Vice-Chairperson: Koichi Furukawa (ICOT)
Local Arrangement and Finance Chairperson: Kiyoshi Agusa (Kyoto U.)
Program Committee Members:
[American]
Hong-Tai Chou (MCC)
Umeshwar Dayal (CCA)
Dan Fishman (HP)
Yannis Ioannidis (U. of Wisconsin)
Roger King (U. of Colorado)
Frederik Lochovsky (U. of Toronto)
John Mylopoulos (U. of Toronto)
D. Stott Parker (UCLA)
Yehoshua Sagiv (Hebrew U.)
Oded Shmueli (Technion)
Satish Thatte (TI)
Allen Van Gelder (UC Santa Cruz)
Moshe Y. Vardi (IBM Almaden)
Carlo Zaniolo (MCC)
Stanley Zdonik (Brown U.)
[European]
Serge Abiteboul (INRIA)
Michel Adiba (U. of Grenoble)
Peter M. Apers (U. of Twente)
Malcom Atkinson (U. of Glasgow)
Francois Bancilhon (Altair)
Rudolf Bayer (TUM)
Catriel Beeri (Hebrew U.)
Stefano Ceri (Politecnico di Milano)
Robert Demolombe (ONERA-CERT)
Klaus R. Dittrich (U. of Karlsruhe)
Johann C. Freytag (ECRC)
Georges Gardarin (INRIA)
Alain Pirotte (Philips)
Joachim W. Schmidt (U. of Frankfurt)
Dionysios Tsichritzis (U. of Geneva)
Laurent Vieille (ECRC)
[Far East]
Hirofumi Katsuno (NTT)
Yoshifumi Masunaga (U. of LIS)
Takao Miura (Sanno I. of Business)
Nobuyoshi Miyazaki (Oki)
Setsuo Ohsuga (U. of Tokyo)
In-Sup Paik (DACOM of Korea)
Shixuan Sa (People's U. of China)
Ron Sacks-Davis (RMIT, Melbourne)
Katsumi Tanaka (Kobe U.)
Yuzuru Tanaka (Hokkaido U.)
Yoshihisa Udagawa (Mitsubishi)
Kazumasa Yokota (ICOT)
Masatoshi Yoshikawa (Kyoto Sangyo U.)
Requests for further information should be addressed to:
Prof. Kiyoshi AGUSA
c/o ASTEM RI/Kyoto
9F Asahi-Bldg., Oike Yanaginobanba
Nakagyo-ku, Kyoto, 604 Japan
Phone:+81-75-256-1677
Telex:5423115ENG KU J
Fax: +81-75-256-1670
(bitnet) agusa@jpnkyoto
(junet) agusa@astem.junet
or
[DOOD89 Secretary Address]
Ms. Ikuko MIYAZAKI
Manager, Marketing Division
Science Center International Corp.
17 Chudoji Minami-machi
Shimogyo-ku, Kyoto, 600 Japan
Phone:+81-75-322-7888
Fax: +81-75-322-5348
∂22-Feb-89 1336 X3J13-mailer recent sent to wrong mailing list
Received: from IBM.COM by SAIL.Stanford.EDU with TCP; 22 Feb 89 13:34:48 PST
Date: Wed, 22 Feb 89 10:04:32 PST
From: Thom Linden <baggins@IBM.com>
To: Common Lisp mailing <x3j13@sail.stanford.edu>
Message-ID: <890222.100432.baggins@almvma>
Subject: recent sent to wrong mailing list
Sorry if this is a repeat for you. I'm resending the revised
document to this address as well.
=========================================================================
Date: Wed, 22 Feb 89 00:36:12 PST
From: Thom Linden <baggins@IBM.com>
To: Common Lisp mailing <common-lisp@sail.stanford.edu>
Message-ID: <890222.003612.baggins@almvma>
Subject: cs proposal revisions
I've sent out a revised cs document for your review. It reflects
a number of your comments from the Hawaii meeting and over the
net. The larger changes were:
-- The 'depreciated' appendix is eliminated. I re-introduced
the list of implementation-dependent attribute support
items into the document proper. The other items in
appendix B were simply eliminated.
-- The functions sbchar and sgchar are eliminated. In general,
the comments indicate that case discrimination by schar
does not introduce a substantial performance penalty.
-- Character registry names and constituents are NOT defined by
Common LISP. The proposal defines only the framework for
composition and decomposition of characters. The naming
of registries and definition of their constituents are
left completely as an ISO standard activity.
-- Character registry names and constituents are NOT defined by
Common LISP. The proposal defines only the framework for
composition and decomposition of characters. The naming
of registries and definition of their constituents are
left completely as an ISO standard activity.
Please send comments to the X3J13 mailing list. If time allows
and it seems needed, I will send out another revision in time to
allow for an actual vote at the March meeting. A straw vote list
will follow shortly.
Regards,
Thom
=========================================================================
Date: Wed, 22 Feb 89 02:09:18 PST
From: Thom Linden <baggins@IBM.com>
To: Common Lisp mailing <common-lisp@sail.stanford.edu>
Message-ID: <890222.020918.baggins@almvma>
Subject: Jan 1 cs proposal comments
>> From: "David A. Moon" <Moon@SCRC-STONY-BROOK.ARPA>
>> Subject: Comments on the Character proposal dated January 1, 1989
>>
>> Page 6 -- *all-registry-names* should be renamed to
>> *all-character-registry-names*; the word "registry" by itself
>> is too general.
I made this change to the latest version of the proposal.
>>
>> Page 9 -- the fourth bullet requires a defined total ordering of all
>> characters. This seems unnecessary, and is impossible to implement in any
>> system (such as Symbolics Genera) that allows dynamic addition of character
>> registries by third-party software vendors and by users; in such a system
>> character codes have to be allocated dynamically and therefore their order
>> cannot be fixed ahead of time.
You are quite right. This bullet is removed.
>>
>> Page 9 -- This says an implementation must define the result of
>> standard-char-p on the characters it supports. I think that is incorrect.
>> Common Lisp fully defines the result of standard-char-p, which is NIL
>> for all characters added by an implementation.
Right. This bullet is removed.
>>
>> Page 14 -- This EXTERNAL-WIDTH function probably should be part of a
>> database facility or a terminal screen template facility; I'm not sure it
>> is useful by itself. Also note that its result is only meaningful with
>> respect to a specific state of the stream. To give two examples, with the
>> SO/SI encoding the answer can vary by 1 depending on whether the stream is
>> already shifted into the correct state for the first character; with the
>> universal encoding Symbolics uses, the answer can vary by a lot depending on
>> whether the character repertoires appearing in the string have been used
>> earlier on the same stream (and hence have been assigned encoding numbers).
>> Because of this dependence on the state of the stream, I cannot think of
>> any correct use of EXTERNAL-WIDTH that does not involve immediately
>> outputting the string to the stream. Therefore I believe the same effect
>> can be achieved without adding any new functions, by calling FILE-POSITION,
>> outputting to the stream, calling FILE-POSITION again, and subtracting. If
>> you still want to propose this feature, you should change the name: use
>> "length" instead of "width", since that's the word Common Lisp always uses,
>> and use a name that relates to the :EXTERNAL-CODE-FORMAT option to OPEN;
>> for example, STRING-LENGTH-IN-EXTERNAL-CODE-FORMAT or
>> EXTERNAL-CODED-STRING-LENGTH.
I changed the name to EXTERNAL-CODED-STRING-LENGTH. The description
already contained a comment regarding current state. Actually, I
favored the STREAM-INFO proposal which was voted down. This is
much less ambitious but I still feel more useful than actually
forcing I/O, backing up and rewriting. It's also not clear
that your alternative has the same effect since it seems that
some unwanted side-effects would occur such as premature appearance
on a display screen.
>>
>> Page 24 -- I can't figure out what you intend the meaning of SIMPLE-STRING
>> to be. Your report mostly does not mention it, but it doesn't say to
>> remove it either. If I have correctly correlated page 24 back to CLtL, you
>> are defining SIMPLE-STRING to be synonymous with SIMPLE-GENERAL-STRING.
>> Maybe what you really meant, though, was what you said in November you
>> would do, which was to make SIMPLE-STRING mean (AND STRING SIMPLE-ARRAY),
>> in other words a union of several subtypes. This is particular confusing
>> because Common Lisp uses the name SIMPLE-VECTOR to mean what you might call
>> a simple general vector, that is, (SIMPLE-ARRAY T 1) rather than
>> (SIMPLE-ARRAY * 1). Here are my suggestions for what to do with the
>> various names for string subtypes:
>>
>> STRING As a union of all strings, this is fine.
>> GENERAL-STRING I think (VECTOR CHARACTER) is just as good.
>> BASE-STRING I think (VECTOR BASE-CHARACTER) is just as good.
>> SIMPLE-STRING Should mean (SIMPLE-ARRAY CHARACTER 1).
>> SIMPLE-BASE-STRING This is fine.
>> SIMPLE-GENERAL-STRING This name is horrible, use SIMPLE-STRING.
>>
>> My rationale for these suggestions largely comes from thinking about
>> which of these names would ever be used in type declarations and about
>> how these names relate to the other names already in Common Lisp. To
>> repeat older comments:
>>
>> Pages 19 and 20 introduce a new type named simple-base-string, in addition
>> to simple-string. If you think about how simple-string would be used for
>> compiler optimization, it makes sense for simple-string to be the name for
>> the single simplest representation, rather than a name for a whole family
>> of representations that would have to be discriminated at run time. Thus
>> what you call simple-base-string should be called simple-string, and what
>> you call simple-string should just be called (simple-array character (*)).
>> This would not be an incompatible change in the meaning of simple-string.
>> Simple-string would be analogous to simple-vector.
>>
>> I changed my mind slightly on that and now claim that while SIMPLE-STRING
>> should still be a single representation, not a union, it should be the
>> representation that can hold all characters. This is both because of the
>> principle that correct programs should be easier to write than
>> extra-efficient programs, and because of the powerful analogy with the name
>> SIMPLE-VECTOR. Then the name SIMPLE-BASE-STRING is also needed for
>> convenient type declarations of the more efficient but less functional
>> string representation. That name is good, by analogy to BASE-CHARACTER.
>>
>> Adopting the above suggestions helps you decide what to do about the
>> SCHAR, SBCHAR, and SGCHAR mess. First of all, you only need two functions,
>> not three, because there are only two specified specialized representations.
>> SCHAR should be for what I've called SIMPLE-STRING, SBCHAR should be
>> for SIMPLE-BASE-STRING, and SGCHAR is not needed. (In fact I would prefer
>> to remove all of the specialized versions of AREF from the language, in
>> favor of THE or type declarations, but I know that would only pass over
>> some peoples' dead bodies so I won't push it.)
>>
>> In case you are wondering, I have no quarrel with the name BASE-CHARACTER
>> and would not want to see it removed. I guess I differ from Larry here,
>> unless I erred when I wrote down his comments during the meeting.
The statement on p24 making SIMPLE-STRING == (SIMPLE-ARRAY CHARACTER (*))
was in error. P25 had it right. Since we changed SCHAR to accept
all simple strings there is no reason for SGCHAR and SBCHAR and
these are eliminated.
String and simple-string are (more clearly I hope) defined as union
types. I've changed the terminology from 'for the purpose of
declaration' to 'for object creation'. Perhaps there is a better
term but the effect seems to be identical to what you suggest. That is,
correct, portable programs are easier to write, one simply uses
string and simple-string. More efficient, less portable programs
need to specify the specialized subtype(s) explicitly.
Having both string and simple-string defined as union types seems
desirable on the basis of uniformity.
Of the type abbreviations I think BASE-CHARACTER is the most
useful and GENERAL-STRING, SIMPLE-BASE-STRING and SIMPLE-GENERAL-STRING
less so. I don't believe that any of these really complicate the
language.
>>
>> Page 25 -- The discussion of STRING and SIMPLE-STRING thinks that there
>> is a distinction between declaration and discrimination, but Common Lisp
>> no longer has such a distinction. Even when Common Lisp did have such
>> a distinction, the meanings for declaration stated here were incorrect.
I changed this to 'object creation'. Perhaps there is a better term.
>>
>> Page 29 -- *all-character-registry-names* has to be a variable, not a
>> constant, to accomodate systems (such as Symbolics Genera) that allows
>> dynamic addition of character registries by third-party software vendors
>> and by users.
Right, I made this change.
>>
>> Page 35 -- CHAR-REGISTRY should be renamed to CHAR-REGISTRY-NAME, so that
>> if at some later time character registry objects are added, there is no
>> possibility of confusion about whether this function returns a name or
>> an object.
Right, I made this change.
>>
>> Page 40 -- the default :ELEMENT-TYPE for OPEN cannot be BASE-CHARACTER. I
>> think this was discussed at the X3J13 meeting. The report suffers from a
>> confusion between two meanings of BASE-CHARACTER: the character type
>> implemented most efficiently by the Lisp, and the character type most
>> natural to the file system. These are not always the same. Furthermore,
>> in a network-based system that supports multiple file systems equally
>> (Symbolics Genera is an example), each file system might have a different
>> natural character type. BASE-CHARACTER should just mean the character type
>> implemented most efficiently by the Lisp. The default for :ELEMENT-TYPE
>> has two viable choices that I can see, and maybe you should just propose
>> both and let people vote:
>>
>> (1) CHARACTER. This matches the behavior of MAKE-STRING and friends,
>> adheres to the principle that writing correct programs should be easier
>> than writing extra-efficient programs (since making a program correct
>> requires making every part of it correct, while making a program
>> efficient only requires improving the bottlenecks), and doesn't cost
>> anything in implementations that don't have extended characters.
>>
>> (2) The most natural type for the particular pathname being opened.
>> In some systems this would be a constant, and in a subset of those
>> systems this would be BASE-CHARACTER, however in general this might
>> depend on the host, device, or even type fields of the pathname,
>> and might also depend on information stored in the file system.
>> In general this would always be an (improper) supertype of
>> BASE-CHARACTER, but it's probably a bad idea to make that a requirement,
>> as some file systems might not be able to implement it conveniently.
>> Again this doesn't cost anything in implementations that don't have
>> extended characters.
The discussion on p16 about the base coded character set efficiency
has been removed. The default element-type now states that it is
implementation defined as character or a subtype of character.
>>
>> The relationship of option 2 to :ELEMENT-TYPE :DEFAULT (a feature that
>> already exists in Common Lisp) needs to be clarified. Perhaps they
>> are the same.
The same? I don't understand. For example, I can imagine the
element-type default as base-character and the external format
defaulted to either an ASCII or EBCDIC encoding.
>>
>> Also the following promise from 14 November did not show up in the report:
>>
>> >> There should be a name for the "natural" encoding and there should be a
>> >> specification of the properties of the natural encoding that a programmer
>> >> can rely on. Suggestions for the name include :BASE, :NATURAL, and
>> >> :INTERCHANGE. The definition probably involves the concept of data
>> >> interchange with non-Lisp programs on the same system.
>>
>> This will be added to the revision.
I lied. No one came up with the 'properties' of such an encoding.
Do you have some text to suggest?
>>
>> Appendix B -- I disagree with the way you've used deprecation. I'll
>> comment on each individual point:
>> - I see no justification for deprecating STANDARD-CHAR.
>> - I agree that STRING-CHAR should be deprecated, not deleted nor kept.
>> - I think fonts and bits should be removed outright, not deprecated,
>> because no portable program could possibly be using them.
>> - I think the CHAR-INT function needs to be kept, although the INT-CHAR
>> function should go away. This is for hashing. See comments below
>> on character attributes.
I've removed Appendix B and mention of deprecation. STANDARD-CHAR
is simply (characterp :standard). String-char is back in as
implementation-defined either character or base-character (and
maybe should be voted as a deprecated type).
>>
>> No particular page -- the use of strings for naming registries, labelling
>> characters, and naming external code formats is objectionable. Nothing
>> else in Common Lisp is named by strings. Use of strings might lead to
>> efficiency problems. We feel that keyword symbols are the appropriate
>> objects to use for these three kinds of names.
I changed these back to symbols.
>>
>> No particular page -- We agree with the deprecation or deletion of the two
>> particular character attributes defined by CLtL, but not with the
>> deprecation of the whole concept of character attributes. In fact on page
>> 20 you say "characters are uniquely distinguished by their codes," which
>> makes it impossible to have character attributes at all. The language must
>> define how conforming programs should be written so that they will work
>> both in implementations with character attributes and in implementations
>> without them. For example, the value of (eql x (code-char (char-code x)))
>> is unspecified. Another thing that needs to be said is that the exact
>> character operations (char=, string=, etc.) respect all character
>> attributes, while the inexact character operations (char-equal,
>> string-equal, etc.) respect or ignore each character attribute in an
>> implementation-defined but consistent fashion. Some of what you say on
>> page 44 about attributes in general needs to be part of the spec, not
>> deprecated. I would retain everything on that page except for INT-CHAR and
>> the last bullet (referring to bits and fonts), and I would add a remark
>> that FIND-SYMBOL and INTERN respect character attributes. If you want,
>> perhaps I or someone else at Symbolics can provide exact text for what
>> to say about character attributes that you could insert into your report.
I moved the attribute list previously in Appendix B back into the
description of characters. Let me know what text you would like
to see for FIND-SYMBOL and INTERN and I'll add it to the list.
>> No particular page -- On the subject of defining character registries in a
>> separate document, and relating them to ISO standards for character
>> encoding: I think that's fine. I don't see anything wrong with introducing
>> the concept of character registry and the requirement that each character
>> object relates to exactly one registry. However, I think the somewhat
>> random list of character registries on pages 7-8 and again on page 21 does
>> not belong in the language specification. Even the names of the
Right. They are not part of the Common LISP standard. The revised
document is considerably clearer in this regards.
>> standardized character registries belong in the character registry
>> standard, not in the Common Lisp language standard. I'm confused about the
>> meaning of BASE, STANDARD, and CONTROL as character registry names; these
>> are mentioned in your report but not explained very well. If these are
>> character registries that are required to exist in all Common Lisp
>> implementations, then unlike the others they do belong in the Common Lisp
>> language standard, not in the character registry standard.
By CONTROL, I meant a registry which contains the various control
codes mentioned in the various ISO coded character set standards.
BASE and STANDARD are no longer mentioned here. They are allowed
as Common LISP repertiore names in characterp and the character
type specifier.
>>
>> At the meeting there was some discussion about the issue of enumerating all
>> characters in a character registry. People claimed incorrectly that it was
>> impossible. In fact it's possible to do this, with questionable
>> efficiency, by the following program:
>>
>> (dotimes (code char-code-limit)
>> (let ((char (code-char code)))
>> (when char
>> (when (eq (char-registry-name char) desired-registry-name)
>> ... process this char ...))))
>>
>> Of course you have to change the EQ to EQUALP if you continue to use
>> strings to name character registries. For more efficiency, you could add
>> a way to iterate over all the codes in one character registry, but I think
>> that is unnecessary.
>>
>>
>> TYPOS:
Right. I've made these corrections.
>>
>> 25 -- base-string is missing from the Table 4-1 amendment.
>>
>> 26 -- general-string is not an array of BASE characters, also the first
>> two paragraphs under A.4.8 are garbled (the two separate sentences for
>> strings for symbols got smushed together).
>>
>> 37 -- This says the default for the :ELEMENT-TYPE option to MAKE-STRING
>> is SIMPLE-STRING. Actually it's CHARACTER.
>>
=========================================================================
Date: Wed, 22 Feb 89 03:48:56 PST
From: Thom Linden <baggins@IBM.com>
To: Common Lisp mailing <common-lisp@sail.stanford.edu>
Message-ID: <890222.034856.baggins@almvma>
Subject: cs proposal comments
>> From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
>> Subject: comments on character proposal
>>
>> Getting rid of bits and fonts (section 2.1) seems like a very good
>> idea to me. I would argue for deleting these "features" completely
>> instead of merely deprecating them, because there now seems to be
>> general agreement that the whole idea was brain-damaged in the first
>> place, plus it's just about impossible to use them portably anyway
>> (since implementations are free not to support them). Deprecating the
>> features would simply perpetuate the current sad state of affairs in
>> to the ANSI standard.
I deleted Appendix B from the proposal. The attribute check list is
incorporated into the character chapter as implementation dependent.
>>
>> I am not at all sure why we need to standardize the idea of character
>> registries at all, much less state that a character can only belong to
>> one registry, or define a standard set of registries. What does having
>> registries buy the user, other than perhaps a way to test whether a
>> character belongs to one or not? Why isn't it sufficient just to say
>> that implementations can support extended characters, and leave it at
>> that?
The registries are introduced to allow an application a portable
way to name, compose and decompose characters. Currently, there is
no way to do this in any programming language. There are other
possiblities. For example, simply labeling all characters
uniquely; another to define a universal coded character set and use
these numeric codes to 'name' characters. I don't think using
numbers for naming characters is useful since I'll always forget
what character 34539 actually is! Registries seem to provide a
framework for useful categorization of characters. It also
avoids the current mess that the coded character set standards
are in.
>>
>> I'm confused about how you propose to handle characters that appear in
>> more than one character repetoire, and whether characters with accent
>> marks are considered distinct from characters without accents. For
>> example, is the French "C" with a cedilla distinct from a normal
>> French "C", and is that distinct from the standard-char "C"?
We handle characters that appear in more than one repertoire by
using registries. No character appears in more than one registry.
The constituents of the registries are not defined by Common LISP.
I believe that in most environments today, it is recognized that
characters with accents are distinct from their vanilla cousins.
As we have proposed registries, they contain semantically
distinct characters.
>>
>> The way the document describes things now, it seems like the Common
>> Lisp standard would have to include a statement of exactly what
>> characters belong in each of the standard registries listed in section
>> 2.2. Otherwise, implementors might go off and define their own
>> character registries that happen to include some characters that ought
>> to belong in one of these standard registries. For instance, the machine
>> I happen to be sitting in front of right now supports an 8-bit native
>> character set, and it seems perfectly reasonable for a Lisp runnning on
>> this machine to include all 256 characters in its base character set,
>> but some of those might actually be supposed to live off in some other
>> registry.
The registries are independent of any coded character sets.
In particular, coded character sets are not registries. Your base
repertoire (set of 256 characters) are possibly drawn from
several registries.
You are correct that lacking an international standard (or ANSI one),
for character registries an implementation could define the
a single registry containing all supported characters. It could
also define NO registries and use only the conventional naming
of characters. I expect an implementation taking the no-cost way
would choose the second approach. On the other hand, an
implementation supporting text processing across international
boundaries is more likely to define some reasonable registries
eg. Latin, Greek, etc..
>>
>> Also in section 2.2, why is it necessary for there to be a total
>> ordering, or even a partial ordering, of all characters? It seems
>> like CHAR< and friends are not very useful except when comparing base
>> characters anyway. It seems like it would difficult to get things
>> like the Spanish N-with-twiddle character to collate correctly anyway,
>> given the constraints you have put on how character codes are derived
>> and the requirement that CHAR< be just like < on the char-codes.
Right. This is now removed.
>>
>> It doesn't seem like STANDARD-CHAR-P belongs in the list of character
>> predicates on p. 9, since no extended characters can possibly be
>> STANDARD-CHAR-P anyway.
Right. This is now removed.
>>
>> The stuff in section 2.3 seems mostly reasonable to me. It's not really
>> clear why you need GENERAL-STRING (as distinct from STRING) and
>> SIMPLE-GENERAL-STRING (as distinct from SIMPLE-STRING). Again, some
>> rationale would be helpful.
GENERAL-STRING means (VECTOR CHARACTER). This is not the meaning of
STRING (a union type). I agree that GENERAL-STRING is not much
of an abbreviation over (VECTOR CHARACTER). It still seems somewhat
more mnemonic.
>>
>> In section 2.4, the general idea of specifying an external character
>> encoding to OPEN seems reasonable. However, I'm confused by the
>> business about having more than one coded character set mixed
>> together. If a character appears in more than one coded character
>> set, which encoding takes precedence? It seems like this has not been
>> well thought-out. Also, seeing as though we have just voted down a
>> proposal to add an EXTERNAL-WIDTH function, it seems like a very bad
>> idea to lump it in here.
Some encoding schemes allow disjoint coded characters sets to
coexist. That is, a given character would appear on one but not
the other. For example, a ISO8859/1 coded character set could
coexist with a coded character set for Chinese.
As for External-width, it was part of our subcommittee discussions
long before the recent stream proposal. It will be a separate
item in the list of character votes.
>>
>> Now for the general comments.
>>
>> One thing that is not clear to me from reading this document is how
>> much of it has already been standardized by ISO. I share Larry's
>> concern that we might standardize one thing, and then have ISO go off
>> and standardize something completely different. I think it's a
>> mistake to try to second-guess what ISO might do.
The revision might make this clearer. I think this is a
red herring anyhow. As a programming language committee
we need to specify what is useful in the context of LISP. We
can't expect a coded character set committee to figure it out.
On the other hand, we can influence what gets standardized
by defining our framework. The ISO Prolog std committee is
interested in what we define.
>>
>> I am also concerned about trying standardize things that have not yet
>> been implemented. I think it's a mistake to try to do language design
>> in a standards committee.
>>
>> Finally, I have some problems with the presentation of your proposal.
>> One problem, as I mentioned at the meeting, is that you've made it an
>> all-or-nothing package, and I can't vote for the whole thing because
>> there are some parts of it that do not seem appropriate, even though I
>> would support some of the other changes individually. The other
>> problem is that Appendix A is virtually unreadable. Some of the
>> conceptual changes involve wording changes to several passages, and I
>> know that there are some other changes in the appendix that are not
>> mentioned in the introductory blurb at all. Is it totally impossible
>> to recast the changes in standard cleanup format proposals? The
>> advantage of that format is that it presents more context, including a
>> clear statement of why the existing CLtL behavior is "broken" and a
>> rationale for the proposed change.
There will be several votes regarding this proposal. I don't
intend to rewrite the document in a cleanup format.
>>
>> I know that we adopted things like the CLOS document that were
>> presented as single mega-proposals, but those were primarily additions
>> to the language and what you are proposing is essentially a large
>> number of incompatible changes. I'm having a hard time identifying
>> what all of those changes are.
>>
Actually, I don't think it's as large a number of changes as you
imply. In any case, the vote split should help this out.
=========================================================================
Date: Wed, 22 Feb 89 04:51:15 PST
From: Thom Linden <baggins@IBM.com>
To: Common Lisp mailing <common-lisp@sail.stanford.edu>
cc: David Gray <GRAY%DSG.CSC.TI.COM@RELAY.CS.NET>
Message-ID: <890222.045115.baggins@almvma>
Subject: cs proposal comments
>> From: David N Gray <Gray@DSG.csc.ti.com>
>> Subject: characters proposal
>>
>> I have read the documented titled "Extensions to Common LISP to Support
>> International Character Sets" dated January 1, 1989, and feel that it is
>> not much of an improvement over what we saw in October. Following are
>> some random comments about things I happened to notice; this is not
>> intended to be a comprehensive analysis.
>>
>> First, documents such as this ought to be labelled with an X3J13
>> document number so that they can be referred to conveniently and
>> unambiguously.
>>
>> "Appendix A" and "Appendix B" really should be chapters 3 and 4 since
>> they are an essential part of the proposal, rather than being an
>> appendage to it.
Appendix B is now eliminated. Appendix A is really quite unlike
chapters 1 and 2 in structure.
>>
>> Page 7 says that the definition of semi-standard-characters "is replaced
>> by a more uniform approach with introduction of the Control Character
>> Registry". Do you really mean that it _will_be_ replaced when the
>> Control Character Registry is defined in some subsequent document? I
>> certainly don't see anything in this document that could be considered a
>> replacement.
Yes. The revision is clearer on this. This document does not define
names for character registries nor their constituents.
>>
>> This whole concept of registries seems rather strange. Is the intent
>> that the alphabetic characters of the standard characters are to be in
>> the "Latin" registry while characters such as period and comma are in
>> "Latin-Punctuation"? Is #\NEWLINE in the "Control" registry? Where do
>> the digits go -- "Mathematical"?. Is #\- a "Latin-Punctuation" or a
>> "Mathematical"? Which registry is #\SPACE in? Now tell me what to do
>> with the extra non-Latin alphabetic characters used in Sweedish? Does
>> that require a separate registry for just those additional characters?
>> Now we have simple text in a single language using characters from at
>> least four different registries. Do you really think it possible to
>> agree on a "fixed", non-extensible, set of "Mathematical" or "Pattern"
>> characters?
Actually, I believe the simplicity of the registry framework will make
agreement easy. Currently, members of the coded character set
committees spend vast amounts of time lobbying for inclusion of their
favorite character(s) in the 'popular' coded character set standard.
The effect of not being included means fewer installations will
support their native language properly.
I think a new group, hopefully formed within
programming languages, should define the registries rather than
the existing coded character set committees. There is no competition
between registries, ie. no advantage of one over another. What this
committee has to agree upon is 1) a useful set of registry names and
2) definition of the constituents of each registry. The only argument
I would anticipate is "are the semantics of my alpha the same
or different from your alpha" type debates.
By the way,
the registries are fixed only in that a Common LISP implementation
cannot modify the standard definitions. This guarantees an application
program can portably rely on the composition and decomposition
functions to establish the availability of any given character.
>>
>> Page 9 says that an implementation needs to specify the total ordering
>> of characters within each registry, but what about the ordering of
>> characters in different registries? Is that completely undefined?
There is no ordering of characters within registries. As mentioned
in Hawaii, the character index (a number) was changed to character
label (a symbol) throughout the proposal.
>>
>> Page 25 section A.4.5 doesn't specify the syntax of a registry name; did
>> you intend it to be a string?
These have been changed to be symbols.
>>
>> Page 27 has an example using (typep x '(character "standard")) but
>> page 25 said that had to be a registry name; "standard" is not a
>> registry name.
The revision is clearer on this. character and characterp can take
registry names, :base or :standard. The meaning of :base and :standard
is defined by Common LISP as the base character repertoire and
standard character repertoire respectively.
>>
>> Page 29 - *ALL-REGISTER-NAMES* -- a list of strings?
Now a list of symbols.
>>
>> Page 33 -- FIND-CHAR -- does the index value within a registry have any
>> portable meaning? Is that intended to be specified for the standard
>> registries? Is "base" supposed to be accepted here? If not, how can
>> you access the base codes? If I were going to construct a character
>> from its index value, it would be more meaningful to use an index
>> relative to some coded character set rather than these registries.
FIND-CHAR takes a character label and registry. These are specified
by the registry standard. Base is not a registry name. We have
introduced a new function CHAR-CCS-VALUE which takes a character
object and a coded character set name (a symbol) and returns the
encoding of the character in the coded character set.
>>
>> Page 36, the last sentence doesn't make sense. The default for
>> :ELEMENT-TYPE would have to be either CHARACTER or BASE-CHARACTER.
Right. I've made this change.
>>
>> Page 37, section A.22.1.1 -- the part being deleted specifies the
>> meaning of including tab and form-feed characters in a Common Lisp
>> source file; do you really intend that to not have any standard meaning?
>> If my editor uses tabs for indenting, does that mean that the resulting
>> source file is not a standard-conforming program?
That really depends on the definition of a conforming program. Is
this defined yet?
>>
>> Page 38, the first reference to p360 of CLtL should be p353; the
>> deletion here says that there shall not be any standard name for the
>> commonly used control characters such as tab and form-feed. That still
>> seems wrong to me.
>>
>> Page 41, what's the point of appending "ccs" to the name of the
>> standard? Presumably that stands for "coded character set", but isn't
>> that adequately implied by the fact that this string will follow the
>> keyword :EXTERNAL-CODE-FORMAT ? The use of "default" seems odd since
>> :DEFAULT is used everywhere else.
This was to distinguish from someone referring to the set of characters
(repertoire) represented in a given coded character set. Ie. to
distinguish ISO8859/6-1987 coded character set from the ISO8850/6-1987
repertoire. In fact, the ISO coded character set standards never
refer to repertoires in isolation (ie. without the codes), so I've
dropped the 'ccs'. Also, "default" is now :DEFAULT as elsewhere.
>>
>> I agree with Moon that the excising of bits and fonts has not been done
>> carefully enough for them to be compatible extensions.
>>
I think the new revision takes care of this by incorporating the
attribute list as part of the language proper (ie. not deprecated).
∂22-Feb-89 1337 X3J13-mailer cs proposal part1 of 3
Received: from IBM.COM by SAIL.Stanford.EDU with TCP; 22 Feb 89 13:36:18 PST
Date: Wed, 22 Feb 89 10:06:36 PST
From: Thom Linden <baggins@IBM.com>
To: Common Lisp mailing <x3j13@sail.stanford.edu>
Message-ID: <890222.100636.baggins@almvma>
Subject: cs proposal part1 of 3
\documentstyle{report} % Specifies the document style.
\pagestyle{headings}
\title{\bf
Extensions to Common LISP to Support International
Character Sets}
\author{
Michael Beckerle\thanks{Gold Hill Computers} \and
Paul Beiser\thanks{Hewlett-Packard} \and
Jerry Duggan\thanks{Hewlett-Packard} \and
Robert Kerns\thanks{Independent consultant} \and
Kevin Layer\thanks{Franz, Inc.} \and
Thom Linden\thanks{IBM Research, Subcommittee Chair} \and
Larry Masinter\thanks{Xerox Research} \and
David Unietis\thanks{Lucid, Inc.}
}
\date{February 21, 1989} % Deleting this command produces today's date.
\begin{document}
\maketitle % Produces the title.
\setcounter{secnumdepth}{4}
\setcounter{tocdepth}{4}
\tableofcontents
%----------------------------------------------------------------------
%----------------------------------------------------------------------
\newfont{\cltxt}{cmr10}
\newfont{\clkwd}{cmtt10}
\newcommand{\apostrophe}{\clkwd '}
\newcommand{\bq}{\clkwd\symbol{'22}}
%----------------------------------------------------------------------
%----------------------------------------------------------------------
\chapter{Introduction}
This is a proposal to the X3 J13 committee
for both extending and modifying the Common LISP
language definition to provide a standard basis for Common LISP
support of the variety of characters used to represent the
native languages of the international community.
This proposal was created by the Character Subcommittee of X3 J13.
We would like to acknowledge discussions with T. Yuasa and other
members of the JIS Technical Working Group,
comments from members of X3 J13,
and the proposals \cite{ida87},
\cite{linden87}, \cite{kerns87}, and \cite{kurokawa88} for
providing the motivation and direction for these extensions.
As all these documents and discussions were created
expressly for LISP standardization usage,
we have borrowed freely from their ideas as well as the texts
themselves.
This document is separated into two parts. The first part explains the
major language changes and their motivations. While intended as
commentary to a general audience, and not explicitly as
part of the standard document, the X3 J13 editor may
include sections at her/his discretion. The second part,
Appendix A, provides
the page by page set of editorial changes to \cite{steele84}.
\section{Objectives}
The major objectives of this proposal are:
\begin{itemize}
\item To provide a consistent, well-defined scheme allowing support
of both very large character sets and multiple character sets.
\footnote{The distinction between the terms {\em character repertoire}
and {\em coded character set} is made later. The usage
of the term {\em character set},
avoided after this introduction, encompasses both terms.}
Many software applications are intended for international use, or
have requirements for incorporation of language elements of multiple
native languages within a single application.
Also, many applications require specialized languages including,
for example, scientific and typesetting symbols.
In order
to ensure some portability of these applications, data expressed in
a mixture of these
languages must be treated uniformly by the
software language.
All character and string manipulations should operate uniformly,
regardless of the character set(s) of the character objects.
This applies to array indexing, readtable definitions, read
symbol construction and I/O operations.
\item To ensure efficient performance of string and character
operations.
Many native
languages, such as Japanese and Chinese, use character
sets which contain more characters than the Latin alphabet.
Supporting larger sized character sets frequently means employing
larger data fields to uniquely encode each character.
Common LISP implementations using
larger sized character sets can
incur performance penalties in terms
of space, time, or both.
The use of large and/or multiple character sets by an
implementation
implies the need for a more complex character type representation.
Given a more complex character representation, the efficiency
of language operations on characters (e.g. string operations)
could be affected.
\item To assure forward compatibility of the proposed model
and definition with existing Common LISP implementations.
Developers should not be required to re-write large amounts of either
LISP code or data representations in order to apply the proposed
changes to existing implementations.
The proposed changes should provide an easy
portability path for existing code to many possible implementations.
\end{itemize}
There are a number of issues, some under the general rubric of
internationalization, which this proposal does {\em not} cover.
Among these issues are:
\begin{itemize}
\item Time and date formats
\item Monetary formats
\item Numeric punctuation
\item Fonts
\item Lexicographic orderings
\item Right-to-left and bidirectional languages
\end{itemize}
%----------------------------------------------------------------------
%----------------------------------------------------------------------
%----------------------------------------------------------------------
%----------------------------------------------------------------------
\chapter{Overview}
We use several terms within this document which
are new in the context of Common LISP.
Definitions for the following prominent
terms are provided for the reader's convenience.
A {\em character repertoire} defines a collection of characters
independent of their specific rendered image or font. This
corresponds to the mathematical notion of a {\em set}
\footnote{We avoid the term {\em character set} as it has been
(over)used in the context of character repertoire as well
as in the context of coded character set.}.
Character
repertoires are specified independent of coding and their characters
are only identified with a unique {\em character label},
a graphic symbol, and
a character description.
A {\em coded character set} is a character repertoire plus
an {\em encoding} providing a unique mapping between each character
and a number which serves as the character representation.
There are numerous internationally standardized coded character
sets; for example, \cite{iso8859/1} and \cite{iso646}.
A character may be included in one or more character repertoires.
Similarly, a character may be included in one or more
coded character sets. For example, the Latin letter "A" is contained
in the coded character set standards: ISO 8859/1, ISO 8859/2,
ISO 6937/2, and others.
To universally identify each character, we define a unique
collection of repertoires called {\em character
registries} as a partitioning of all characters.
That is, each character is included
in one and only one character registry.
In Common LISP a {\em character} data object is identified by its
{\em character code}, a unique numerical code.
Each character code is composed from
a character registry and a character label.
Character data objects which are classified as {\em graphic},
or displayable, are each associated with a {\em glyph}. The
glyph is the visual representation of the character.
The primary purpose of introducing these terms is to provide a
consistent naming to Common LISP concepts which are related
to those found in ISO standardization of coded
character sets.
\footnote{The bibliography includes several relevant ISO
coded character set standards.}
They also serve as a demarcation between these
standardization activities. For example, while Common LISP is free to
define unique manipulation facilities for characters, registries
and coded character sets, it should
not define standard coded character sets nor standard character
registries.
A secondary purpose is to detach the language specification from
underlying hardware representation. From a language
specification viewpoint it is inconsequential whether
characters occupy one or more (8-bit) bytes or whether
a Common LISP implementation's
internal representation for characters is distinct from or identical
to any of the numerous
external representations (for example, the text interchange
representation \cite{iso6937/2}).
We specifically do not propose any standard coded character sets.
%----------------------------------------------------------------------
\section{Character Identity}
Characters are uniquely distinguished by their codes,
which are drawn from the set of
non-negative integers. That is, within Common LISP
a unique numerical code
is assigned to each semantically different character.
It is important to separate the notion of glyph from the notion of
character data object when defining a scheme under which issues of
identity can be rigorously decided by a computer language. Glyphs are
the visual aspects of characters, writable on surfaces, and sometimes
called 'graphics'. A language specification valid for more than a
narrow range of systems can only make assumptions about the existence
of {\em abstract} glyphs (for example, the Latin letter A) and not about
glyph variants (for example, the italicized Latin letter {\em A})
or characteristics of display devices. Thus, an important element of
this proposal is the removal of the {\em font} and {\em bits}
attributes from the language specification.
\footnote{These and other attributes may still be supported as
implementation-defined extensions.}
All functions
dealing with the {\em bits} and {\em font} attributes are either
removed or modified by this proposal.
The deleted functions and constants include:
{\em char-font-limit,
char-bits-limit,
int-char,
char-int,
char-bits,
char-font,
make-char,
char-control-bit,
char-meta-bit,
char-super-bit,
char-hyper-bit,
char-bit,
set-char-bit}.
The definition in \cite{steele84} of semi-standard characters has
been eliminated. This is replaced by a more uniform approach
to character naming with the introduction of character registries
(see below).
%----------------------------------------------------------------------
\section{Character Naming}
A Common LISP program must be able to name, compose and decompose
characters in a uniform, portable manner, independent of any
underlying representation. One possible composition is by
the pair $<$ coded character set standard, decimal representation $>$
\footnote{This syntax is for illustration only and is not being
proposed.}.
Thus, for example, one might compose the Latin 'A' with the pair
$<$ ISO8859/2-1987, 65 $>$,
$<$ ISO8859/6-1987, 65 $>$, or
$<$ ISO646-1983, 65 $>$, etc.. The difficulty here is two-fold.
First, there are several ways to compose the same character and
second, there may be multiple answers to
the question: {\em To what coded character set
does character object x belong?}.\footnote{Even
worse, the answer might change yearly.}
The identical problems occur if the pair
$<$ character repertoire standard, decimal representation $>$ is used.
\footnote{Existing ISO repertoires seem to be defined exclusively
in the context of coded character sets and not as standards
in their own right.}
The concept of character registry is introduced by this proposal
to resolve the problem of character naming, composition and
decomposition.
Each character is universally defined by the
pair $<$ character registry name, character label $>$. For this
to be a portable definition, it must have a standard meaning.
Thus we propose the formation of an ISO Working Group to
define an international
{\em Character Registry Standard}.
At this writing there is no existing Character Registry Standard nor
ISO Working Group organized to define such a standard.
\footnote{It is the intention of X3 J13 to promote and adopt
an eventual ANSI or ISO Character Registry Standard. In particular, we
acknowledge that X3 J13 is {\em not} the appropriate forum to
define the standard. We believe
it is a required component of all programming languages
providing support for international characters.}
Common LISP character codes are composed from a character registry and
a character label. The convention by which a character label and
character registry compose a character code is implementation
dependent.
We introduce new functions {\clkwd find-char, char-registry-name,} and
{\clkwd char-label} to
compose and decompose character objects. We also extend the
{\clkwd characterp} predicate to
support testing
membership of a character in a given character registry.
\footnote{
For example,
testing membership in the Japanese Katakana character registry.
}
A global variable {\clkwd *all-character-registry-names*}
is added to
support application determination of supported character registries.
The naming and content of the standard character registries
is left unspecified by this proposal.
\footnote{The only constraint is that character registries be
named using only {\clkwd standard-p} characters.}
Below are some candidate character registry names:
\begin{itemize}
\item Arabic
\item Armenian
\item Bo-po-mo-fo
\item Control (meaning the collection of standard text communication
control codes)
\item Cyrillic
\item Georgian
\item Greek
\item Hangul
\item Hebrew
\item Hiragana
\item Japanese-Punctuation
\item Kanji
\item Katakana
\item Latin
\item Latin-Punctuation
\item Mathematical
\item Pattern
\item Phonetic
\item Technical
\end{itemize}
The list above is provided as a starting point for discussion
and is not intended to be representative
nor exhaustive. The Common LISP language definition does not
depend on these names nor any specific content (for example:
Where should the plus sign appear?). It is application
programs which require a reliable definition of the
registry names and their constituents. The Common LISP language
definition imposes the framework for constructing and manipulating
character objects.
The proposed ISO Character Registry Standard is fixed;
an implementation may not extend a standard registry's
constituent set of characters beyond the
standard definition.
An implementation may provide support for all or part of any
character registry
and may provide new character registries which include characters
having unique semantics (i.e. not defined in any standard
character registry).
Implementation registries must be uniquely
named using only {\clkwd standard-p} characters.
An implementation must document the registries it supports.
For each registry supported the documentation must include
at least the following:
\begin{itemize}
\item Character Labels,
Glyphs, and Descriptions.
\item Reader Canonicalization.
\item Effect of character predicates.
In particular,
\begin{itemize}
\item {\clkwd alpha-char-p}
\item {\clkwd lower-case-p}
\item {\clkwd upper-case-p}
\item {\clkwd both-case-p}
\item {\clkwd graphic-char-p}
\item {\clkwd alphanumericp}
\end{itemize}
\item Interaction with File I/O. In particular, the
coded character sets
\footnote{For example, ISO8859/1-1987.} and
external encoding schemes
\footnote{For example, {\em Xerox System Integration Character
Code Standard}\cite{xerox87}.}
supported are documented.
\end{itemize}
Which coded character sets and encoding schemes
are supported by the overall computing system, the
details of the mapping of glyphs to characters
to character codes are
left unspecified by Common LISP.
The diversity of glyph sets and coded character
set conventions in use worldwide and the desirability
of allowing Common LISP applications
to portabily manipulate symbolic elements from many
languages, perhaps simultaneously, mandate such a flexible approach.
%----------------------------------------------------------------------
\section{Hierarchy of Types}
Providing support for extensive character repertoires may
impact Common LISP implementation performance in terms
of space, time, or both.
\footnote{This does not apply to all implementations.
Unique hardware support and user community requirements must
be taken into consideration.}
In particular, many existing
implementations support variants of the ISO 8859/1 standard.
Supporting large
repertoires argues for a multi-byte internal representation
for each character, even if an application primarily (or exclusively)
uses the ISO 8859/1 characters.
This proposal extends the definition of the character and string
type hierarchy to include specialized subtypes
of character and string. An implementation is free to associate
compact internal representation tailored to each subtype.
The {\clkwd string} type specifier, when used for object
creation, for example in {\clkwd make-sequence},
is defined to mean the most general string subtype supported
by the implementation (similarily for the {\clkwd simple-string}
type specifier). This definition emphasizes portability
of existing Common LISP applications to international
character environments over performance. Applications emphasizing
efficiency of text processing in non-international environments
will require some modification to utilize subtypes with
compact internal representations.
It has been suggested that either a single type is
sufficient to support international characters,
or that a hierarchy of types could be used, in a manner
transparent to the user. A desire to provide flexibility which
encourages implementations to support international
characters without compromising application efficiency
led us to accept the need for more than one type.
We believe that these choices reflect a minimal
modification of this aspect of the type system, and that
exposing the types for string and character construction while
requiring uniform treatment for characters otherwise
is the most reasonable approach.
\subsection{Character Type}
The following type specifier is added as a subtype
of {\clkwd character}:
\begin{itemize}
\item {\clkwd base-character}
\end{itemize}
An implementation may support additional subtypes of {\clkwd character}
which may or may not be supertypes of {\clkwd base-character}.
In addition, an implementation may define {\clkwd base-character}
as equivalent to {\clkwd character}.
Characters of type {\clkwd base-character} are referred to as
{\em base characters}. Characters of type {\clkwd
(and character (not base-character))}
are referred to as {\em extended characters}.
The base characters are
distinguished in the following respects:
\begin{itemize}
\item
The standard characters are a subrepertoire of the base characters.
The selection of base characters which are not standard characters
is implementation defined.
\item
Only members of the base character repertoire
can be elements of a base string.
\item
The base characters are, in general, the default characters for I/O
operations.
\end{itemize}
No upper bound is specified for the number of glyphs in the base
character repertoire--that
is implementation dependent. The lower bound is 96, the
number of standard characters defined for Common LISP.
\footnote{Or, in contrast, the base repertoire may include all
implementation supported characters.}
The distinction of base characters is largely a pragmatic
choice. It permits efficient handling of common situations, is
in some sense privileged for host system I/O, and can serve as an
intermediate basis for portability, less general than the standard
characters, but possibly more useful across a narrower range of
implementations.
Many computers have some "base" character representation which
is a function of hardware instructions for dealing with characters,
as well as the organization of the file system. The base character
representation is likely to be the smallest transaction unit permitted
for text file and terminal I/O operations. On a system with a record
based I/O paradigm, the base character representation is likely to
be the smallest record quantum. On many computer systems,
this representation is a byte.
However, there are often multiple
coded character sets supportable on a
computer, through the use of special display and entry hardware, which
are varying interpretations of the basic system character
representation. For example, ISO 8859/1 and ISO 6937/2 are two
different interpretations of the same 1-byte code representations.
Many countries have their own glyph-to-code mappings for 1-byte
character codes addressing the special requirements of national
languages. Differentiating between these, without reference to
display hardware, is a matter of convention, since they all use the
same set of code representations. When a single byte is not enough,
two or more bytes are sometimes used for character encoding. This
makes character handling even more difficult on machines where the
natural representation size is a byte, since not only is the semantic
value of a character code a matter of convention, which may vary
within the same computing system, but so is the identification of a
set of bits as a complete character code.
It is the intention of this proposal that the composition of
base characters is typically
determined by the code capacity of the natural file system and I/O
transaction representations, and the assumed display glyphs should be
those of the terminals most commonly employed.
There are several advantages to this scheme. Internal representation
of strings of just base characters can be more compact than
strings including extended characters.
Source programs are likely to consist predominantly of base characters
since the standard characters are a subset of the base character
repertoire. Parsing of pure base character text
can be more efficient than parsing of text including
extended characters.
I/O can be performed more simply
with base characters.
The standard characters are the 96 characters used in the Common LISP
definition {\bf or their equivalents}.
This was the Common LISP \cite{steele84} definition, but
{\em equivalents} is a vague term.
The standard characters are not defined by their glyphs, but by their
roles within the language. There are two aspects to the roles of the
standard characters: one is their role in reader and format control
string syntax; the second is their role as components of the names of
all Common LISP
functions, macros, constants, and global variables. As
long as an implementation chooses 96 glyphs
and treats those 96 in a manner consistent with
the language's specification for the standard characters (e.g.
the naming of functions), it doesn't matter what glyphs the I/O
hardware uses to represent those characters: they are the standard
characters. Any program or
data text written wholly in those characters
is portable through simple code conversion.
\footnote{For example, the currency glyph, \$ , might be replaced
uniformly by the currency glyph available on a particular display.}
Additional
mechanisms, such as in \cite{linden87}, which support establishment of
equivalency between otherwise distinct characters are not excluded by
this proposal.
\footnote{We believe this is an important issue but it requires
additional implementation experience. We also encourage
new proposals from JIS and ISO LISP Working Groups on this issue.}
\subsection{String Type}
The {\clkwd string} type
is defined as
a vector of characters. More precisely, a string
is a specialized vector whose elements are of type
{\clkwd character} or a subtype of character. Similarly, a simple
string is a specialized simple vector whose elements are of type
{\clkwd character} or a subtype of character. The following string
subtypes are
distinguished with standardized names: {\clkwd base-string},
{\clkwd general-string}, {\clkwd simple-base-string}, and
{\clkwd simple-general-string}.
All strings which are not base strings
are referred to as {\em extended strings}.
A base string can only contain base characters.
{\clkwd general-string} is equivalent to {\clkwd (vector character)}
and can contain any implementation supported base or extended characters,
in any mixture.
All Common LISP functions defined to operate on strings treat
base and extended strings uniformly with the following
caveat: for any function which inserts a character into a string, it
is an error to insert an extended character
into a base string.
\footnote{An implementation may, optionally, provide automatic
coersion to an extended string.}
An implementation may support string subtypes in addition
to {\clkwd base-string} and
{\clkwd general-string}.
For example, a hypothetical
implementation supporting Arabic and Cyrillic character registries
might provide as extended characters:
\begin{itemize}
\item {\clkwd general-string} -- may contain Arabic, Cyrillic or
base characters in any mixture.
\item {\clkwd region-specialized-string} -- may contain installation
selected repertoire (Arabic/Cyrillic) or base characters in any
mixture.
\item {\clkwd base-string} -- may contain base characters
\end{itemize}
Though, clearly, portability of applications using
{\clkwd region-specialized-string} is limited, a performance
advantage might argue for its use.
\footnote{{\clkwd region-specialized-string} is used here for
illustration only; it is not being proposed as a standardized
string subtype.}
Alternatively,
an implementation
supporting a large base character repertoire
including, say, Japanese Kanji may define
{\clkwd base-character}
as equivalent to {\clkwd character}.
We expect that applications sensitive to the performance
of character handling in some host environments will
utilize the string subtypes to provide performance
improvement. Applications with emphasis on international
portability will likely utilize only {\clkwd general-string}s.
The {\clkwd coerce} function is extended to
allow for explicit coercion between base strings and extended strings.
It is an error to coerce an extended character to a base character.
During reader
construction of symbols, if all the characters
in the symbol's name are of type {\clkwd base-character},
then the name of the symbol may be stored as a base string.
Otherwise it will be stored as an extended string.
The base string type allows for more compact representation of strings
of base characters, which are likely to predominate in any system.
Note that in any particular implementation the base characters
need not be the
most compactly representable, since others might have
a smaller repertoire.
However, in most implementations base strings are
likely to be more space efficient than extended strings.
%----------------------------------------------------------------------
\section{Streams and System I/O}
A lot of the work of ensuring that a
Common LISP implementation operates correctly in a
multiple coded character set environment must be performed by
the I/O interface.
The system I/O interface, abstracted in
Common LISP as streams, is responsible
for ensuring that text input from outside LISP is properly mapped
into character objects internally, and that the inverse mapping
is performed on output. It is beyond the scope of a language
definition to specify the details of this operation, but options
are specified which allow runtime indication from the user as to
what coded character sets a stream uses, and how the mappings
should be done. It is expected that implementations will provide
reasonable defaults and invocation options to accommodate desired use
at an installation.
One keyword argument is proposed as an addition to {\clkwd open}:
\begin{itemize}
\item {\clkwd :external-coded-character-format}
whose value would be:
\begin{itemize}
\item
A name or list of names indicating an implementation recognized
scheme for representing 1 or more coded character sets.
\footnote{
For example, the so/si convention used by IBM on 370
machines could be selected by a list including
the name {\clkwd :ibm-shift-delimited}.
The run-encoding convention defined by XEROX could be
selected by {\clkwd :xerox-run-encoded}.
The convention based on
ASCII which uses leading bit patterns to distinguish two-byte codes
from one-byte codes could be selected by
{\clkwd :ascii-high-byte-delimited}.
}
As many coded character set names must be provided as the
implementation requires for that external coding convention.
\footnote{
For example, if {\clkwd :ibm-shift-delimited} were the
argument, two
coded character set specifiers would have to be provided.
}
\end{itemize}
\end{itemize}
These arguments are provided for input, output, and
bidirectional streams.
It is an error to try to write a character other than a
member of the specified coded character sets
to a stream. (This excludes the
\#$\backslash${\clkwd Newline} character.
Implementations must provide appropriate line division behavior
for all character streams.)
An implementation supporting multiple coded character sets
must allow for the external
representation of characters to be separately (and perhaps
multiply) specified to {\clkwd open},
since there can be circumstances under
which more than one external representation for characters
is in use, or more than one coded character set
is mixed together in an
external representation convention.
In addition to supporting conversion at the system interface, the
language must allow user programs to determine how much space data
objects will require when output in whichever external representations
are available.
The new function {\clkwd external-coded-string-length}
takes a character
or string object as its required argument. It also takes an optional
{\em output-stream}.
It returns the number of implementation-defined
representation units
\footnote{
Often the same as the storage width of a base character, usually a byte.
}
required to externally store that object, using the
representation convention associated with the stream.
If the object cannot be represented in
that convention, the function returns {\clkwd nil}.
This function is necessary
to determine if strings can be written to fixed length
fields in databases or terminal screen templates. Note that this
function does not
address the problem of calculating
screen width of strings printed in proportional fonts.
Related to the I/O interface,
we also introduce the function {\clkwd char-ccs-value}
which takes a character object and a coded character set name
(eg. {\clkwd :ISO8859/1-1987}) and returns the encoding of
the character within the coded character set.
%----------------------------------------------------------------------
%----------------------------------------------------------------------
∂22-Feb-89 1338 X3J13-mailer cs proposal part 2 of 3
Received: from IBM.COM by SAIL.Stanford.EDU with TCP; 22 Feb 89 13:37:30 PST
Date: Wed, 22 Feb 89 10:08:21 PST
From: Thom Linden <baggins@IBM.com>
To: Common Lisp mailing <x3j13@sail.stanford.edu>
Message-ID: <890222.100821.baggins@almvma>
Subject: cs proposal part 2 of 3
%----------------------------------------------------------------------
%----------------------------------------------------------------------
\newcommand{\edithead}{\begin{tabular}{l p{3.95in}}
\multicolumn{2}{l} }
\newcommand{\csdag}{\bf$\Rightarrow$\ddag}
\newcommand{\editstart}{}
\newcommand{\editend}{\\ & \end{tabular}}
%----------------------------------------------------------------------
%----------------------------------------------------------------------
\appendix
\chapter{Editorial Modifications to CLtL}
The following sections specify the editorial changes needed in
CLtL to support the proposal. Section/subsection numbers and titles
match those found in \cite{steele84}. The notation
{\csdag x (pn, function)} denotes a reference to paragraph x within the
subsection (we count each individual example or metastatement
as 1 paragraph of text). Also, {\bf (pn, function)}, or simply
{\bf (pn)} is included as an additional
aid to the reader indicating the page number and function modified.
When an entire paragraph is deleted,
the first few words of the paragraph is noted.
If a section or paragraph of CLtL is {\em not} referenced,
no editorial changes are required to support this proposal.
\footnote{This may be an over optimistic statement since the changes
are fairly pervasive. The editor should take the sense of
Chapter 1 into account in resolving any discrepancies.}
%----------------------------------------------------------------------
\setcounter{section}{1}
\section{Data Types} % 2
%----------------------------------------------------------------------
\edithead {\csdag 8 (p12)}
\editstart
\\ \bf replace &
\cltxt
provides for a
rich character set, including ways to represent characters of various
type styles.
\\ \bf with &
\cltxt
provides support for international language characters as well
as characters used in specialized arenas, eg. mathematics.
\editend
\setcounter{subsection}{1}
\subsection{Characters} % 2.2.
\edithead {\csdag 1 (p20)}
\editstart
\\ \bf replace &
\cltxt
Characters are represented as data objects of type {\clkwd character}.
There are two subtypes of interest, called
{\clkwd standard-char} and {\clkwd string-char}.
\\ \bf with &
\cltxt
Characters are represented as data objects of type
{\clkwd character}.
\editend
\\
\edithead {\csdag 2 (p20)}
\editstart
\\ \bf replace &
\cltxt
This works well enough for printing characters. Non-printing
characters
\\ \bf with &
\cltxt
This works well enough for graphic characters. Non-graphic
characters
\editend
\subsubsection{Standard Characters} % 2.2.1.
\edithead {\csdag 1 before (p20)}
\editstart
\\ \bf insert &
\cltxt
A {\em character repertoire} defines a collection of characters
independent of their specific rendered image or font.
Character
repertoires are specified independent of coding and their characters
are only identified with a unique label, a graphic symbol, and
a character description.
A {\em coded character set} is a character repertoire plus
an {\em encoding} providing a unique mapping between each character
and a number which serves as the character representation.
\\ &
Common LISP requires all implementations to support a {\em standard}
character subrepertoire. Typically, an implementation
incorporates the standard
characters as a subset of a larger repertoire corresponding
to a frequently used set of characters, or base coded character
set.
The term {\em base character repertoire} refers to
the collection of characters represented by
the base coded character set.
\editend
\\
\edithead {\csdag 1 before (p20)}
\editstart
\\ \bf insert &
\cltxt
The {\clkwd base-character} type is defined as a subtype of
{\clkwd character}. A {\clkwd base-character}
object can contain any member of the base character repertoire.
Objects of type
{\clkwd (and character (not base-character))} are referred to
as {\em extended characters}.
\editend
\\
\edithead {\csdag 1 (p20)}
\editstart
\\ \bf delete &
\cltxt
Common LISP defines a "standard character set" ...
\editend
\\
\edithead {\csdag 1 (P20)}
\editstart
\\ \bf new &
\cltxt
The Common LISP
standard character subrepertoire consists of
a newline \#$\backslash${\clkwd Newline}, the
graphic space character \#$\backslash${\clkwd Space},
and the following additional
ninety-four graphic characters or their equivalents:
\editend
\\
\edithead {\csdag 2 (p21)}
\editstart
\\ \bf delete &
\cltxt
! " \# ...
\editend
\\
\edithead {\csdag 2 new (p21)}
\editstart
\\ &
{\bf Common LISP Standard Character Subrepertoire}
\editend
\footnote{\cltxt \#$\backslash${\clkwd Space}
and \#$\backslash${\clkwd Newline} are omitted.
graphic labels and descriptions are from ISO 6937/2.
The first letter of the graphic label categorizes the
character as follows: L - Latin, N - Numeric, S - Special
.}
\\
{\small \begin{tabular}{||l|c|l||l|c|l||} \hline
Label & Glyph & Name or description
& Label & Glyph & Name or description
\\ \hline
LA01 & a & small a
& ND01 & 1 & digit 1
\\ \hline
LA02 & A & capital A
& ND02 & 2 & digit 2
\\ \hline
LB01 & b & small b
& ND03 & 3 & digit 3
\\ \hline
LB02 & B & capital B
& ND04 & 4 & digit 4
\\ \hline
LC01 & c & small c
& ND05 & 5 & digit 5
\\ \hline
LC02 & C & capital C
& ND06 & 6 & digit 6
\\ \hline
LD01 & d & small d
& ND07 & 7 & digit 7
\\ \hline
LD02 & D & capital D
& ND08 & 8 & digit 8
\\ \hline
LE01 & e & small e
& ND09 & 9 & digit 9
\\ \hline
LE02 & E & capital E
& ND10 & 0 & digit 0
\\ \hline
LF01 & f & small f
& SC03 & \$ & dollar sign
\\ \hline
LF02 & F & capital F
& SP02 & ! & exclamation mark
\\ \hline
LG01 & g & small g
& SP04 & " & quotation mark
\\ \hline
LG02 & G & capital G
& SP05 & \apostrophe & apostrophe
\\ \hline
LH01 & h & small h
& SP06 & ( & left parenthesis
\\ \hline
LH02 & H & capital H
& SP07 & ) & right parenthesis
\\ \hline
LI01 & i & small i
& SP08 & , & comma
\\ \hline
LI02 & I & capital I
& SP09 & \_ & low line
\\ \hline
LJ01 & j & small j
& SP10 & - & hyphen or minus sign
\\ \hline
LJ02 & J & capital J
& SP11 & . & full stop, period
\\ \hline
LK01 & k & small k
& SP12 & / & solidus
\\ \hline
LK02 & K & capital K
& SP13 & : & colon
\\ \hline
LL01 & l & small l
& SP14 & ; & semicolon
\\ \hline
LL02 & L & capital L
& SP15 & ? & question mark
\\ \hline
LM01 & m & small m
& SA01 & + & plus sign
\\ \hline
LM02 & M & capital M
& SA03 & $<$ & less-than sign
\\ \hline
LN01 & n & small n
& SA04 & = & equals sign
\\ \hline
LN02 & N & capital N
& SA05 & $>$ & greater-than sign
\\ \hline
LO01 & o & small o
& SM01 & \# & number sign
\\ \hline
LO02 & O & capital O
& SM02 & \% & percent sign
\\ \hline
LP01 & p & small p
& SM03 & \& & ampersand
\\ \hline
LP02 & P & capital P
& SM04 & * & asterisk
\\ \hline
LQ01 & q & small q
& SM05 & @ & commercial at
\\ \hline
LQ02 & Q & capital Q
& SM06 & [ & left square bracket
\\ \hline
LR01 & r & small r
& SM07 & $\backslash$ & reverse solidus
\\ \hline
LR02 & R & capital R
& SM08 & ] & right square bracket
\\ \hline
LS01 & s & small s
& SM11 & \{ & left curly bracket
\\ \hline
LS02 & S & capital S
& SM13 & $|$ & vertical bar
\\ \hline
LT01 & t & small t
& SM14 & \} & right curly bracket
\\ \hline
LT02 & T & capital T
& SD13 & \bq & grave accent
\\ \hline
LU01 & u & small u
& SD15 & $\hat{ }$ & circumflex accent
\\ \hline
LU02 & U & capital U
& SD19 & $\tilde{ }$ & tilde
\\ \hline
LV01 & v & small v
& & &
\\ \hline
LV02 & V & capital V
& & &
\\ \hline
LW01 & w & small w
& & &
\\ \hline
LW02 & W & capital W
& & &
\\ \hline
LX01 & x & small x
& & &
\\ \hline
LX02 & X & capital X
& & &
\\ \hline
LY01 & y & small y
& & &
\\ \hline
LY02 & Y & capital Y
& & &
\\ \hline
LZ01 & z & small z
& & &
\\ \hline
LZ02 & Z & capital Z
& & &
\\
\hline
\end{tabular} }
\\
\edithead {\csdag 3 (p21)}
\editstart
\\ \bf delete &
\cltxt
@ A B C...
\editend
\\
\edithead {\csdag 4 (p21)}
\editstart
\\ \bf delete &
\cltxt
\bq a b c...
\editend
\\
\edithead {\csdag 5 (p21)}
\editstart
\\ \bf delete &
\cltxt
The Common LISP Standard character set is apparently ...
\editend
\\
\edithead {\csdag 6 (p21)}
\editstart
\\ \bf replace &
\cltxt
Of the ninety-four non-blank printing characters
\\ \bf with &
\cltxt
Of the ninety-five graphic characters
\editend
\\
\edithead {\csdag 9 (p21)}
\editstart
\\ \bf delete &
\cltxt
The following characters are called ...
\editend
\\
\edithead {\csdag 10 (p21)}
\editstart
\\ \bf delete &
\cltxt
{\clkwd \#$\backslash$Backspace \#$\backslash$Tab } ...
\editend
\\
\edithead {\csdag 11 (p21)}
\editstart
\\ \bf delete &
\cltxt
Not all implementations of Common ...
\editend
\subsubsection{Line Divisions} % 2.2.2.
\edithead {\csdag 6 (p22)}
\editstart
\\ \bf replace &
\cltxt
a two-character sequence, such as
{\clkwd \#$\backslash$Return } and then
{\clkwd \#$\backslash$Newline },
is not acceptable,
\\ \bf with &
\cltxt
a two-character sequence is not acceptable,
\editend
\\
\edithead {\csdag 8 (p22)}
\editstart
\\ \bf delete &
\cltxt
Implementation note: If an implementation uses ...
\editend
\subsubsection{Non-standard Characters} % 2.2.3.
\edithead {\csdag delete entire section (p23)}
\editstart
\editend
\subsubsection{Character Attributes} % 2.2.4.
\edithead {\csdag 0 section heading (p23)}
\editstart
\\ \bf replace &
\cltxt
Character Attributes
\\ \bf with &
\cltxt
Character Identity
\editend
\\
\edithead {\csdag 1 through 8 (p23)}
\editstart
\\ \bf delete all paragraphs&
\cltxt
Every object of type {\clkwd character} ...
\editend
\\
\edithead {\csdag 1 (p23)}
\editstart
\\ \bf new &
\cltxt
Characters are uniquely distinguished by their codes,
which are drawn from the set of
non-negative integers. That is, within Common LISP
a unique numerical code
is assigned to each semantically different character.
\\ &
Common LISP
characters are partitioned into a unique collection of
repertoires called {\em
character registries}. That is, each character is included
in one and only one character registry.
\\ &
Character codes are composed from a character registry and a
character label. The convention by which a character registry and
character label compose a character code is implementation
dependent.
\editend
\subsubsection{String Characters} % 2.2.5.
\edithead {\csdag delete entire section (p23)}
\editstart
\editend
\setcounter{subsection}{4}
\subsubsection{Character Registries} % 2.2.5.
\edithead {\csdag new section (p23)}
\editstart
\\ \bf new &
\cltxt
An implementation must document the registries it supports.
Registries must be uniquely
named using only {\clkwd standard-p} characters.
For each registry supported,
an implementation must define the individual characters supported
including at least the following:
\begin{itemize}
\item Character Labels,
Glyphs, and Descriptions.
\item Reader Canonicalization.
\item Effect of character predicates.
\begin{itemize}
\item {\clkwd alpha-char-p}
\item {\clkwd lower-case-p}
\item {\clkwd upper-case-p}
\item {\clkwd both-case-p}
\item {\clkwd graphic-char-p}
\item {\clkwd alphanumericp}
\end{itemize}
\item Interaction with File I/O. In particular, the
coded character set standards
\footnote{For example, ISO8859/1-1987.} and
external encoding schemes
which are supported must be specified.
\end{itemize}
\editend
\subsection{Symbols} % 2.3.
\edithead {\csdag 12 (p25)}
\editstart
\\ \bf replace &
\cltxt
A symbol may have uppercase letters, lowercase letters, or both
in its print name.
\\ \bf with &
\cltxt
A symbol may have characters from any supported character registry
in its print name.
It may have uppercase letters, lowercase letters, or both.
\editend
\setcounter{subsection}{4}
\subsection{Arrays}
\subsubsection{Vectors}
\edithead {\csdag 6 (p29)}
\editstart
\\ \bf replace &
\cltxt
All implementations provide specialized arrays for the cases when
the components are characters (or rather, a special subset of the
characters);
\\ \bf with &
\cltxt
All implementations provide specialized arrays for the cases when
the components are characters (or optionally, special subsets of
the characters);
\editend
\subsubsection{Strings}
\edithead {\csdag 1 (p30)}
\editstart
\\ \bf replace &
\cltxt
A string is simply a vector of characters. More precisely, a string
is a specialized vector whose elements are of type
{\clkwd string-char}.
\\ \bf with &
\cltxt
A string is simply a vector of characters. More precisely, a string
is a specialized vector whose elements are of type
{\clkwd character} or a subtype
of character.
\editend
\setcounter{subsection}{14}
\subsection{Overlap, Inclusion, and Disjointness of Types} % 2.15.
\edithead {\csdag 14 (p34)}
\editstart
\\ \bf replace &
\cltxt
The type {\clkwd standard-char} is a subtype of {\clkwd string-char};
{\clkwd string-char} is a subtype of {\clkwd character}.
\\ \bf with &
\cltxt
The type {\clkwd base-character} is a subtype of
{\clkwd character}.
The type {\clkwd string-char} is implementation defined as either
{\clkwd base-character} or {\clkwd character}.
\editend
\\
\edithead {\csdag 15 (p34)}
\editstart
\\ \bf replace &
\cltxt
The type {\clkwd string} is a subtype of {\clkwd vector},
for {\clkwd string} means {\clkwd (vector string-char)}.
\\ \bf with &
\cltxt
The type {\clkwd string} is a subtype of {\clkwd vector},
{\clkwd string} consists of vectors specialized by subtypes of
{\clkwd character}.
\editend
\\
\edithead {\csdag 15 after (p34)}
\editstart
\\ \bf insert &
\cltxt
The type {\clkwd base-string} means
{\clkwd (vector base-character)}.
\editend
\\
\edithead {\csdag 15 after (p34)}
\editstart
\\ \bf insert &
\cltxt
The type {\clkwd general-string} means
{\clkwd (vector character)} and is a subtype of {\clkwd string}.
\editend
\\
\edithead {\csdag 20 (p34)}
\editstart
\\ \bf replace &
\cltxt
{\clkwd (simple-array string-char (*))};
\\ \bf with &
\cltxt
{\clkwd (and string simple-array)};
\editend
\\
\edithead {\csdag 20 after (p34)}
\editstart
\\ \bf insert &
\cltxt
The type {\clkwd simple-base-string} means
{\clkwd (simple-array base-character (*))} and
is the most efficient string which can hold
the standard characters. {\clkwd simple-base-string}
is a subtype of {\clkwd base-string}.
\editend
\\
\edithead {\csdag 20 after (p34)}
\editstart
\\ \bf insert &
\cltxt
The type {\clkwd simple-general-string} means
{\clkwd (simple-array character (*))}.
{\clkwd simple-general-string}
is a subtype of {\clkwd general-string}.
\editend
\\
\edithead {\csdag 22 after (p34)}
\editstart
\\ \bf replace &
\cltxt
The type {\clkwd simple-string} is a subtype of
{\clkwd string}. (Note that although
{\clkwd string}
is a subtype of {\clkwd vector, simple-string} is not
a subtype of {\clkwd simple-vector}.
\\ \bf with &
\cltxt
The type {\clkwd simple-string} is a subtype of
{\clkwd string}, {\clkwd simple-string} consists of
simple vectors specialized by subtypes of
{\clkwd character}. (Note that although
{\clkwd string}
is a subtype of {\clkwd vector, simple-string} is not
a subtype of {\clkwd simple-vector}.
\editend
%----------------------------------------------------------------------
\setcounter{section}{3}
\section{Type Specifiers} % 4
%----------------------------------------------------------------------
\setcounter{subsection}{1}
\subsection{Type Specifier Lists} % 4.2.
\edithead {\csdag 8 Table 4-1 (alphabetic list) (p43)}
\editstart
\\ \bf remove &
\\ &
\cltxt
{\clkwd standard-char}
\\ &
{\clkwd string-char}
\editend
\\
\edithead {\csdag 8 Table 4-1 (alphabetic list) (p43)}
\editstart
\\ \bf insert &
\\ &
\cltxt
{\clkwd base-character}
\\ &
{\clkwd base-string}
\\ &
{\clkwd general-string}
\\ &
{\clkwd simple-base-string}
\\ &
{\clkwd simple-general-string}
\editend
\setcounter{subsection}{2}
\subsection{Predicating Type Specifiers} % 4.3.
\edithead {\csdag 2 (p43)}
\editstart
\\ \bf delete &
\cltxt
As an example, the entire ...
\editend
\\
\edithead {\csdag 3 delete example (p43)}
\editstart
\\ \bf delete &
\cltxt
{\clkwd (deftype string-char () } ...
\editend
\setcounter{subsection}{4}
\subsection{Type Specifiers That Specialize} % 4.5.
\edithead {\csdag 5 after (p46)}
\editstart
\\ \bf insert &
\cltxt
{\clkwd (character {\em repertoire})}
\\ &
This denotes a character type specialized to members
of the specified repertoire. {\em Repertoire} may be
{\clkwd :base} or {\clkwd :standard} or any supported
character registry name or a list of names.
\editend
\setcounter{subsection}{5}
\subsection{Type Specifiers That Abbreviate} % 4.6.
\edithead {\csdag 20 (p49)}
\editstart
\\ \bf replace &
\cltxt
Means the same as {\clkwd (array string-char ({\em size}))}: the set of
strings of
the indicated size.
\\ \bf with &
\cltxt
Means the union of the vector types specialized by subtypes of
character
and the indicated size.
For the purpose of object creation, it is equivalent to
{\clkwd (general-string ({\em size}))}.
\editend
\\
\edithead {\csdag 23 (p49)}
\editstart
\\ \bf replace &
\cltxt
Means the same as {\clkwd (simple-array string-char ({\em size}))}: the
set of simple strings of the indicated size.
\\ \bf with &
\cltxt
Means the union of the simple vector types specialized by subtypes of
character and the indicated size.
For the purpose of object creation, it is equivalent to
{\clkwd (simple-general-string ({\em size}))}.
\editend
\\
\edithead {\csdag 23 after (p49)}
\editstart
\\ \bf insert &
\cltxt
{\clkwd (base-string {\em size})}
\\ &
Means the same as {\clkwd (array base-character ({\em size}))}: the
set of base strings of the indicated size.
\\ &
{\clkwd (simple-base-string {\em size})}
\\ &
Means the same as {\clkwd (simple-array base-character ({\em size}))}:
the set of simple base strings of the indicated size.
\editend
\\
\edithead {\csdag 23 after (p49)}
\editstart
\\ \bf insert &
\cltxt
{\clkwd (general-string {\em size})}
\\ &
Means the same as {\clkwd (array character ({\em size}))}: the
set of base strings of the indicated size.
\\ &
{\clkwd (simple-general-string {\em size})}
\\ &
Means the same as
{\clkwd (simple-array general-character ({\em size}))}:
the set of simple general strings of the indicated size.
\editend
\setcounter{subsection}{7}
\subsection{Type Conversion Function} % 4.8.
\edithead {\csdag 6 (p51)}
\editstart
\\ \bf replace &
\cltxt
Some strings, symbols, and integers may be converted to
characters. If {\em object} is a string of length 1,
then the sole element of the print name is returned.
If {\em object} is a symbol whose print name is of length
1, then the sole element of the print name is returned.
If {\em object} is an integer {\em n}, then {\clkwd (int-char }
{\em n}{\clkwd )} is returned. See {\clkwd character}.
\\ \bf with &
\cltxt
Some strings amd symbols may be converted to
characters. If {\em object} is a string of length 1,
then the sole element of the print name is returned.
If {\em object} is a symbol whose print name is of length
1, then the sole element of the print name is returned.
See {\clkwd character}.
\editend
\\
\edithead {\csdag 6 after (p52)}
\editstart
\\ \bf insert &
\begin{itemize}
\cltxt
\item Any string subtype may be converted to any other string
subtype, provided the new string can contain all actual
elements of the old string. It is an error if it cannot.
\end{itemize}
\editend
%----------------------------------------------------------------------
\setcounter{section}{5}
\section{Predicates} % 6
%----------------------------------------------------------------------
\edithead {\csdag 2 (p71)}
\editstart
\\ \bf replace &
\cltxt
but {\clkwd standard-char} begets {\clkwd standard-char-p}
\\ \bf with &
\cltxt
but {\clkwd bit-vector} begets {\clkwd bit-vector-p}
\editend
\setcounter{subsection}{1}
\subsection{Data Type Predicates} % 6.2.
\setcounter{subsubsection}{1}
\subsubsection{Specific Data Type Predicates} % 6.2.2.
\edithead {\csdag 36 (p75)}
\editstart
\\ \bf replace &
\cltxt
{\clkwd characterp} {\em object}
\\ \bf with &
\cltxt
{\clkwd characterp} {\em object} \&{\clkwd optional}
{\em repertoire}
\editend
\\
\edithead {\csdag 37 (p75)}
\editstart
\\ \bf replace &
\cltxt
{\clkwd characterp} is true if its argument is a character,
and otherwise is false.
\\ \bf with &
\cltxt
If {\em repertoire} is omitted, {\clkwd characterp}
is true if its argument is a character object,
and otherwise is false.
If a {\em repertoire} argument is specified,
{\clkwd characterp} is true if its argument
is a character object and a member of the specified repertoire,
and
otherwise is false.
For example, {\clkwd (characterp \#$\backslash$A}
{\clkwd :Latin)}
is true since \#$\backslash$A is a member of the
Latin character registry. {\em repertoire} may be any supported
character registry name or the names
{\clkwd :base} or {\clkwd :standard}. {\clkwd (characterp x :base)} is
true if its argument is a member of the base character
repertoire and false
otherwise.
{\clkwd (characterp x :standard)} is
true if its argument is a member of the standard character
subrepertoire and false
otherwise.
\editend
\\
\edithead {\csdag 38 (p75)}
\editstart
\\ \bf replace &
\cltxt
{\clkwd (characterp x) $\equiv$ (typep x \apostrophe character)}
\\ \bf with &
\cltxt
{\clkwd (characterp x :standard) $\equiv$ (typep x \apostrophe
(character :standard)}
\editend
\\
\edithead {\csdag 72 (p76)}
\editstart
\\ \bf replace &
\cltxt
See also {\clkwd standard-char-p, string-char-p, streamp,}
\\ \bf with &
\cltxt
See also {\clkwd standard-char-p, streamp,}
\editend
\setcounter{subsubsection}{2}
\subsubsection{Equality Predicates} % 6.2.3.
\edithead {\csdag 75 (p81)}
\editstart
\\ \bf replace &
\cltxt
which ignores alphabetic case and certain other attributes
of characters;
\\ \bf with &
\cltxt
which ignores alphabetic case
of characters;
\editend
%----------------------------------------------------------------------
\setcounter{section}{6}
\section{Control Structure} % 7
%----------------------------------------------------------------------
\setcounter{subsection}{1}
\subsection{Generalized Variables} % 7.2.
\edithead {\csdag 19 modify table (p95)}
\editstart
\\ \bf replace &
\cltxt
char string-char
\\ &
schar string-char
\\ \bf with &
\cltxt
char character
\\ &
schar character
\editend
\\
\edithead {\csdag 22 table entry (p96)}
\editstart
\\ \bf delete &
\cltxt
char-bit first set-char-bit
\editend
%----------------------------------------------------------------------
\setcounter{section}{9}
\section{Symbols} % 10
%----------------------------------------------------------------------
\edithead {\csdag 3 (p163)}
\editstart
\\ \bf replace &
\cltxt
It is ordinarily not permitted to alter a symbol's print name.
\\ \bf with &
\cltxt
It is an error to alter a symbol's print name.
\editend
\setcounter{subsection}{1}
\subsection{The Print Name} % 10.2.
\edithead {\csdag 5 (p168)}
\editstart
\\ \bf replace &
\cltxt
It is an extremely bad idea
\\ \bf with &
\cltxt
It is an error and an extremely bad idea
\editend
%----------------------------------------------------------------------
\setcounter{section}{10}
\section{Packages} % 11
%----------------------------------------------------------------------
\setcounter{subsection}{6}
\subsection{Package System Functions and Variables} % 11.7.
\edithead {\csdag 31 (p184,intern)}
\editstart
\\ \bf append &
\cltxt
All strings, base and extended, are acceptable {\em string}
arguments.
\editend
∂22-Feb-89 1339 X3J13-mailer cs proposal part 3 of 3
Received: from IBM.COM by SAIL.Stanford.EDU with TCP; 22 Feb 89 13:38:49 PST
Date: Wed, 22 Feb 89 10:08:51 PST
From: Thom Linden <baggins@IBM.com>
To: Common Lisp mailing <x3j13@sail.stanford.edu>
Message-ID: <890222.100851.baggins@almvma>
Subject: cs proposal part 3 of 3
%----------------------------------------------------------------------
\setcounter{section}{12}
\section{Characters} % 13
%----------------------------------------------------------------------
\edithead {\csdag 6 after (p233)}
\editstart
\\ \bf insert &
\cltxt
{\clkwd char-code-limit} [{\clkwd Constant}]
\\ &
The value of {\clkwd char-code-limit} is a non-negative integer
that is the upper exclusive bound on values produced by the
function {\clkwd char-code}, which returns the {\em code}
of a given character; that is, the values returned by
{\clkwd char-code} are non-negative and strictly less than
the value of {\clkwd char-code-limit}.
There may be unassigned codes between 0 and
{\clkwd char-code-limit} which
are not legal arguments to {\clkwd code-char}.
\\ &
\cltxt
{\clkwd *all-character-registry-names*} [{\clkwd Variable}]
\\ &
The value of {\clkwd *all-character-registry-names*} is a list of
all character registry names supported by the implementation.
\editend
\setcounter{subsection}{0}
\subsection{Character Attributes} % 13.1.
\edithead {\csdag replace entire section (p233)}
\editstart
\\ \bf with &
\cltxt
Earlier versions of Common LISP incorporated {\em font} and
{\em bits} as attributes of character objects. These are
considered implementation-defined attributes and
if supported by an implementation
effect the action of selected functions. In particular,
the following effects are noted:
\\ &
\begin{itemize}
\item Attributes, such as those
dealing with how the character is displayed or its typography,
are not part of the character code.
For example, bold-face, color
or size are not considered part of the character code.
\item If two characters differ in any attributes,
then they are not {\clkwd char=}.
\item If two characters have identical
attributes, then their ordering by
{\clkwd char}$<$ is consistent with the numerical ordering by the
predicate $<$ on
their code attributes. (Similarly for {\clkwd char}$>$,
{\clkwd char}$>=$ and {\clkwd char}$<=$.)
\item The effect, if any, on {\clkwd char-equal} of each
attribute has to be specified as part of
the definition of that attribute.
\item The effect of {\clkwd char-upcase} and {\clkwd char-downcase}
is to preserve attributes.
\item The function {\clkwd char-int} is equivalent to {\clkwd char-code}
if no attributes are associated with
the character object.
\item The function {\clkwd int-char} is equivalent to {\clkwd code-char}
if no attributes are associated with
the character object.
\item It is implementation dependent whether characters within
double quotes have attributes removed.
\item It is implementation dependent whether
attributes are removed from symbol names by {\clkwd read}.
\end{itemize}
\editend
\setcounter{subsection}{1}
\subsection{Predicates on Characters} % 13.2.
\edithead {\csdag 3 (p234)}
\editstart
\\ \bf replace &
\cltxt
argument is a "standard character" that is, an object of type
{\clkwd standard-char}.
Note that any character with a non-zero {\em bits} or {\em font}
attribute
is non-standard.
\\ \bf with &
\cltxt
argument is one of the Common LISP standard character subrepertoire.
\editend
\\
\edithead {\csdag 4 (p234)}
\editstart
\\ \bf delete &
\cltxt
Note that any character with non-zero ...
\editend
\\
\edithead {\csdag 6 (p235)}
\editstart
\\ \bf replace &
\cltxt
Of the standard characters all but \#$\backslash${\clkwd Newline}
are graphic.
The semi-standard characters \#$\backslash${\clkwd Backspace},
\#$\backslash${\clkwd Tab},
\#$\backslash${\clkwd Rubout},
\#$\backslash${\clkwd Linefeed},
\#$\backslash${\clkwd Return},
and \#$\backslash${\clkwd Page} are not graphic.
\\ \bf with &
\cltxt
Of the standard characters all but \#$\backslash${\clkwd Newline}
are graphic.
\editend
\\
\edithead {\csdag 7 (p235)}
\editstart
\\ \bf delete &
\cltxt
Programs may assume that graphic ...
\editend
\\
\edithead {\csdag 8 (p235)}
\editstart
\\ \bf delete &
\cltxt
Any character with a non-zero bits...
\editend
\\
\edithead {\csdag 9 (p235)}
\editstart
\\ \bf delete &
\cltxt
{\clkwd string-char-p} ...
\editend
\\
\edithead {\csdag 10 (p235)}
\editstart
\\ \bf delete &
\cltxt
The argument {\em char} must be ...
\editend
\\
\edithead {\csdag 13 (p235)}
\editstart
\\ \bf replace &
\cltxt
If a character is alphabetic, then it is perforce graphic. Therefore
any character
with a non-zero bits attribute cannot be alphabetic. Whether a
character is
alphabetic is may depend on its font number.
\\ \bf with &
\cltxt
If a character is alphabetic, then it is perforce graphic.
\editend
\\
\edithead {\csdag 22 (p236)}
\editstart
\\ \bf replace &
\cltxt
If a character is either uppercase or lowercase, it is necessarily
alphabetic (and
therefore is graphic, and therefore has a zero bits attribute).
However, it is permissible in theory for an alphabetic character
to be neither
uppercase nor lowercase (in a non-Roman font, for example).
\\ \bf with &
\cltxt
If a character is either uppercase or lowercase, it is necessarily
alphabetic (and
therefore is graphic).
\editend
\\
\edithead {\csdag 25 (p236)}
\editstart
\\ \bf replace &
\cltxt
The argument {\em char} must be a character object, and {\em radix}
must be a non-negative
integer. If {\em char} is not a digit of the radix specified
\\ \bf with &
\cltxt
The argument {\em char} must be in the standard character
subrepertoire and
{\em radix} must be a non-negative integer.
If {\em char} is not a standard character or is not a digit of the
radix specified
\editend
\\
\edithead {\csdag 51 (p237)}
\editstart
\\ \bf delete &
\cltxt
If two characters have the same bits ...
\editend
\\
\edithead {\csdag 52 (p237)}
\editstart
\\ \bf replace &
\cltxt
If two characters differ in any attribute (code, bits, or font), then
they are different.
\\ \bf with &
\cltxt
If the codes of two characters differ, then
they are different.
\editend
\\
\edithead {\csdag 94 (p239)}
\editstart
\\ \bf replace &
\cltxt
The predicate {\clkwd char-equal} is like {\clkwd char=}, and
similarly for the others, except
according to a different ordering such that differences of bits
attributes and case are ignored, and font information is taken into
account in an implementation dependent manner.
\\ \bf with &
\cltxt
The predicate {\clkwd char-equal} is like {\clkwd char=}, and
similarly for the others, except
according to a different ordering such that differences of case
are ignored.
\editend
\\
\edithead {\csdag 97 example (p239)}
\editstart
\\ \bf delete &
\cltxt
{\clkwd (char-equal \#$\backslash$A \#$\backslash$Control-A) is true}
\editend
\\
\edithead {\csdag 98 (p239)}
\editstart
\\ \bf delete &
\cltxt
The ordering may depend on the font ...
\editend
\setcounter{subsection}{2}
\subsection{Character Construction and Selection} % 13.3.
\edithead {\csdag 3 (p239)}
\editstart
\\ \bf replace &
\cltxt
The argument {\em char} must be a character object.
{\clkwd char-code} returns the {\em code} attribute of the
character object;
this will be a non-negative integer less than the (normal) value
\\ \bf with &
\cltxt
The argument {\em char} must be a character object.
{\clkwd char-code} returns the {\em code} of the
character object;
this will be a non-negative integer less than the value
\editend
\\
\edithead {\csdag 4 (p240)}
\editstart
\\ \bf delete &
\cltxt
{\clkwd char-bits } ...
\editend
\\
\edithead {\csdag 5 (p240)}
\editstart
\\ \bf delete &
\cltxt
The argument {\em char} must be ...
\editend
\\
\edithead {\csdag 6 (p240)}
\editstart
\\ \bf delete &
\cltxt
{\clkwd char-font } ...
\editend
\\
\edithead {\csdag 7 (p240)}
\editstart
\\ \bf delete &
\cltxt
The argument {\em char} must be ...
\editend
\\
\edithead {\csdag 8 (p240)}
\editstart
\\ \bf replace &
\cltxt
{\clkwd code-char {\em code} \&optional {\em (bits 0) (font 0)}
[{\em Function}]}
\\ \bf with &
\cltxt
{\clkwd code-char {\em code}
[{\em Function}]}
\editend
\\
\edithead {\csdag 9 (p240)}
\editstart
\\ \bf replace &
\cltxt
All three arguments must be non-negative integers. If it is possible
in the
implementation to construct a character object whose code attribute
is {\em code},
whose
bits attribute is {\em bits}, and whose font attribute is {\em font},
then such an object
is returned;
\\ \bf with &
\cltxt
The argument must be a non-negative integer. If it is possible
in the
implementation to construct a character object identified by
{\em code},
then such an object is returned;
\editend
\\
\edithead {\csdag 10 (p240)}
\editstart
\\ \bf replace &
\cltxt
For any integers, {\em c, b,} and {\em f}, if {\clkwd (code-char
{\em c b f})} is
\\ \bf with &
\cltxt
For any integer, {\em c}, if {\clkwd (code-char
{\em c})} is
\editend
\\
\edithead {\csdag 12 (p240)}
\editstart
\\ \bf delete &
\cltxt
{\clkwd (char-bits (code-char } ...
\editend
\\
\edithead {\csdag 13 (p240)}
\editstart
\\ \bf delete &
\cltxt
{\clkwd (char-font (code-char } ...
\editend
\\
\edithead {\csdag 14 (p240)}
\editstart
\\ \bf delete &
\cltxt
If the font and bits attributes ...
\editend
\\
\edithead {\csdag 15 (p240)}
\editstart
\\ \bf delete &
\cltxt
{\clkwd (char= (code-char (char-code ...}
\editend
\\
\edithead {\csdag 16 (p240)}
\editstart
\\ \bf delete &
\cltxt
is true.
\editend
\\
\edithead {\csdag 17 (p240)}
\editstart
\\ \bf delete &
\cltxt
{\clkwd make-char} ...
\editend
\\
\edithead {\csdag 18 (p240)}
\editstart
\\ \bf delete &
\cltxt
The argument {\em char} must be ...
\editend
\\
\edithead {\csdag 19 (p240)}
\editstart
\\ \bf delete &
\cltxt
If {\em bits} or {\em font} are zero ...
\editend
\\
\edithead {\csdag 19 (p240)}
\editstart
\\ \bf append &
\cltxt
{\clkwd find-char} {\em label registry} [{\em Function}]
\\ &
{\clkwd find-char} returns a character object.
The arguments {\em label} and {\em registry} are names
(objects coerceable to strings as if by the function {\clkwd string})
of character registries and labels.
{\em label}
uniquely identifies a character within the character
registry named {\em registry}.
If the implementation does not support the specified
character, {\clkwd nil} is returned.
\editend
\setcounter{subsection}{3}
\subsection{Character Conversions} % 13.4.
\edithead {\csdag 8 (p241)}
\editstart
\\ \bf replace &
\cltxt
{\clkwd char-upcase} returns a character object with the same
font and bits attributes as {\em char}, but with possibly a
different code attribute.
\\ \bf with &
\cltxt
{\clkwd char-upcase} returns a character object with possibly
a different code.
\editend
\\
\edithead {\csdag 10 (p241)}
\editstart
\\ \bf replace &
\cltxt
Similarly, {\clkwd char-downcase} returns a character object with the
same font and bits attributes as {\em char}, but with possibly a
different code attribute.
\\ \bf with &
\cltxt
Similarly, {\clkwd char-downcase} returns a character object with
possibly a different code.
\editend
\\
\edithead {\csdag 12 (p241)}
\editstart
\\ \bf delete &
\cltxt
Note that the action of ...
\editend
\\
\edithead {\csdag 13 (p241)}
\editstart
\\ \bf replace &
\cltxt
{\clkwd digit-char {\em weight} \&optional ({\em radix} 10)
({\em font} 0) [{\em Function}]}
\\ \bf with &
\cltxt
{\clkwd digit-char {\em weight} \&optional ({\em radix} 10)
[{\em Function}]}
\editend
\\
\edithead {\csdag 14 (p241)}
\editstart
\\ \bf replace &
\cltxt
All arguments must be integers. {\clkwd digit-char} determines
whether or not it is
possible
to construct a character object whose font attribute is {\em font},
and whose {\em code}
\\ \bf with &
\cltxt
All arguments must be integers. {\clkwd digit-char} determines
whether or not it is
possible to construct a character object whose {\em code}
\editend
\\
\edithead {\csdag 15 (p242)}
\editstart
\\ \bf replace &
\cltxt
{\clkwd digit-char} cannot return {\clkwd nil} if {\em font}
is zero, {\em radix}
\\ \bf with &
\cltxt
{\clkwd digit-char} cannot return {\clkwd nil}.
{\em radix}
\editend
\\
\edithead {\csdag 22 (p242)}
\editstart
\\ \bf delete &
\cltxt
Note that no argument is provided for ...
\editend
\\
\edithead {\csdag 23 through 30 (p242, char-int, int-char)}
\editstart
\\ \bf delete &
\cltxt
{\clkwd char-int} {\em char}
\editend
\\
\edithead {\csdag 32 (p242)}
\editstart
\\ \bf replace &
\cltxt
All characters that have zero font and bits attributes and that are
non-graphic
\\ \bf with &
\cltxt
All characters that are
non-graphic
\editend
\\
\edithead {\csdag 33 (p243)}
\editstart
\\ \bf replace &
\cltxt
The standard newline and space characters have the respective
names {\clkwd Newline} and {\clkwd Space}. The semi-standard
characters have the names {\clkwd Tab, Page, Rubout, Linefeed,
Return,} and {\clkwd Backspace}.
\\ \bf with &
\cltxt
The standard newline and space characters have the respective
names {\clkwd Newline} and {\clkwd Space}.
\editend
\\
\edithead {\csdag 35 (p243)}
\editstart
\\ \bf delete &
\cltxt
{\clkwd char-name} will only locate "simple" ...
\editend
\\
\edithead {\csdag 36 (p243)}
\editstart
\\ \bf append &
\cltxt
{\clkwd name-char} may accept other names for characters
in addition to those returned by {\clkwd char-name}.
\editend
\\
\edithead {\csdag 36 (p243)}
\editstart
\\ \bf append &
\cltxt
{\clkwd char-registry-name} {\em char} [{\em Function}]
\\ &
{\clkwd char-registry-name} returns a string representing
the character registry to which {\em char} belongs.
\editend
\\
\edithead {\csdag 36 (p243)}
\editstart
\\ \bf append &
\cltxt
{\clkwd char-label} {\em char} [{\em Function}]
\\ &
{\clkwd char-label} returns a string representing
the character label of {\em char}.
\editend
\\
\edithead {\csdag 36 (p243)}
\editstart
\\ \bf append &
\cltxt
{\clkwd char-ccs-value} {\em char name} [{\em Function}]
\\ &
{\clkwd char-ccs-value} returns the non-negative integer
representing the encoding of the character {\em char} in
The coded character set named by {\em name}.
If the implementation does not support the specified
coded character set, {\clkwd nil} is returned. If the
named coded character set does not contain the character,
{\clkwd nil} is returned.
\editend
\setcounter{subsection}{4}
\subsection{Character Control-Bit Functions} % 13.5.
\edithead {\csdag delete entire section (p243)}
\editstart
\editend
%----------------------------------------------------------------------
\setcounter{section}{13}
\section{Sequences} % 14
%----------------------------------------------------------------------
\setcounter{subsection}{0}
\subsection{Simple Sequence Functions} % 14.1
\edithead {\csdag 21 (p249,make-sequence)}
\editstart
\\ \bf append &
\cltxt
If type {\clkwd string} is specified, the result is
equivalent to {\clkwd make-string}.
\editend
%----------------------------------------------------------------------
\setcounter{section}{17}
\section{Strings} % 18
%----------------------------------------------------------------------
\edithead {\csdag 1 (p299)}
\editstart
\\ \bf replace &
\cltxt
Specifically, the type {\clkwd string} is identical to the type
{\clkwd (vector string-char),}
which in turn is the same as {\clkwd (array string-char (*))}.
\\ \bf with &
\cltxt
Specifically, the type {\clkwd string} is a subtype of
{\clkwd vector}
and consists of vectors specialized by subtypes of {\clkwd character}.
\editend
\setcounter{subsection}{0}
\subsection{String Access} % 18.1.
\edithead {\csdag 4 (p300)}
\editstart
\\ \bf replace &
\cltxt
character object. (This character will necessarily satisfy the
predicate
{\clkwd string-char-p}).
\\ \bf with &
\cltxt
character object.
\editend
\\
\edithead {\csdag 9 (p300)}
\editstart
\\ \bf replace &
\cltxt
{\clkwd setf} may be used with {\clkwd char} to destructively
replace a character within a string.
\\ \bf with &
\cltxt
{\clkwd setf} may be used with {\clkwd char} to destructively
replace a character within a string.
The new character must be of a type which can be stored in the
string; it is an error otherwise.
\editend
\setcounter{subsection}{2}
\subsection{String Construction and Manipulation} % 18.3.
\edithead {\csdag 2 (p302)}
\editstart
\\ \bf replace &
\cltxt
{\clkwd make-string {\em size} \&key :initial-element [{\em Function}]}
\\ \bf with &
\cltxt
{\clkwd make-string {\em size} \&key :initial-element :element-type
[{\em Function}]}
\editend
\\
\edithead {\csdag 3 (p302,make-string)}
\editstart
\\ \bf replace &
\cltxt
This returns a string (in fact a simple string) of length {\em size},
each of whose characters has been initialized to the
{\clkwd :initial-element} argument. If an {\clkwd :initial-element}
argument is not specified, then the string will be initialized
in an implementation-dependent way.
\\ \bf with &
\cltxt
This returns a string of length {\em size},
each of whose characters has been initialized to the
{\clkwd :initial-element} argument. If an {\clkwd :initial-element}
argument is not specified, then the string will be initialized
in an implementation-dependent way.
The {\clkwd :element-type} argument names the type of the elements
of the string; a string is constructed of the most specialized
type that can accommodate elements of the given type.
If {\clkwd :element-type} is omitted, the type
{\clkwd character} is the default.
\editend
\\
\edithead {\csdag 5 (p302,make-string)}
\editstart
\\ \bf replace &
\cltxt
A string is really just a one-dimensional array of "string
characters" (that is,
those characters that are members of type {\clkwd string-char}).
More complex character arrays may be constructed using the function
{\clkwd make-array}.
\\ \bf with &
\cltxt
More complex character arrays may be constructed using the function
{\clkwd make-array}.
\editend
\\
\edithead {\csdag 29 (p304,make-string)}
\editstart
\\ \bf replace &
\cltxt
If {\em x} is a string character (a character of type
{\clkwd string-char}), then
\\ \bf with &
\cltxt
If {\em x} is a character, then
\editend
%----------------------------------------------------------------------
\setcounter{section}{21}
\section{Input/Output} % 22
\setcounter{subsection}{0}
\subsection{Printed Representation of LISP Objects} % 22.1.
\setcounter{subsubsection}{0}
\subsubsection{What the Read Function Accepts} % 22.1.1.
\edithead {\csdag Table 22-1: Standard Character Syntax Types (p336)}
\editstart
\\ \bf delete entry &
\cltxt
{\clkwd <tab>} {\em whitespace}
\\ &
{\clkwd <page>} {\em whitespace}
\\ &
{\clkwd <backspace>} {\em constituent}
\\ &
{\clkwd <return>} {\em whitespace}
\\ &
{\clkwd <rubout>} {\em constituent}
\\ &
{\clkwd <linefeed>} {\em whitespace}
\editend
\setcounter{subsubsection}{1}
\subsubsection{Parsing of Numbers and Symbols} % 22.1.2.
\edithead {\csdag Table 22-3: Standard Constituent Character
Attributes (p340)}
\editstart
\\ \bf delete entry &
\cltxt
{\clkwd <backspace>} {\em illegal}
\\ &
{\clkwd <tab>} {\em illegal}
\\ &
{\clkwd <linefeed>} {\em illegal}
\\ &
{\clkwd <page>} {\em illegal}
\\ &
{\clkwd <return>} {\em illegal}
\\ &
{\clkwd <rubout>} {\em illegal}
\editend
\setcounter{subsubsection}{3}
\subsubsection{Standard Dispatching Macro Character Syntax} % 22.1.4.
\edithead {\csdag Table 22-4: Standard \# Macro Character Syntax (p352)}
\editstart
\\ \bf delete entry &
\cltxt
{\clkwd \#<backspace>} {\em signals error}
\\ &
{\clkwd \#<tab>} {\em signals error}
\\ &
{\clkwd \#<linefeed>} {\em signals error}
\\ &
{\clkwd \#<page>} {\em signals error}
\\ &
{\clkwd \#<return>} {\em signals error}
\\ &
{\clkwd \#<rubout>} {\em undefined}
\editend
\\
\edithead {\csdag 8 (p353)}
\editstart
\\ \bf replace &
\cltxt
The following names are standard across all implementations:
\\ \bf with &
\cltxt
All non-graphic
characters, including extended characters, are uniquely
named in an implementation-dependent manner.
In particular, an implementation may support names of the
form {\em label:registry}.
The following names are standard across all implementations:
\editend
\\
\edithead {\csdag 11 through 18 inclusive delete (p353)}
\editstart
\\ \bf delete &
\cltxt
The following names are semi-standard; ...
\editend
\\
\edithead {\csdag 20 through 26 inclusive delete (p354)}
\editstart
\\ \bf delete &
\cltxt
The following convention is used in implementations ...
\editend
\\
\edithead {\csdag 108 (p360)}
\editstart
\\ \bf replace &
\cltxt
{\clkwd \#<space>, \#<tab>, \#<newline>, \#<page>, \#<return>}
\\ \bf with &
\cltxt
{\clkwd \#<space>, \#<newline>}
\editend
\setcounter{subsubsection}{4}
\subsubsection{The Readtable} % 22.1.5.
\edithead {\csdag 3 (p360)}
\editstart
\\ \bf replace &
\cltxt
Even if an implementation supports characters with non-zero
{\em bits} and {\em font}
attributes, it need not (but may) allow for such characters to
have syntax
descriptions
in the readtable. However, every character of type
{\clkwd string-char}
must be represented in the readtable.
\\ \bf with &
\cltxt
All base and extended characters
are representable in the readtable.
\editend
\setcounter{subsubsection}{5}
\subsubsection{What the Print Function Produces} % 22.1.6.
\edithead {\csdag 13 (p366)}
\editstart
\\ \bf replace &
\cltxt
is used. For example, the printed representation of the character
\#$\backslash$A
with control
and meta bits on would be \#$\backslash${\clkwd CONTROL-META-A},
and that of
\#$\backslash$a with control and meta bits on would be
\#$\backslash${\clkwd CONTROL-META-$\backslash$a}.
\\ \bf with &
\cltxt
is used (see 22.1.4).
\editend
\setcounter{subsection}{2}
\subsection{Output Functions} % 22.3.
\setcounter{subsubsection}{0}
\subsubsection{Output to Character Streams} % 22.3.1.
\edithead {\csdag 26 (p384)}
\editstart
\\ \bf replace &
\cltxt
({\em not} the substring delimited by {\clkwd :start} and
{\clkwd :end}).
\\ \bf with &
({\em not} the substring delimited by {\clkwd :start} and
{\clkwd :end}).
Only characters which are members of the coded character set(s)
associated with the output stream or \#$\backslash${\clkwd Newline}
are valid to be written;
it is an error otherwise. All character streams must provide
appropriate line division behavior for
\#$\backslash${\clkwd Newline}.
\editend
\\
\edithead {\csdag 27 after (p384)}
\editstart
\\ \bf insert &
\cltxt
{\clkwd external-coded-string-length} {\em object} \&{\clkwd optional}
{\em output-stream} [{\em Function}]
\\ &
{\clkwd external-coded-string-length}
returns the number of implementation defined
units required for the object on the output-stream. If
not applicable to the output stream, the function
returns {\clkwd nil}.
This number corresponds to the current state of the stream
and may change if there has been intervening output.
If the output stream is not specified {\clkwd *standard-output*}
is the default.
\editend
\setcounter{subsubsection}{2}
\subsubsection{Formatted Output to Character Streams} % 22.3.3.
\edithead {\csdag 23 delete example (p387)}
\editstart
\\ \bf delete &
\cltxt
{\clkwd (format nil "Type} $\tilde{ }$
{\clkwd :C to $\tilde{ }$ :A."} . . .
\editend
\\
\edithead {\csdag 66 (p389)}
\editstart
\\ \bf replace &
\cltxt
$\tilde{ }${\clkwd :C} spells out the names of the control bits and
represents non-printing
characters by their names: {\clkwd Control-Meta-F, Control-Return,
Space}.
This is a "pretty" format for printing characters.
\\ \bf with &
\cltxt
$\tilde{ }${\clkwd :C}
represents non-printing
characters by their names: {\clkwd Newline,
Space}. This is a "pretty" format
for printing characters.
\editend
%----------------------------------------------------------------------
%----------------------------------------------------------------------
\setcounter{section}{22}
\section{File System Interface} % 23
\setcounter{subsection}{1}
\subsection{Opening and Closing Files} % 23.2.
\edithead {\csdag 2 (p418)}
\editstart
\\ \bf replace &
\cltxt
{\clkwd open {\em filename} \&key :direction :element-type}
{\clkwd :if-exists :if-does-not-exist}
[{\em Function}]
\\ \bf with &
\cltxt
{\clkwd open {\em filename} \&key :direction :element-type}
{\clkwd
:external-coded-character-format}
{\clkwd :if-exists :if-does-not-exist}
[{\em Function}]
\editend
\\
\edithead {\csdag 11 (p419)}
\editstart
\\ \bf replace &
\cltxt
{\clkwd string-char}
\\ &
The unit of transaction is a string-character. The functions
{\clkwd read-char}
and/or {\clkwd write-char} may be used on the stream.
\\ \bf with &
\cltxt
The default value of {\clkwd :element-type} is
implementation-defined as character or a subtype of character.
\\ &
{\clkwd base-character}
\\ &
The unit of transaction is a base character. The functions
{\clkwd read-char}
and/or {\clkwd write-char} may be used on the stream.
\editend
\\
\edithead {\csdag 16 (p419)}
\editstart
\\ \bf replace &
\cltxt
{\clkwd character}
\\ &
The unit of transaction is any character, not just a string-character.
The functions {\clkwd read-char} and/or {\clkwd write-char} may
be used on the stream.
\\ \bf with &
\cltxt
{\clkwd character}
\\ &
The unit of transaction is any character.
The functions {\clkwd read-char} and/or {\clkwd write-char} may
be used on the stream.
\editend
\\
\edithead {\csdag 19 after (p420)}
\editstart
\\ \bf insert &
\cltxt
{\clkwd :external-coded-character-format}
\\ &
This argument specifies a name or list of
names(s) indicating an implementation recognized scheme for
representing 1 or more coded character sets with non-homogeneous codes.
\\ &
The default value is {\clkwd :default} and is
implementation defined but must include the
base characters.
\\ &
As many coded character set names must be provided as the
implementation requires for that external coding convention.
\\ &
References to standard ISO coded character set names must
include the full ISO reference number and approval year.
The following are valid ISO reference names:
:ISO8859/1-1987, :ISO6937/2-1983, :ISO646-1983, etc..
All implementation recognized schemes are formed from
{\clkwd standard-p} characters.
\editend
%----------------------------------------------------------------------
%----------------------------------------------------------------------
%----------------------------------------------------------------------
\begin{thebibliography}{wwwwwwww 99}
\bibitem[Ida87]{ida87} M. Ida, et al.,
{\em
JEIDA Common LISP Committee Proposal on Embedding Multi-Byte Characters
},
ANSI X3J13 document 87-022, (1987).
\bibitem[ISO 646]{iso646} ISO,
{\em
Information processing -- ISO 7-bit coded character set
for information interchange
},
ISO (1983).
\bibitem[ISO 4873]{iso4873} ISO,
{\em
Information processing -- ISO 8-bit code for information
interchange -- Structure and rules for implementation
},
ISO (1986).
\bibitem[ISO 6937/1]{iso6937/1} ISO,
{\em
Information processing -- Coded character sets for text
communication -- Part 1: General introduction
},
ISO (1983).
\bibitem[ISO 6937/2]{iso6937/2} ISO,
{\em
Information processing -- Coded character sets for text
communication -- Part 2: Latin alphabetic and non-alphabetic
graphic characters
},
ISO (1983).
\bibitem[ISO 8859/1]{iso8859/1} ISO,
{\em
Information processing -- 8-bit single-byte coded
graphic character sets -- Part 1: Latin alphabet No. 1
},
ISO (1987).
\bibitem[ISO 8859/2]{iso8859/2} ISO,
{\em
Information processing -- 8-bit single-byte coded
graphic character sets -- Part 2: Latin alphabet No. 2
},
ISO (1987).
\bibitem[ISO 8859/6]{iso8859/6} ISO,
{\em
Information processing -- 8-bit single-byte coded
graphic character sets -- Part 6: Latin/Arabic alphabet
},
ISO (1987).
\bibitem[ISO 8859/7]{iso8859/7} ISO,
{\em
Information processing -- 8-bit single-byte coded
graphic character sets -- Part 7: Latin/Greek alphabet
},
ISO (1987).
\bibitem[Kerns87]{kerns87} R. Kerns,
{\em
Extended Characters in Common LISP
},
X3J13 Character Subcommittee document, Symbolics Inc (1987).
\bibitem[Kurokawa88]{kurokawa88} T. Kurokawa, et al.,
{\em
Technical Issues on International Character Set Handling in Lisp
},
ISO/IEC SC22 WG16 document N33, (1988).
\bibitem[Linden87]{linden87} T. Linden,
{\em
Common LISP - Proposed Extensions for International Character Set
Handling
},
Version 01.11.87, IBM Corporation (1987).
\bibitem[Steele84]{steele84} G. Steele Jr.,
{\em
Common LISP: the Language
},
Digital Press (1984).
\bibitem[Xerox87]{xerox87} Xerox,
{\em
Character Code Standard, Xerox System Integration Standard
},
Xerox Corp. (1987).
\end{thebibliography}
\end{document} % End of document.
∂22-Feb-89 1432 @Score.Stanford.EDU:gio@sumex-aim.stanford.edu A Proposal to Change Initial Student Support
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 22 Feb 89 14:32:19 PST
Received: from sumex-aim.stanford.edu by SCORE.STANFORD.EDU with TCP; Wed 22 Feb 89 14:30:14-PST
Received: by sumex-aim.stanford.edu (4.0/inc-1.0)
id AA03716; Wed, 22 Feb 89 14:29:43 PST
Date: Wed, 22 Feb 1989 14:29:42 PST
From: Gio Wiederhold <gio@sumex-aim.stanford.edu>
To: faculty@score.stanford.edu
Subject: A Proposal to Change Initial Student Support
Message-Id: <CMM.0.88.604189782.gio@sumex-aim.stanford.edu>
We complain that students who are not immediatly involved in research loose
time and contact, but we are supporting <some/many> of our students during
their initial year directly. I propose a change in the way this policy is
implemented.
1. The department will make funds available to support students in their
first quarter here, and if desirable for more quarters during their
first year.
2. The funds are made available to faculty, and perhaps research associates
to support first year students they wish to advise. A minimal notification
is sufficient to obtain such funds for the first quarter. All new students,
however, if they wish to be supported by the department, must search out
an advisor.
3. For support in successive quarter, a more formal note may be needed,
although it should still <perhaps> be less painful for the faculty member
than going out and getting the $5000.- of external research funding that a
quarter of a student's support represents.
Your's for change --- I guess I consider changes in themselves useful and
interesting. Stability is dull.
Gio
∂22-Feb-89 1515 HEMENWAY@Score.Stanford.EDU Super-stars
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 22 Feb 89 15:15:37 PST
Date: Wed 22 Feb 89 15:15:00-PST
From: Sharon Hemenway <HEMENWAY@Score.Stanford.EDU>
Subject: Super-stars
To: phd-adm@Score.Stanford.EDU
Reply-To: Hemenway@Score.Stanford.EDU
Message-ID: <12472803329.21.HEMENWAY@Score.Stanford.EDU>
If in the course of reading the Round 2 folders, you come across
someone who is clearly a "super-star", absolute-no-doubt-admittee,
please let either Mike or me know. We'll pull the folder and if the
over-whelming concensus of the readers is definitely to admit him/her,
we'll take early action. I am assuming that the very few people this
might apply to will probably be those who were marked Early Admit in
Round 1 but only had 1 or 2 readings.
thanks--
Sharon
-------
∂22-Feb-89 1545 hyde@csli.Stanford.EDU CSLI Calendar, Feb 23, 4:17
Received: from csli.Stanford.EDU by SAIL.Stanford.EDU with TCP; 22 Feb 89 15:45:41 PST
Received: by csli.Stanford.EDU (4.0/inc-1.0)
id AA29377; Wed, 22 Feb 89 15:09:08 PST
Date: Wed, 22 Feb 89 15:09:08 PST
From: hyde@csli.Stanford.EDU (Dawn Hyde)
Message-Id: <8902222309.AA29377@csli.Stanford.EDU>
To: friends@csli.Stanford.EDU
Subject: CSLI Calendar, Feb 23, 4:17
C S L I C A L E N D A R O F P U B L I C E V E N T S
_____________________________________________________________________________
23 February 1989 Stanford Vol. 4, No. 17
_____________________________________________________________________________
A weekly publication of The Center for the Study of Language and
Information, Ventura Hall, Stanford University, Stanford, CA 94305
____________
The Historical Linguistic talk, featuring Dr. Vjacheslav V. Ivanov, has
been postponed until later this spring, time and date to be announced.
____________
SYMBOLIC SYSTEMS FORUM
Turing's Oracle
Solomon Feferman
Department of Mathematics
Friday, 24 February, 3:15
Room 60:61G
This is the curious tale of a powerful and Protean idea. In the
beginning there was Alan Turing's theory of mechanical computability.
Then Turing introduced his idea of computability by means of an
"oracle," but he never did anything with it. Next, Emil Post took it
up as the basis for his theory of degrees of unsolvability. Then came
generalized recursion theory and even more generalized degrees of
unsolvability. All of which has nothing to do with actual
computability, right? Wrong, in my view.
____________
LINGUISTICS DEPARTMENT COLLOQUIUM
Cross-Linguistic Properties
of Anaphoric Systems
Peter Sells
Department of Linguistics
Friday, 24 February, 3:30
Cordura Hall Conference Room
In the past few years there has been a considerable amount of work done
investigating systems of anaphora involving pronouns and reflexives,
in many different languages. In this paper I would like to review
some of this work, and make some observations about where it leaves us
and what it suggests for future research, concentrating in particular
on the relation between syntactic, semantic, and discourse-based
aspects of anaphora.
____________
COMMONSENSE AND NONMONOTONIC REASONING SEMINAR
Algebraic Techniques
in Boolean Constraint Satisfaction
Peter Ladkin
Kestrel Institute
Monday, 27 February, 3:15
MJH 301
Many techniques used for binary Boolean Constraint Satisfaction Problems
(CSPs) may be formulated in terms of the operations in an algebra of
relations, originally due to Tarski in 1941, but ultimately going back
to Peirce and Schroeder last century. I shall introduce the
relation-algebraic vocabulary, and present some reasonable subset of
the following results. Path-consistency has been suggested as a
heuristic for satisfaction (often NP-complete). Path-consistency
computations may be accomplished in n-squared log n time in parallel,
and there is also a lower bound for reduction-type algorithms (serial
or parallel) of n-squared time (using a concocted class of examples).
We shall also give naturally occurring examples of classes of CSPs
with n-squared satisfaction algorithms for path-consistent networks,
including a large subclass of Allen's temporal reasoning problems; and
classes in which even atomically labelled path-consistent networks are
not satisfiable. (This is joint work with Roger Maddux).
____________
SYMBOLIC SYSTEMS FORUM
A Computational Psychological Approach
to Commonsense Perception
Dr. Jeffry Shrager
Friday, 3 March, 3:15
Room 60:61G
Commonsense perception is a generalized version of what Dretske has
called "epistemic seeing"--that is, a knowledge-based interpretation of
(perceptual) experience. In this talk I will outline a psychological
approach to the study of commonsense perception in incremental concept
learning. My goal is a computational framework and model whose
processing cycle is knowledge revision by commonsense perception, and
which subsumes rule-based inference, perceptual reasoning, and most
inductive and instructed learning tasks.
____________
LINGUISTICS DEPARTMENT COLLOQUIUM
A Creolist's View
Lawrence Carrington
University of the West Indies
and Stanford University
Friday, 3 March, 3:15
Cordura Conference Room
____________
∂22-Feb-89 1630 X3J13-mailer cs proposal part 3 of 3
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 22 Feb 89 16:30:21 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 543952; Wed 22-Feb-89 19:27:07 EST
Date: Wed, 22 Feb 89 19:27 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: cs proposal part 3 of 3
To: Thom Linden <baggins@IBM.com>
cc: Common Lisp mailing <x3j13@SAIL.STANFORD.EDU>
In-Reply-To: <890222.100851.baggins@almvma>
Message-ID: <19890223002701.2.MOON@EUPHRATES.SCRC.Symbolics.COM>
The last time you mailed this out it was only with great difficulty
and a lot of help from my friends that I was able to read it. The
version of LaTex available to me blows out when your document is
run through it. If you (or anyone else on this list) has a DVI
file already in a publicly (FTP) accessible place, I'd appreciate
knowing about it. Probably other recipients are in the same boat,
so mail the file name to X3J13.
∂22-Feb-89 1633 @Score.Stanford.EDU:katiyar@polya.Stanford.EDU WINTER POTLUCK REMINDER
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 22 Feb 89 16:33:11 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Wed 22 Feb 89 16:23:19-PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA27454; Wed, 22 Feb 89 16:21:43 -0800
Date: Wed, 22 Feb 1989 16:21:42 PST
Sender: "Dinesh H. Katiyar" <katiyar@polya.stanford.edu>
From: Social Committee <katiyar@polya.stanford.edu>
To: faculty@score, research-associates@score, secretaries@score,
students@score
Subject: WINTER POTLUCK REMINDER
Message-Id: <CMM.0.87.604196502.katiyar@polya.stanford.edu>
*************************************************************************
********************* 1989 WINTER QUARTER POTLUCK **********************
*************************************************************************
This is to remind you about the CSD potluck that shall be held at
Prof. Vaughan Pratt's place at noon on Sunday, the 26th of Feb.
This is a great opportunity for the *entire* department to get
together. All faculty, staff, and students (Ph.D., Masters,
and Undergrads) and their guests are invited.
If you intend to come to the potluck, then please run the program
~katiyar/food on Polya to sign up. If you don't have an account
on Polya, send mail to one of the members of the social committee.
We hope to see you there!
-------------------------------------------------------------------------
Student Social Committee
------------------------
jennifer anderson jaikumar ramanathan dinesh katiyar
anderson@polya jaikumar@polya katiyar@polya
-------------------------------------------------------------------------
......................................................
: Dinesh Katiyar : Apartment 16Y :
: Ph.D. student : Rains Houses Box 321 :
: Computer Science : Stanford,CA 94305 :
: Stanford University : ph:415-323-7911 :
:..........................:.........................:
∂22-Feb-89 1707 X3J13-mailer Re: cs proposal part 3 of 3
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 22 Feb 89 17:07:40 PST
Received: from defun.utah.edu by cs.utah.edu (5.61/utah-2.1-cs)
id AA01715; Wed, 22 Feb 89 18:04:48 -0700
Received: by defun.utah.edu (5.61/utah-2.0-leaf)
id AA09867; Wed, 22 Feb 89 18:04:43 -0700
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8902230104.AA09867@defun.utah.edu>
Date: Wed, 22 Feb 89 18:04:42 MST
Subject: Re: cs proposal part 3 of 3
To: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Cc: Thom Linden <baggins@IBM.com>,
Common Lisp mailing <x3j13@SAIL.STANFORD.EDU>
In-Reply-To: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>, Wed, 22 Feb 89 19:27 EST
There is a copy of the DVI file on cs.utah.edu (128.110.4.21). The
file is pub/cl-cs-proposal.dvi.
-Sandra
-------
∂22-Feb-89 1713 X3J13-mailer cs proposal straw vote
Received: from IBM.COM by SAIL.Stanford.EDU with TCP; 22 Feb 89 17:12:50 PST
Date: Wed, 22 Feb 89 12:08:15 PST
From: Thom Linden <baggins@IBM.com>
To: Common Lisp mailing <x3j13@sail.stanford.edu>
Message-ID: <890222.120815.baggins@almvma>
Subject: cs proposal straw vote
I would like to take a straw vote on various components of
the Characters proposal. The primary intent is to resolve the
actual list of items to be voted upon at the March meeting.
Let me know if you think some items should be separated or
combined. The vote may also indicate which items are controversial
or need revision before the March meeting.
As it is a straw vote, anyone can respond. Please comment on
your vote as well. In particular, if you are voting against
some item I would like to know what change(s), if any,
incorporated into the proposal might reverse your vote.
Issue: CHAR-FONT-UNUSED-CHAR-BITS-NONPORTABLE
Problem: CHAR-FONT isn't used, CHAR-BITS isn't portable.
Proposal:
Eliminate of font and bit attributes.
Add rules for an implementation supporting attributes.
Redefine STRING-CHAR as implementation defined.
Remove CHAR-FONT-LIMIT
Remove CHAR-BITS-LIMIT
Remove INT-CHAR
Remove CHAR-BITS
Remove CHAR-FONT
Remove MAKE-CHAR
Remove CHAR-CONTROL-BIT
Remove CHAR-META-BIT
Remove CHAR-SUPER-BIT
Remove CHAR-HYPER-BIT
Remove CHAR-BIT
Remove SET-CHAR-BIT
Issue: CHAR-INT-ONLY-USEFUL-WHEN-ATTRIBUTES-SUPPORTED
Problem: CHAR-INT behavior is CHAR-CODE unless implementation
defined attributes are supported.
Proposal:
Remove CHAR-INT
Issue: CHARACTER-TYPE-RESTRICTIVEC
Problem: CHARACTER type doesn't allow thin & fat characters.
Proposal: a
Define BASE-CHARACTER as a subtype of STRING. a
Standard characters are a subset of the base
characters.
STANDARD-CHAR type is replaced by (CHARACTER :STANDARD)
Remove the semi-standard characters.
Issue: STRING-TYPE-RESTRICTIVE
Problem: STRING type doesn't allow thin & fat strings.
Proposal: a
Define STRING as a union type a
STRING used as a type specifier for object creation
means (VECTOR CHARACTER)
All string functions operate as specified on any a
string object except it is an error to insert
an extended character into a base string.
Extend the COERCE function to allow coercion from a
base string to extended string.
Issue: STRING-TYPE-ABBREVIATIONS
Problem: new types are awkward to name, want abbreviations.
Proposal: ne
Add BASE-STRING
Add GENERAL-STRING
Issue: SIMPLE-STRING-TYPE-RESTRICTIVE
Problem: SIMPLE STRING type doesn't allow thin & fat strings.
Proposal: a
Define SIMPLE-STRING as a union type a
Define SIMPLE-STRING as a type specifier for object
creation means (SIMPLE-ARRAY CHARACTER (size))
Issue: SIMPLE-STRING-TYPE-ABBREVIATIONS
Problem: new types are awkward to name, want abbreviations.
Proposal: ne
Add SIMPLE-BASE-STRING
Add SIMPLE-GENERAL-STRING
Issue: FILE-EXTERNAL-REPRESENTATION
Problem: can't specify external encoding even when there are lots
Proposal:
Add :EXTERNAL-CODED-CHARACTER-FORMAT keyword to OPEN
Issue: STRING-BINARY-WIDTH
Problem: Can't find out how many bytes a string will take when written as
text
Proposal:
Add :EXTERNAL-CODED-STRING-LENGTH function
Issue: CHAR-CODE-NON-PORTABLE
Problem: no way to talk about well-known external coding methods, only
internal codes
Proposal:
Add CHAR-CCS-VALUE function
Issue: CHARACTER-IDENTIFICATION-NONPORTABLE
Problem: Can't portably talk about non-standard characters
Proposal:
Introduce the concept of Registries
Standardize on #\registry:id, add all-implemented-registries
Add *ALL-CHARACTER-REGISTRY-NAMES* variable
Add FIND-CHAR function
Add CHAR-LABEL function
Add CHAR-REGISTRY-NAME function
New syntax for CHARACTER type specifier
New #\label:registry character name syntax
New argument to CHARACTERP
∂22-Feb-89 1714 X3J13-mailer cs proposal
Received: from IBM.COM by SAIL.Stanford.EDU with TCP; 22 Feb 89 17:13:58 PST
Date: Wed, 22 Feb 89 12:41:41 PST
From: Thom Linden <baggins@IBM.com>
To: Common Lisp mailing <x3j13@sail.stanford.edu>
Message-ID: <890222.124141.baggins@almvma>
Subject: cs proposal
I'm also mailing everyone (in Mathis mailing labels) a hardcopy
which is dated 22 Feb and contains the errata change to page 25.
Regards,
Thom
∂22-Feb-89 1713 X3J13-mailer cs proposal errata
Received: from IBM.COM by SAIL.Stanford.EDU with TCP; 22 Feb 89 17:13:33 PST
Date: Wed, 22 Feb 89 12:22:03 PST
From: Thom Linden <baggins@IBM.com>
To: Common Lisp mailing <x3j13@sail.stanford.edu>
Message-ID: <890222.122203.baggins@almvma>
Subject: cs proposal errata
Page 25, the insertion "23 after (p49):
(GENERAL-STRING size)
Means the same as (ARRAY CHARACTER (size)): the set of base
strings of the indicated size.
(SIMPLE-GENERAL-STRING size)
Means the same as (SIMPLE-ARRAY GENERAL-CHARACTER (size)): the
set of simple general strings of the indicated size.
Should read:
(GENERAL-STRING size)
Means the same as (ARRAY CHARACTER (size)): the set of general
strings of the indicated size.
(SIMPLE-GENERAL-STRING size)
Means the same as (SIMPLE-ARRAY CHARACTER (size)): the set of
simple general strings of the indicated size.
∂23-Feb-89 0029 @Score.Stanford.EDU:cheriton@Pescadero.Stanford.EDU Re: A Proposal to Change Initial Student Support
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 23 Feb 89 00:28:59 PST
Received: from Pescadero.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Thu 23 Feb 89 00:27:41-PST
Received: by Pescadero.Stanford.EDU (5.59/25-eef) id AA13147; Thu, 23 Feb 89 00:26:03 PDT
Date: Thu, 23 Feb 89 00:26:03 PDT
From: David Cheriton <cheriton@Pescadero.Stanford.EDU>
Message-Id: <8902230826.AA13147@Pescadero.Stanford.EDU>
To: faculty@score.stanford.edu, gio@sumex-aim.stanford.edu
Subject: Re: A Proposal to Change Initial Student Support
In-Reply-To: <CMM.0.88.604189782.gio@sumex-aim.stanford.edu> from Gio
Wiederhold <gio@sumex-aim.stanford.edu> on Wed, 22 Feb 1989 14:29:42
PST
I presume an unspoken part of your proposal is that faculty with research
funds would be discriminated against in getting dept. funds.
I think our current scheme is better, frankly, if we tighten it up and
basically communicate to the students that the first year dept support
is to pass the comps and find a research advisor and get support.
No student gets dept support in year 2 or later. I think that would be
a strong incentive for students to get 1st year things accomplished in
first year, and that's OK by me.
My impression is that the dept has continued to support some students
beyond year 1 if they didnt manage to find other support. Please someone
correct me if I'm wrong.
∂23-Feb-89 0318 @Score.Stanford.EDU:ARK@SAIL.Stanford.EDU Re: A Proposal to Change Initial Student Support
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 23 Feb 89 03:18:35 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Thu 23 Feb 89 03:17:26-PST
Message-ID: <s4Rhc@SAIL.Stanford.EDU>
Date: 23 Feb 89 0317 PST
From: Arthur Keller <ARK@SAIL.Stanford.EDU>
Subject: Re: A Proposal to Change Initial Student Support
To: cheriton@PESCADERO.STANFORD.EDU, faculty@SCORE.STANFORD.EDU,
gio@SUMEX-AIM.STANFORD.EDU
I'm wondering how all this affects fellowship students, or the distinction
between fellowship students and non-fellowship students. What percentage
of our entering PhD students have fellowships these days?
Arthur
∂23-Feb-89 1143 @Score.Stanford.EDU:winograd@loire.stanford.edu Undergraduate committee meeting next Wed, March 1, 4:30pm
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 23 Feb 89 11:43:42 PST
Received: from loire.stanford.edu by SCORE.STANFORD.EDU with TCP; Thu 23 Feb 89 11:37:47-PST
Received: by loire.stanford.edu (5.59/25-eef) id AA02217; Thu, 23 Feb 89 11:36:02 PDT
Date: Thu, 23 Feb 89 11:36:02 PDT
Message-Id: <8902231936.AA02217@loire.stanford.edu>
From: Terry Winograd <Winograd@csli.stanford.edu>
To: ugc@score
Subject: Undergraduate committee meeting next Wed, March 1, 4:30pm
Cc: ac@score, g.gorin@macbeth, reid@wrl.dec.com
There will be a meeting of the undergraduate committee NEXT WEDNESDAY,
MARCH 1, FROM 4:30PM TO 6PM, in MJH 352, to discuss the following issues:
1) The listing of the program for next year's courses and degrees. I
will make available the current version to the committee (it is also in
the book). Any changes need to be made by next week. I don't see any
major issues here (except the one raised in the next item), but we
should check it over and make any changes we find necessary.
2) Core curriculum. There has been a lot of discussion about the
organization of the 106:109 sequence, and it has been discussed in the
curriculum committee. Various people have strong feelings, including
Roy Jones and Bob Floyd. I would hope to include Leo Guibas (chair of
the curriculum committee) in the discussion as well. We might also get
useful input from Gorin and Reid since they are now teaching 109 and we
need to deal with its future. I will send out a more detailed
background discussion before the meeting. Someone (either us in this
meeting or Leo in one of his) needs to make a firm decision on these
issues so courses and faculty can be scheduled for next year and
appropriate descriptions can go into courses and degrees. This is the
main action topic for the meeting.
3) Overall undergraduate curriculum. At the moment, there are very few
courses beyond the core aimed at undergraduates. They jump into
courses directed to the Masters students, with mixed results. At this
meeting I want to introduce the issue and solicit suggestions as to
what we might do in the future to improve the situation.
4) Advising. Advising is a hit or miss proposition at the moment, with
some staff putting in great deal of personal effort with some of our
students, while other students never see an advisor. Maybe this is OK,
or maybe we want to institute more structure (e.g., requiring that
study lists be signed) or redistribute the load. I sent out a
discussion on this a while back (I will resend to anyone who wants),
and wanted to generate ideas on actions that might help.
5) Getting students more connected to the department and research. A
number of ideas have been suggested and we should review them and see
if people can take on activities to address this.
6) Report on hiring - I will find out from Nils the status of the
effort to get a professor(teaching) slot for the associate chair, and
the status with Mike Clancy. Roy can report on lecturer hiring. No
action items here as far as I know.
This list is long, and we are scheduled for an hour and a half. We may
need to put off some of the topics for another meeting if we don't get
to them. I will be pushing to keep discussions brief and to the point,
so maybe we'll be able to do it.
--t
∂23-Feb-89 1212 @Score.Stanford.EDU:gio@sumex-aim.stanford.edu Re: A Proposal to Change Initial Student Support
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 23 Feb 89 12:12:20 PST
Received: from sumex-aim.stanford.edu by SCORE.STANFORD.EDU with TCP; Thu 23 Feb 89 12:10:38-PST
Received: by sumex-aim.stanford.edu (4.0/inc-1.0)
id AA25346; Thu, 23 Feb 89 12:10:05 PST
Date: Thu, 23 Feb 1989 12:10:05 PST
From: Gio Wiederhold <gio@sumex-aim.stanford.edu>
To: David Cheriton <cheriton@pescadero.stanford.edu>
Cc: faculty@score.stanford.edu, gio@sumex-aim.stanford.edu
Subject: Re: A Proposal to Change Initial Student Support
In-Reply-To: Your message of Thu, 23 Feb 89 00:26:03 PDT
Message-Id: <CMM.0.88.604267805.gio@sumex-aim.stanford.edu>
Your message does not address my objective -- improving faculty to student
linkage.
It was not my intent to discriminate against myself. I typically have
supported students ab initio, some of them stayed, some of them went on to
other projects and faculty but that's ok.
However, if some incoming students are to be supported for a year solely
to pass the comps then I am either not being fair to my students, if
I expect some research participation, or to my funders, for wasting their
money. Gio
∂23-Feb-89 1251 @Score.Stanford.EDU:JMC@SAIL.Stanford.EDU
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 23 Feb 89 12:51:11 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Thu 23 Feb 89 12:49:37-PST
Message-ID: <194wAU@SAIL.Stanford.EDU>
Date: 23 Feb 89 1249 PST
From: John McCarthy <JMC@SAIL.Stanford.EDU>
To: faculty@Score.Stanford.EDU
I plan to release our resolution on rhf to Daily, etc. tonight.
∂23-Feb-89 1452 @Score.Stanford.EDU:nilsson@Tenaya.stanford.edu [AS.BTH@Forsythe.Stanford.EDU: AFOSR URI BAA]
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 23 Feb 89 14:52:09 PST
Received: from Tenaya.stanford.edu by SCORE.STANFORD.EDU with TCP; Thu 23 Feb 89 14:49:21-PST
Received: by Tenaya.stanford.edu (5.59/25-eef) id AA10086; Thu, 23 Feb 89 14:46:15 PDT
Date: Thu, 23 Feb 89 14:46:15 PDT
From: Nils Nilsson <nilsson@Tenaya.stanford.edu>
Message-Id: <8902232246.AA10086@Tenaya.stanford.edu>
To: faculty@score
Subject: [AS.BTH@Forsythe.Stanford.EDU: AFOSR URI BAA]
fyi:
----
Return-Path: <@Tenaya.stanford.edu,@Score.Stanford.EDU:AS.BTH@Forsythe.Stanford.EDU>
Date: Thu, 23 Feb 89 11:20:13 PST
To: nilsson@score
From: AS.BTH@Forsythe.Stanford.EDU
Subject: AFOSR URI BAA
TO: Distribution
FROM: Bonnie Hale, SPO
SUBJECT: AFOSR BROAD AGENCY ANNOUNCEMENT: UNIVERSITY RESEARCH INIT
It was finally published in the CBD!
COMMERCE BUSINESS DAILY PUBLICATION DATE: FEBRUARY 22, 1989
BROAD AGENCY ANNOUNCEMENT (BAA): BASIC RESEARCH IN SUPPORT OF THE
AIR FORCE DEFENSE RESEARCH SCIENCES PROGRAM POC L Harrison,
202/767-4943, Chief, Support Services Div, Directorate of Contracts.
This is a special Broad Agency Announcement (BAA) issued by the Air
Force Office of Scientific Research (AFOSR) in support of the Air
Force University Research Initiative (URI) FY 1990 Program. Because
of the special nature and unique objectives of the program only
universities and colleges with capabilities for research and
teaching will be considered for the program. Continued support of
the Air Force University Research Initiative Program is currently
under consideration by the U.S. Congress; however, funds for FY 90
have not been appropriated and funding of the program is contingent
upon this appropriation. Accordingly, offerors are advised that
proposals submitted in response to this BAA will be considered only
if such funding is made avail for AFOSR. Proposals will be
considered in response to the following broad areas of science and
engineering research. It is essential that proposers, as they
develop their proposals, contact one or more of the following AFOSR
Program Managers to explore mutual interests in their respective
discipline areas. In this respect, proposers can obtain add'l info
by referring to a brochure issued by AFOSR entitled ""Research
Interests of the Air Force Office of Scientific Research'', Aug 88.
Copies can be obtained by sending a self-addressed label with your
request to: AFOSR/PKO, Bldg 410, Bolling AFB, DC 20332-6448.
Proposals should offer significant advancement in the state of the
art and show evidence of potential contribution to the research
effort. 1. Aerospace Sciences, e.g., Structural Mechanics, Dr
Anthony Amos, 202/767-4937; Structural Durability, Lt Col George K
Haritos, 202/767-0463; Civil Engineering - Geomechanics, Structural
Dynamics, and Matls, Dr Spencer T. Wu, 202/767-6962, and Major
Steve Boyce, 202/767-6963; External Aerodynamics, Dr Len Sakell,
202/767-4935; Internal Fluid Dynamics, Capt Hank E. Helin,
202/767-0471; Turbulence Structure & Control, Dr James M.
McMichael, 202/767-4936; Unsteady & Separated Flows, Capt Hank E.
Helin, 202/767-0471; Air-Breathing Combustion, Dr Julian M.
Tishkoff, 202/767-0465; Rocket and Space Propulsion, Dr Mitat A.
Birkan, 202/767-4938; Diagnostics in Reacting Media, Dr Julian M
Tishkoff, 202/767-0465. 2. Chemical and Atmospheric Sciences,
e.g., Advanced Electrical & Structural Polymers, Dr Donald Ulrich,
202/767-4963; Surface Reactions, in the Space Environment, Lt Col
Larry Burgraff, 202/767-4960; Theory & Analysis of the Geo-Plasma
Environment, Lt Col James Stobie, 202/767-4960. 3. Electronic &
Material Sciences, e.g., Physical Electronics, Dr Gerald L Witt & Dr
Cole Litton, 202/767-4931; Selective Area Heteroepitaxy, Dr Gerald L
Witt, 202/767-4931; Optical Computing & Processing, Dr C Lee Giles,
202/767-4931; Thin Film Sciences, Dr Howard Schlossberg,
202/767-4906; Metallic Structural Materials, Dr Alan H Rosenstein,
202/767-4933; Nonmetallic Structural Materials, Dr Liselotte J
Schioler, 202/767-4933. 4. Life Sciences, e.g., Neuroscience, Dr
William O Berry, 202/767-5021; Visual Perception, Auditory Pattern
Recognition & Spatial Orientation, Dr John F Tangney, 202/767-5021;
Cognition, Dr Alfred R Fregly, 202/767-5021; Toxicology: Health
Effects and Environmental Effects, Major T Jan Cerveny,
202/767-5021. 5. Mathematical & Information Sciences, e.g.,
Mathematical Modeling, Analysis and Computation, Arje Nachman,
202/767-5028; Discrete Mathematics, Dr Neal Glassman, 202/767-5027;
Distributed Parameter Control, Dr Arje Nachman, 202/767-5028;
Parallel Programming, Col Dave Nelson, 202/767-5026. 6. Physical
and Geophysical Sciences, e.g., Extreme Ultraviolet and Soft X-Ray
Free Electron Lasers, Enhanced Synchrotron, Radiation, and Optics,
Dr Howard Schlossberg, 202/767-4906; Recurrent Solar Activity and
the Solar Cycle, Dr Henry R Radoski, 202/767-4906. Evaluation
Factors: Proposals will be evaluated through a peer or scientific
review process and selected for award on a competitive basis
according to Public Law 98-369, Competition in Contracting Act
(1984). 1. The primary evaluation factors are: A. The scientific
and technical merits of the proposed research. B. The potential
contributions of the proposed research to the mission of the Air
Force. C. Availability of funds. 2. Other evaluation criteria
include: A. The likelihood of the proposed effort to develop new
research capabilities and to broaden the university research base in
support of nat'l defense. B. The offeror's capabilities, related
experience, facilities or techniques or unique combinations of these
factors that are integral to achieving the objectives. C. The
qualifications, capabilities, experience, and past research
accomplishments of the proposed Principal Investigator, team leader
or key personnel who are critical to the DOD mission. D. Realism &
reasonableness of proposed cost. E. Offerors record of past
research accomplishments. It is anticipated that this URI program
will cover a period of 3 yrs beginning in FY 90 depending on
Congressional funding. Awards may be made for periods ranging from
one to 3 yrs. Separate cost proposal for FY90, FY91, an FY92 must
be prepared to ensure continuity of the program in the event funds
are available. Proposals shall be prepared IAW the ""Proposer's
Guide to the AFOSR Research Program,'' Dec 86. Copies can be
obtained by sending a self-addressed label with your request to:
AFOSR/PKO, Bolling AFB, DC 20332-6448. Proposers are cautioned to
follow the guidelines of the brochure since any deviations from
those guidelines may render the proposal ineligible. Each proposal
must be clearly marked on the outside of the package identifying it
as a proposal for the University Research Initiative Program
submitted in response to this BAA (BAA No. 89-2). 20 copies of the
proposal will be req'd. The cost of preparing proposals in response
to this announcement is not considered an allowable direct charge to
any resulting grant or contract. It is, however, an allowable
expense to the normal bid and proposal indirect cost specified in
OMB Circular A-21, Cost Principles for Educational Institutions.
Every effort will be made to protect the confidentiality of the
proposal and of any evaluations. The submitter may mark the
proposal with a legend IAW the Federal Acquisition Regulation 52.
215-12 (modified to permit contract evaluations). Proposals must be
submitted in a hard copy and should not exceed 50 pages total.
Unnecessarily elaborate brochures or presentations beyond that
sufficient to present a complete and effective proposal are not
desired. Only contracting officers are legally authorized to commit
the Govt. PROPOSALS IN THE FORMAT DESCRIBED IN THE PROPOSER'S
GUIDE, MUST BE RECEIVED NOT LATER THAN 3:00 p.m. EST on FRIDAY,
APRIL 14 1989, at the address given below. Proposals rec'd at the
specified location after this time and date will be late and will
not be considered for award under this sol. All information on the
preparation & submission of proposals including technical and
financial content can be found in the Proposer's Guide. (048)
SPONSOR: Air Force Office of Scientific Research, Bldg 410, Attn:
XOT (Rm A115), Bolling AFB, DC 20332-6448
To: AS.CFB
cc: OS&AS(AS.VGS,AS.VGM,AS.SKG,AS.RMK,AS.RCB,AS.PHU,AS.PAW,AS.NON,AS.LAR,
AS.LAP,AS.LAB,AS.KAT,AS.GUS,AS.EDR,AS.CMS,AS.CFB,AS.BLP,AS.ACC),
CR.RLB, HF.KXM, HK.PLD, ENGNR(AS.KCC,AS.PMC,HF.JJC,HF.KXM,HF.RRK,
NA.AMC,NA.KHW,BSCOTT@SCORE,CANNON@SIERRA,GOODMAN@SIERRA,
HAGSTROM@SIERRA,HAUSMAN@SIERRA,HOMSY@SIERRA,IGLEHART@SIERRA,
JEZUKEWICZ@SIERRA,KRUGER@SIERRA,LEVINTHAL@SIERRA,LUENBERGER@SIERRA,
NILSSON@SCORE,PALMER@ACROPOLIS,SHAH@SIERRA)
∂23-Feb-89 1620 @polya.Stanford.EDU:tah@linz MTC Seminar
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 23 Feb 89 16:20:53 PST
Received: from linz.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA28180; Thu, 23 Feb 89 16:15:31 -0800
Received: by linz.stanford.edu (5.59/25-eef) id AA03405; Thu, 23 Feb 89 16:15:23 PDT
Message-Id: <8902240015.AA03405@linz.stanford.edu>
To: lop@polya
Subject: MTC Seminar
Date: 23 Feb 89 16:15:20 PST (Thu)
From: Tom Henzinger <tah@linz>
Friday Feb. 24, noon, MJH 301:
Ian Mason (Stanford) will report on joint work with Carolyn Talcott:
> In this talk we present a formal system for
> proving constrained operational equivalence
> between programs with side effects.
∂23-Feb-89 2027 @polya.Stanford.EDU:plotkin@goblin.Stanford.EDU Next AFLB - Tuesday, February 28, 4:15pm.
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 23 Feb 89 20:27:51 PST
Received: from Goblin.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA11516; Thu, 23 Feb 89 20:24:47 -0800
Received: by goblin.Stanford.EDU (5.51/inc-1.0)
id AA03447; Thu, 23 Feb 89 20:24:15 PST
Date: Thu, 23 Feb 89 20:24:15 PST
From: plotkin@goblin.Stanford.EDU (Serge Plotkin )
Message-Id: <8902240424.AA03447@goblin.Stanford.EDU>
To: aflb-all@polya.stanford.edu
Subject: Next AFLB - Tuesday, February 28, 4:15pm.
Next AFLB will be Tuesday, February 28, 4:15pm
in the usual room.
Following is the abstract of my talk:
SUBLINEAR-TIME PARALLEL ALGORITHMS FOR MATCHING AND RELATED PROBLEMS
Serge Plotkin
We present the first sublinear-time deterministic parallel algorithms for
bipartite matching and several related problems, including maximal
node-disjoint paths, depth-first search, and flows in zero-one networks. Our
results are based on a better understanding of the combinatorial structure of
the above problems, which leads to new algorithmic techniques. In particular,
we show how to use maximal matching to extend, in parallel, a current set of
node-disjoint paths and how to take advantage of the parallelism that arises
when a large number of nodes are ``active'' during an execution of a
push/relabel network flow algorithm.
We also show how to apply our techniques to design parallel algorithms for the
weighted versions of the above problems. In particular, we present
sublinear-time deterministic parallel algorithms for finding a minimum-weight
bipartite matching and for finding a minimum-cost flow in a network with
zero-one capacities, if the weights are polynomially bounded integers.
Joint work with A. Goldberg and P. Vaidya.
∂24-Feb-89 0829 @Score.Stanford.EDU:chandler@polya.Stanford.EDU Next Week's Faculty Lunch
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 24 Feb 89 08:29:44 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Fri 24 Feb 89 08:28:23-PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA27377; Fri, 24 Feb 89 08:26:50 -0800
Date: Fri, 24 Feb 1989 8:26:45 PST
From: "Joyce R. Chandler" <chandler@polya.stanford.edu>
To: faculty@score
Cc: bureaucrats@score
Subject: Next Week's Faculty Lunch
Message-Id: <CMM.0.87.604340805.chandler@polya.stanford.edu>
Please mark your calendars for next weeks faculty lunch, Tuesday, 2/28.
Steve Jobs of NeXT will be our visitor.
∂24-Feb-89 1033 @Score.Stanford.EDU:pratt@chehalis.stanford.edu CSD potluck this Sunday
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 24 Feb 89 10:33:10 PST
Received: from chehalis.stanford.edu by SCORE.STANFORD.EDU with TCP; Fri 24 Feb 89 10:29:52-PST
Received: by chehalis.stanford.edu (5.59/25-eef) id AA02009; Fri, 24 Feb 89 10:28:36 PDT
Date: Fri, 24 Feb 89 10:28:36 PDT
From: Vaughan Pratt <pratt@chehalis.stanford.edu>
Message-Id: <8902241828.AA02009@chehalis.stanford.edu>
To: faculty@score
Subject: CSD potluck this Sunday
Don't forget the CSD potluck, our house, this Sunday, February 26, at 12
noon. Thus far we have lots of students and eight faculty
signed up, a promising start. Please come and help make this one of
the best faculty-attended departmental potlucks ever!
Here's the map again.
_________________________________________________| |__________________________
__________________________________Foothill______Light______Expressway_________
Vaughan and Margot Pratt |P|
Street address: 2215 Gerth Lane /.a|.....one way - no entry to
Los Altos Hills //|g| Old Page Mill Road
Phone: 494-2545 // |e|
<PO address: 2215 Old Page Mill Rd. // | |
Palo Alto, CA 94304> Old || |M|
DIRECTIONS Page|| |i|
Take Page Mill to near 280 Mill|| |l|
Follow sign to Old Page Mill Road Road|| |l|
Gerth Lane has row of mailboxes............|| Light_________________________
:|| |E --------------------------
Cross bridge........................... :|| |x| Deer Creek Road
2215 is second on left....... : :|| |p|
: : :|| |w|
Gerth Lane : : :|| |y| only entry to
=================:=========#===:= === .!.....Old Page Mill Road
2215 2209 M \\ | | and Gerth Lane
<not to scale> \\| |
\ |
_________________________________________________| |_________________________
_<--SF______________________Route 280____________ _____________________SJ-->
∂24-Feb-89 1426 X3J13-mailer Issue: EXTENTIONS-POSITION
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 24 Feb 89 14:26:07 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
id AA13754; Fri, 24 Feb 89 14:24:16 PST
Message-Id: <8902242224.AA13754@decwrl.dec.com>
Received: by decwrl.dec.com (5.54.5/4.7.34)
for x3j13@sail.stanford.edu; id AA13754; Fri, 24 Feb 89 14:24:16 PST
From: chapman%aitg.DEC@decwrl.dec.com
Date: 24 Feb 89 17:23
To: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
Subject: Issue: EXTENTIONS-POSITION
Issue: EXTENSIONS-POSITION
References: Chapter 1, Working draft of standard
Category: Clarification
Related Issues: CONFORMANCE-POSITION, IF-BODY, ERROR-TERMINOLOGY, EXTRA-SYNTAX,
EXTRA-OPTIONAL-KEYWORD-ARGUMENTS, UNSPECIFIED-
Edit history: 12-DEC-88, Version 1 by Chapman
20-DEC-88, Version 2 by Chapman
9-JAN-89, Version 3 by Chapman
10-JAN-89, Version 4 by Chapman
2-FEB-89, Version 5 by Chapman
24-FEB-89, Version 6 by Chapman (added RPG's comment)
Problem Description:
What is the definition of a language extension?
What effect does a language extension have on a conforming program?
What obligation does an implementation have to warn the user that an
extension is being used?
Presumably the only thing that defining it as an extension can mean from
CL's point of view is `initially defining' it as an extension. Whether
an implementation permits redefinition of an extension is between that
implementation and its users and beyond the scope of Common Lisp. For
example, it is common practice to redefine some kinds of system functions
in Genera -- to extend the system in interesting ways, to fix bugs, etc.
Proposal (EXTENSIONS-POSITION:DOCUMENTATION)
The standard document should define a language extension to be
any implementation-supplied tool that isn't explicitly defined
in the standard. This includes facilities added to tools defined
in the standard.
The standard document should levy the following requirement on a
conforming implementation's documentation:
The documentation that accompanies a conforming implementation should clearly
state which parts of the implementation are extensions.
If the standard says that "the results are unspecified", and an
implementation specifies the results, this an extension in the
sense that if the correct behavior of a program depends on the results,
only implementations with the same extension will execute the program
correctly.
In places where the standard says that "an implementation may be extended",
this implies that a conforming, but probably non-portable, program can
be written using the implementation's extension.
Proposal (EXTENSIONS-POSITION:DISABLE)
Same as EXTENSIONS-POSITION:DOCUMENTATION except that
an implementation is required to have a way to disable its extensions, so
that a programmer can be told when he is using a feature that might
affect his program's portability.
Rationale:
The standard should contain information about language extensions
since most implementations have extended the language.
Current Practice:
CLtL allows any extension, provided that it doesn't alter the behavior
of a program that only uses what is specified in CLtL. In particular,
any situation that "is an error" (either explicitly or implicitly) is a
potential area for extension.
Adoption Cost:
Vendors will have to improve their documentation
to list all their extensions. Vendors will have to go through their
implementation and determine what is or isn't an extension.
Benefits:
This definition will provide a basis for proper understanding of
the error terminology used in the standard. The implementation
documentation requirement will aid the user in producing portable code.
Conversion Cost:
None.
Aesthetics:
None.
Discussion:
Masinter says:
It seems to be a constraint on "documentation" rather than "implementation"
if you turn the accidental behavior of (CAR T) into a "feature" of your
implementation. We might want to disallow such an extension as "conforming
to the standard". An implementation which had such an extension might
conform, even if the extension did not conform.
RPG says:
I favor remaining mute on this topic in the standard.
∂24-Feb-89 1429 @Score.Stanford.EDU:gio@sumex-aim.stanford.edu Re: A Proposal to Change Initial Student Support
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 24 Feb 89 14:29:29 PST
Received: from sumex-aim.stanford.edu by SCORE.STANFORD.EDU with TCP; Fri 24 Feb 89 14:27:15-PST
Received: by sumex-aim.stanford.edu (4.0/inc-1.0)
id AA24724; Fri, 24 Feb 89 14:26:46 PST
Resent-Message-Id: <8902242226.AA24724@sumex-aim.stanford.edu>
Return-Path: <ejm@shasta.stanford.edu>
Received: from shasta.stanford.edu by sumex-aim.stanford.edu (4.0/inc-1.0) id
AA16131; Fri, 24 Feb 89 09:40:45 PST
Received: by shasta.stanford.edu; Fri, 24 Feb 89 09:37:18 PST
Date: Fri 24 Feb 89 09:37:15-PST
From: Ed McCluskey <EJM@shasta.arpa>
Subject: Re: A Proposal to Change Initial Student Support
To: gio@sumex-aim.stanford.edu
Message-Id: <VAX-MM(187)+TOPSLIB(118) 24-Feb-89 09:37:15.SHASTA.ARPA>
In-Reply-To: Message from "Gio Wiederhold <gio@sumex-aim.stanford.edu>" of
Wed, 22 Feb 1989 14:29:42 PST
Resent-To: faculty@score.stanford.edu
Resent-Date: Fri, 24 Feb 1989 14:26:44 PST
Resent-From: Gio Wiederhold <gio@sumex-aim.stanford.edu>
yuesλλλes λ, let's do it!
Ed McCluskey
-------
∂24-Feb-89 1437 X3J13-mailer Issue: EXTRA-RETURN-VALUES
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 24 Feb 89 14:37:35 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
id AA14585; Fri, 24 Feb 89 14:35:46 PST
Message-Id: <8902242235.AA14585@decwrl.dec.com>
Received: by decwrl.dec.com (5.54.5/4.7.34)
for x3j13@sail.stanford.edu; id AA14585; Fri, 24 Feb 89 14:35:46 PST
From: chapman%aitg.DEC@decwrl.dec.com
Date: 24 Feb 89 17:35
To: x3j13@sail.stanford.edu
Subject: Issue: EXTRA-RETURN-VALUES
Issue: EXTRA-RETURN-VALUES
References: Chapter 1, Section 1.5, Working draft of standard
Category: Clarification
Edit history: 8-JAN-89, Version 1 by Masinter
3-FEB-89, Version 2 by Chapman
Problem: Is it OK to return extra values from Common Lisp functions?
Proposal: EXTRA-RETURN-VALUES:NO
Unless it is explicitly allowed in the standard,
if a standard function
returns a different number of return values from the number
specified by the standard, the results are unspecified.
Rationale:
The reason is that
additional arguments are visible to otherwise portable programs. "For
instance, (multiple-value-call #'cons (floor x y)) looks portable, but it
will try to pass the wrong number of arguments to CONS if FLOOR returns an
extra value."
Current Practice:
Adoption Cost:
Implementations and their associated documentation that now contain
functions that return extra values will have to change.
Benefits:
Programs will potentially become more portable.
Conversion Cost:
See Adoption Cost.
Aesthetics:
None.
Discussion:
∂24-Feb-89 1439 X3J13-mailer Issue: UNSPECIFIED-DATATYPES
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 24 Feb 89 14:38:57 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
id AA14708; Fri, 24 Feb 89 14:37:07 PST
Message-Id: <8902242237.AA14708@decwrl.dec.com>
Received: by decwrl.dec.com (5.54.5/4.7.34)
for x3j13@sail.stanford.edu; id AA14708; Fri, 24 Feb 89 14:37:07 PST
From: chapman%aitg.DEC@decwrl.dec.com
Date: 24 Feb 89 17:36
To: x3j13@sail.stanford.edu
Subject: Issue: UNSPECIFIED-DATATYPES
Issue: UNPSECIFIED-DATATYPES
References: Chapter 1, Section 1.5, Working draft of standard
Category: Clarification
Edit history: 8-JAN-89, Version 1 by Masinter
6-FEB-89, Version 2 by Chapman
Problem: Is it OK to define the behavior of functions on datatypes not
explicitly permitted in the standard?
Proposal: UNPSECIFIED-DATATYPES:NO-EXCEPT-AS-EXPLICITLY-ALLOWED
A conforming implementation does not define the behavior of functions
on data types not explicitly permitted in the standard.
Example: A conforming implementation is not allowed to define + as
operating on vectors.
Rationale:
While the original intent of CL designers was that
implementations be permitted to do these things, they get in the way of
portability when they're done, since it is nearly impossible to detect when
a program has used one of these features. It is simple to define a new
function
acme-common-lisp:+ which has the behavior of the "portable" + plus all the
new whizzy features, too.
Current Practice:
Adoption Cost:
Implementors would have to determine which functions had been allowed
to operate on data types not explicitly allowed in CLtL and rewrite those
functions. The implementation's documentation would have to change.
Benefits:
Portability.
Conversion Cost:
See Adoption Cost.
Aesthetics:
None.
Discussion:
"The suggestion that implementations can shadow standard functions to
provide these features has been made before, and I'll repeat my standard
objection. The behavior of a standard function is also apparent when
calling a portable function that is defined to use that function. A
good example is FORMAT: a portable subroutine library would be quite
likely to define functions that take FORMAT-style argument lists
(Pitman's portable condition system defines several). If an
implementation extends FORMAT, these extensions should be reflected in
the behavior of these functions. But if the extensions are hidden in
ACME:FORMAT and the library calls LISP:FORMAT, this won't happen, and
there's no way to make it happen without modifying the library's source."
∂24-Feb-89 1439 X3J13-mailer Issue: MACRO-AS-FUNCTION
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 24 Feb 89 14:38:14 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
id AA14651; Fri, 24 Feb 89 14:36:25 PST
Message-Id: <8902242236.AA14651@decwrl.dec.com>
Received: by decwrl.dec.com (5.54.5/4.7.34)
for x3j13@sail.stanford.edu; id AA14651; Fri, 24 Feb 89 14:36:25 PST
From: chapman%aitg.DEC@decwrl.dec.com
Date: 24 Feb 89 17:36
To: x3j13@sail.stanford.edu
Subject: Issue: MACRO-AS-FUNCTION
Issue: MACRO-AS-FUNCTION
References: Chapter 1, Section 1.5, Working draft of standard
Category: Clarification
Edit history: 8-JAN-89, Version 1 by Masinter
6-FEB-89, Version 2 by Chapman
Problem:
May operators defined in the standard as "macros" and
"special forms" be implemented as functions instead? PROG1 is the main
example, but there might be others.
Proposal: MACRO-AS-FUNCTION:YES
Operators that are defined in CL as "macros" may be defined as functions
instead if the semantics can be preserved.
This is rare, perhaps only
restricted to
(defun prog1 (value &rest ignore) value)
(defun prog2 (value1 value2 &rest ignore) value2)
Operators defined as "special forms" may also be defined as functions.
Alternate Proposal: MACRO-AS-FUNCTION:STATUS-QUO
The standard will remain silent on the issue of whether or not is
is legal for an implementation to implemention "macros" and
"special forms" as functions.
Alternate Proposal: MACRO-AS-FUNCTION:DISALLOW
A conforming implementation does not define "macros" and "special forms"
as functions.
Rationale:
There isn't a good reason to disallow "macro" and "special form" function
definitions. It doesn't interfere with portability.
Current Practice:
One implementation defines PROG1 as a function.
Adoption Cost:
None for :YES; some for :DISALLOW.
Benefits:
Increased implementation flexibility.
Conversion Cost:
None.
Aesthetics:
None.
Discussion:
∂24-Feb-89 1439 X3J13-mailer Issue: UNSOLICITED-MESSAGES
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 24 Feb 89 14:39:14 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
id AA14750; Fri, 24 Feb 89 14:37:23 PST
Message-Id: <8902242237.AA14750@decwrl.dec.com>
Received: by decwrl.dec.com (5.54.5/4.7.34)
for x3j13@sail.stanford.edu; id AA14750; Fri, 24 Feb 89 14:37:23 PST
From: chapman%aitg.DEC@decwrl.dec.com
Date: 24 Feb 89 17:37
To: x3j13@sail.stanford.edu
Subject: Issue: UNSOLICITED-MESSAGES
Issue: UNSOLICITED-MESSAGES
References: Chapter 1, Section 1.5, Working draft of standard
Category: Clarification
Edit history: 8-JAN-89, Version 1 by Masinter
6-FEB-89, Version 2 by Chapman
Problem: Is it legal for an implementation to produce unsolicited output,
e.g., GC notifications, autoload heralds, and progress messages from
COMPILE-FILE or LOAD?
Proposal: UNSOLICITED-MESSAGES:NOT-TO-SYSTEM-USER-STREAMS
Unsolicited messages, such as GC notifications and autoload heralds, if
they are produced by an implementation, should not be directed to
*STANDARD-OUTPUT*, *ERROR-OUTPUT*. If an implementation produces them, they
may be produced on a stream that is not "shared" with any of the streams
that a user might redefine or redirect. (This really means that it is OK to
direct such notifications to *TERMINAL-IO* since a user may not redirect
*TERMINAL-IO*.)
Messages such as progress reports from LOAD and COMPILE are "solicited",
and are not covered by this issue. See issue COMPILE-AND-LOAD-VERBOSE.
Rationale:
This proposal has very little impact on implementations, but helps the
user by explicitly stating the disposition of unsolicited messages.
Current Practice:
Adoption Cost:
Small. Implementations and their documentation may have to change slightly.
Benefits:
Portability.
Conversion Cost:
See Adoption Cost.
Aesthetics:
None.
Discussion:
∂24-Feb-89 1524 TAJNAI@Score.Stanford.EDU Important dates for 1990
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 24 Feb 89 15:24:30 PST
Date: Fri 24 Feb 89 15:20:38-PST
From: Carolyn Tajnai <TAJNAI@Score.Stanford.EDU>
Subject: Important dates for 1990
To: csd@Score.Stanford.EDU, faculty@Score.Stanford.EDU, sec@Score.Stanford.EDU
Message-ID: <12473328641.18.TAJNAI@Score.Stanford.EDU>
Monday, Feb. 12, 1990: 7:30 p.m. first Forsythe lecture
Tuesday, Feb. 13: 4:15 p.m. second Forsythe lecture
6:00 p.m. Computer Forum 22nd Annual Meeting
Informal Buffet Supper, Faculty Club
Wednesday, Feb. 14: 8:00 a.m. Computer Forum Registration and
buffet breakfast, Tresidder
sessions
6:00 p.m. Forum banquet
Thursday, Feb. 15: 8:00 a.m. Forum continues
sessions
4:30 p.m. to 6:00 Forum reception for all CSD/CSL
and friends will close the conference.
Although attendance was good last week, a number of faculty and
research associates had conflicting commitments. On behalf of the Department
of Computer Science and the Computer Systems Laboratory, we ask that
you reserve these dates now, and give the Forum conference priority.
We thank the faculty, students, staff and the Forum committee for making
the meeting last week a huge success. Feel free to send suggestions for
next year's 22nd Annual Meeting.
Carolyn Tajnai
-------
∂24-Feb-89 1609 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu ADVANCE PROGRAM FOR STOC '89
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 24 Feb 89 16:09:24 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA06637; Fri, 24 Feb 89 16:06:50 -0800
Message-Id: <8902250006.AA06637@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Fri, 24 Feb 89 16:07:11 PST
Received: by BYUADMIN (Mailer R2.01A) id 1173; Fri, 24 Feb 89 16:58:05 MST
Date: Fri, 24 Feb 89 13:16:37 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Richard Ladner <ladner@KINGFISHER.CS.WASHINGTON.EDU>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Richard Ladner <ladner@KINGFISHER.CS.WASHINGTON.EDU>
Subject: ADVANCE PROGRAM FOR STOC '89
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
Symposium on Theory of Computing
Twenty-First Annual
May 15-17, 1989
Seattle, Washington
Local Arrangements Chair: Richard Ladner
Program Committee Chair: Christos Papadimitriou
Program Committee:
Fan Chung Nancy Lynch
Cynthia Dwork Christos Papadimitriou
Faith Fich Vijaya Ramachandran
Shafi Goldwasser Eva Tardos
Debby Joseph Avi Wigderson
Maria Klawe Frances Yao
------------------------------------------------------------------------------
STOC'89
Advance Registration Form
Please send this form or a facsimile, along with a check or money
order made out to ACM STOC '89, to:
Richard Ladner
Department of Computer Science, FR-35
University of Washington
Seattle, WA 98195
(Attn: STOC Registration)
Registration Fee By 4/25/89 After 4/25/89
ACM or SIGACT Member $190 $240
Neither ACM nor SIGACT Member $200 $250
Author or Program Committee Member $180 $230
Full-time Student $50 $100
Registration fee includes 3 lunches, 1 outing, coffee breaks, and the
proceedings. Student registration fee includes lunches, coffee breaks
and proceedings, but not the outing. Additional
outing tickets are $40 each. Circle the appropriate amount above.
Name__________________________________________________________________________
Affiliation___________________________________________________________________
Address_______________________________________________________________________
Address_______________________________________________________________________
City______________________________State______________________________Zip______
Country________________________________________________Phone__________________
E-mail________________________________________________________________________
Dietary restriction: Kosher Vegetarian
------------------------------------------------------------------------------
STOC '89
May 15-17, 1989
Hotel Reservation Form
Reservations should be made by April 23, 1989. To make reservations by
phone, 206-621-9000, Ext. 5555. When calling mention the dates of the
conference and the code STOC '89.
To make reservations by mail, return this form with check, money order,
or major credit card information, for the first night's deposit to:
Seattle Sheraton Hotel and Towers
1400 Sixth Avenue
Seattle, WA 98101
Single $95 Double $95 Triple $110 Quadruple $110
Name__________________________________________________________________________
Address_______________________________________________________________________
Address_______________________________________________________________________
City______________________________State______________________________Zip______
Day time phone________________________________________________________________
Arrival Date and Time_________________________________________________________
Departure Date and Time_______________________________________________________
Sharing room with_____________________________________________________________
Credit Card (if used)_________________________________________________________
Name on Credit Card___________________________________________________________
Credit Card No._______________________________________________________________
Expiration Date of Card_______________________________________________________
Signature_____________________________________________________________________
Reservations received after the contracted block of rooms is full or after
the cut-off date of April 23, 1989 are subject to space and rate availability.
Arrivals after 4:00 pm must guarantee first nights accommodations with
check, money order, or major credit card.
Fire codes require that triples or quadruples must use existing bedding.
------------------------------------------------------------------------------
Conference Information
Hotel Information. The Seattle Sheraton Hotel and Towers is a first-class
hotel located in downtown Seattle at 1400 Sixth Avenue, between Pike and
Union Streets. To make a reservation call 206-621-9000 Ext. 5555 or send
in the Hotel Reservation Form to the hotel. When calling mention the dates
of the conference and the code STOC '89. Room rates are $95 for a single
or double, $110 for a triple or quadruple. Fire codes require that triples
or quadruples must use existing bedding. The symposium rate will be honored
up to three days prior to and three days after the symposium. A block of
rooms is being held for the symposium until the cut-off date of
April 23, 1989. Reservations received after the block of rooms is full
or after the cut-off date of April 23, 1989 are subject to space and rate
availability. Check-in time is 3:00 pm and Check-out time is 1:00 pm.
Transportation. If you are flying you will arrive at Seattle-Tacoma
Internationl Airport (SEA-TAC) which is about 15 miles south of downtown
Seattle. The Airport Express (Gray Line) runs about every 30 minutes from
outside the baggage claim area to the Sheraton and costs $5.50 one-way or
$10 round-trip. A taxi to the Sheraton costs about $22. To reach the
hotel by car going north on I-5, exit on the left at the Seneca Street
(exit 165), turn immediately right onto 6th and continue three blocks to
the hotel on the right. Going south on I-5, exit on the right at Union
Street (exit 165B), the hotel is immediately on your right between 6th
and 7th. Going west on I-90, exit onto I-5 north (exit 2C),then exit I-5
at Madison. Turn left on Madison, then right onto
6th and continue 5 blocks to the hotel.
Airline Information. American Airlines has been designated the official
carrier of STOC '89 offering special fares to North American conferees.
>From within the contiguous 48 States, American will allow 5% off any
promotional air fare for which you qualify, 45% off regular day coach
air fare with a 14 day advance purchase, or 40% off regular day coach
air fare with a 7 day advance purchase. From within Canada, American
will allow 35% off regular day coach fare with a 7 day advance
purchase. These fares are valid for travel dates between 5/7/89 and
5/24/89. To take advantage of these fares you or your travel agent should
call 1-800-433-1790 and ask for Star File #S-0759WE.
Outing. On Tuesday evening our group will take a short bus ride to the
waterfront where we will board a boat to cross Puget Sound to Kiana Lodge.
At Kiana we can enjoy their lovely gardens and be treated to a Northwest
salmon feast. Busses depart the hotel at 5:20 and return about 9:30.
The boat trip is about 50 minutes each way and may be chilly. The outing is
included in the registration fee, except for those paying the student
registration fee. Additional outing tickets may be purchased for $40.
Registration. There will be registration outside of the Cirrus Room
on Sunday, May 14, from 8:00 to 10:00 pm. From Monday to Wednesday there
will be a registration and information desk set up outside the Grand
Ballroom from 8:30 am to 5:00 pm .
Information about Seattle. Seattle is a beautiful city of 500,000 people
located on the shores of Lake Washington and Puget Sound. The Cascade
Mountains to the east and Olympic Mountains to the west can both be viewed
from the city. Mount Rainier (14,411 ft. or 4,434 m. tall) looms
in the distance some 90 miles away. In mid May the temperature range
is typically between 50F (10C) and 70F (21C). Cloudy days with occasional
rain can be expected with probability about 1/2.
Things To Do. There is much to do in the city during breaks at the
conference. Washington State has many attractions if you plan to come
before or stay after the conference. To obtain a statewide travel planning
guidecall 1-800-544-1800. A restaurant guide will be given out at the
conference.
Downtown, within walking distance or within the free bus zone. Yes,
the city busses are free in the downtown area before 9 pm.
- Pike Place Market (6 blocks west on Pike Street). This is an open
air public market with many indoor and outdoor shops.
- Waterfront (a short walk down stairs from Pike Place Market).
On the waterfront you can visit the Seattle Aquarium, Omnidome
with fantastic Mt. Saint Helens movie footage, Washington State
ferries, and harbor boat tours.
- Pioneer Square (10 blocks south of Pike Place Market on free bus
lines). This is an historic area of Seattle with the Underground
Tour, many galleries and shops, Elliot Bay Bookstore and Cafe,
Smith Tower, and Kingdome Stadium.
- International District (14 blocks south of the hotel and just east
of the Kingdome). This is a small area populated with many
oriental restaurants.
- Convention Center and Freeway Park (just east of the hotel).
- Downtown Shopping (just west of the hotel). Many nice stores
includin Eddie Bauer, Nordstroms, I. Magnin, and the small shops
in the new Westlake Center are nearby.
Within Seattle and can be easily reached by city bus. Busses fares are
55 cents during non-peak hours and 75 cent during peak hours. On busses
going out of Downtown you pay on getting off the bus and on busses going
toward Downtown you pay on getting on the bus. You must have exact change.
- Capitol Hill. An off beat area about just east of Downtown.
The main attraction is Broadway which has many shops and eating
places. Special attractions there are the art cinemas
the Harvard Exit and the Egyptian. Volunteer park has a very
nice art museum and plant conservatory. A retail store of the mail
order house REI is on Capitol Hill.
- University District. This area surrounds the beautiful University of
Washington campus. Nearby is the University Arboretum with a
splendid Japanese Garden.
- Seattle Center. This is an enclosed campus which houses the
Space Needle, an amusement park, Pacific Science Center, Bagley
Wright Theatre, Opera House, Intiman Theatre, and ACT Theatre.
Seattle Center is reachable from Downtown by an elevated
monorail.
- Ballard Locks, Shilshole Marina, Golden Gardens Park, and Discovery
Park. (four attractions very near each other in the northwest part
of the city). The Ballard Locks connect the salt water Puget Sound
to fresh water Lake Washington. This is a great place to go
boat watching on weekends. Shilshole Marina is a moorage for about
1,500 sail boats. Golden Gardens is a beach on Puget Sound and
Discovery Park is a huge undeveloped park where a pair of Bald
Eagles have a nest.
- Woodland Park Zoo and Green Lake (adjacent attractions). The Zoo has
great African savannah and Gorilla exhibits. Green Lake is a
jogger's paradise, a 2.6 mile (4.3 k) run around a park surrounded
lake. Those two Bald Eagles which are nesting in Discovery
Park seem to spend their afternoons at Green Lake.
Outside Seattle requiring an automobile to get there.
- Museum of Flight near Boeing Field (15 minutes South).
- Boeing Tour of 747 Plant in Everett (30 minutes North).
- Ste.Michelle Winery (30 minutes Northeast).
- Mt. Rainier (3 hours south). There is Paradise Lodge and a
visitors' center near the 6000 foot (1850 meter) level on the
south face of Rainier. The trails will be snow-covered
at this time. You should be able to see Rainier from I-5
as you leave from the south end of Seattle otherwise you may
not see anything at 6000 feet either.
- Mt. Saint Helens (3.5 hrs south). The last parts of this route
are on well maintained one lane forest service roads with turnouts.
On a clear day there are also good views of Mt. Rainier, Mt. Adams,
and Mt. Hood as well as Mt. St. Helens. Check that this road is
open since that may depend on the snow pack. Hiking trails are
probably snow-covered.
- North Cascades (1.5-2 hrs northeast). The North Cascades loop
highway travels through some beautiful jagged mountains.
Most of the trails will be snow/ice covered. The full
loop is a very long drive but interesting places crop up
fairly quickly.
- Steven's Pass-Cascades (1-1.5 hr northeast). Highway 2 through the
mountains travels through a somewhat less rugged area than the
North Cascades. Most areas below the pass should have good
snow-free hiking areas.
- Snoqualmie Pass-Cascades (1 hr east). Lowest of the passes through
the Cascades, following I-90. Several hikes along the way,
also along the way is Snoqualmie Falls, a pleasant park setting with
waterfall very popular with Sunday picnickers in the summer.
- Olympic Peninsula (2-3 hrs west). Reachable either by ferry and
across Hood Canal Bridge to the north or through Olympia to the
south. Several very different areas to explore. The Hurricane Ridge
visitor center in the Olympic mountains is reachable an hour
south from Port Angeles. The Pacific coast (another 2 hrs) has
some of the most rugged shorelines in the continental U.S.
The west side of the Olympics also creates middle latitude rain
forests in several places. Many trails on the east side of the
Olympics should be hikable in May.
- San Juan Islands (2.5 hours north by car then ferry).
Beautiful cluster of islands with small resorts and towns.
Many bed-and-breakfasts can be found for overnight stays.
- Victoria B.C.(2.5-4.5 hrs by boat). There is no need to take a car
to enjoy Victoria. From Seattle take either the Princess Marguerite
(slow boat) or Victoria Clipper (fast boat).
- Vancouver B.C. (3 hrs North).
Further Information. For further information contact Richard Ladner,
Department of Computer Science, University of Washington,
Seattle, WA 98195, 206-543-9347, E-mail: ladner@cs.washington.edu.
------------------------------------------------------------------------------
STOC '89 Program
All events except the outing are held at the Seattle Sheraton. All technical
sessions and lunches will be held in the Grand Ballroom on the second
floor. Other events will be in rooms indicated in the program.
During the day there will be rooms on the second floor available for
small meetings.
Sunday Evening, May 14, 1989
RECEPTION: 8:00 - 11:00, in the Cirrus Room on the 35th floor.
Video Tape of AAAS Academic Funding Panel can be viewed nearby.
Monday, May 15,1989
SESSION 1: 8:30 - 10:10, chaired by Shafi Goldwasser, M.I.T.
8:30 "Multiparty protocols and logspace-hard pseudorandom sequences,
"Laszlo Babai, Univ. of Chicago and Eotvos University, Hungary,
Noam Nisan, UC Berkeley, and Mario Szegedy, Univ.of Chicago.
8:50 "Pseudo-random Number Generation from ANY One-way Function,"
Russell Impagliazzo, UC Berkeley, Leonid Levin, Boston University,
and Michael Luby, Univ. of Toronto.
9:10 "A Hard-Core Predicate for All One-Way Functions," Oded Goldreich,
Technion, Israel, and Leonid A. Levin, Boston University.
9:30 "Universal One-Way Hash Functions and their Cryptographic
Applications," Moni Naor, UC Berkeley, and Moti Yung, IBM Yorktown.
9:50 "Limits on the Provable Consequences of One-way Permutations,"
Russell Impagliazzo, UC Berkeley, and Steven Rudich, Univ. of Toronto.
BREAK: 10:10 - 10:40
SESSION 2: 10:40 - 12:00, chaired by Cynthia Dwork, IBM Almaden Research
Center
10:40 "A Zero-One Law for Boolean Privacy," Benny Chor and Eyal Kushilevitz,
Technion, Israel.
11:00 "Verifiable Secret Sharing and Multiparty Protocols with Honest
Majority," Tal Rabin and Michael Ben-Or, The Hebrew University, Israel.
11:20 "Designing Programs that Check Their Work," Manuel Blum and
Sampath Kannan, UC Berkeley.
11:40 "Provably Fast Integer Factoring with Quasi-uniform Small
Quadratic Residues," Brigette Vallee, Univ. de Caen, France.
LUNCH: 12:00 - 1:20
SESSION 3: 1:20 - 3:20, chaired by Debby Joseph, Univ. of Wisconsin at Madison
1:20 "Functional Interpretations of Feasibly Constructive Arithmetic,"
Stephen Cook and Alasdair Urquhart, Univ.of Toronto.
1:40 "Expressiveness of Restricted Recursive Queries," Foto Afrati,
National Technical University of Athens, Greece, and Stavros S. Cosmadakis,
IBM T. J. Watson Research Center.
2:00 "On w-Automata and Temporal Logic," Shmuel Safra, Weizmann Institute,
Israel, and Moshe Y. Vardi, IBM Almaden Research Center.
2:20 "Quantifier Elimination in the Theory of Algebraically-Closed Fields,"
Doug Ierardi, Cornell University.
2:40 "Probabilistic Computation and Linear Time," Lance Fortnow and
Michael Sipser, M.I.T.
3:00 "The Isomorphism Conjecture Fails Relative to a Random Oracle,"
Stuart A. Kurtz, Univ. of Chicago, Stephen R. Mahaney, AT&T Bell
Laboratories, and James S. Royer, Univ. of Chicago.
BREAK: 3:20 - 3:40
SESSION 4: 3:40 - 5:40, chaired by Avi Wigderson, Hebrew University, Israel
3:40 "On the Method of Approximations," A. A. Razborov, Steklov Mathematical
Institute, USSR.
4:00 "On the Extended Direct Sum Conjecture," Nader H. Bshouty, Technion,
Israel.
4:20 "Circuits and Local Computation" Andrew Chi-Chih Yao, Princeton
University.
4:40 "A General Sequential Time-Space Tradeoff for Finding Unique Elements,"
Paul Beame, Univ.of Washington.
5:00 "Towards a Theory of Average Case Complexity," Shai Ben-David,
Benny Chor, and Oded Goldreich, Technion, Israel, and Michael Luby,
Univ.of Toronto.
5:20 "Tradeoffs Between Communication and Space," Tak Lam, Univ. of
Washington, Prasoon Tiwari and Martin Tompa, IBM T. J. Watson Research Center
SIGACT BUSINESS MEETING: 8:30 - 11:00 in Metropolitan Ballroom on
third floor
Tuesday, May 16, 1989
SESSION 5: 8:30 - 10:10, chaired by Maria Klawe, University of British
Columbia
8:30 "Work-Preserving Simulations of Fixed-Connection Networks,"Richard Koch,
Bruce Maggs, and Satish Rao, M.I.T., and Arnold Rosenberg Univ. of
Massachusetts, Amherst.
8:50 "An O(log N ) Deterministic Packet Routing Scheme," Eli Upfal, IBM
Almaden Research Center.
9:10 "Fast Computation Using Faulty Hypercubes," JohanHastad, Royal
Institute of Technology, Sweden, and Tom Leighton and Mark Newman, M.I.T.
9:30 "Optimal Size Integer Division Circuits," John H. Reif and
Stephen R. Tate, Duke University.
9:50 "On the Complexity of Radio Communication," Noga Alon,
Tel Aviv University, Israel, Amotz Bar-Noy, Stanford University, Nathan
Linial, IBM Almaden Research Center, and David Peleg,
Weizmann Institute, Israel, and Stanford University.
BREAK: 10:10 - 10:40
SESSION 6: 10:40 - 12:20, chaired by Vijaya Ramachandran, Univ. of Texas
at Austin
10:40 "Local Reorientation, Global Order, and Planar Topology,"
Ming-Yang Kao and Gregory E. Shannon, Indiana University, Bloomimgton.
11:00 "Parallel Depth-First Search in General Directed Graphs," Alok Aggarwal,
T.J. Watson Center, Richard J. Anderson, University of Washington,
and Ming-Yang Kao, Indiana University, Bloomington.
11:20 "Highly Parallelizable Problems," Omer Berkman and Dany Breslauer,
Tel Aviv University, Israel, Zvi Galil, Tel Aviv University, Israel,
and Columbia University, Baruch Schieber, IBM T. J. Watson Research Center,
and Uzi Vishkin, Tel Aviv University, Israel, and Univ. of Maryland.
11:40 "Optimal Separations Between Concurrent-write Parallel Machines,"
Ravi B. Boppana, Rutgers University.
12:00 "CREW PRAMS and Decision Trees," Noam Nisan, UC Berkeley.
LUNCH: 12:20 - 2:00
SESSION 7: 2:00 - 3:20, chaired by Faith Fich, Univ. of Toronto
2:00 "Implicit O(1) Probe Search," Amos Fiat and Moni Naor, UC Berkeley.
2:20 "The Cell Probe Complexity of Dynamic Data Structures," Michael Fredman,
Bellcore and UCSD, and Michael Saks, UCSD, Bellcore, and Rutgers University.
2:40 "On Aspects of Universality and Performance for Closed Hashing,"
Jeanette P. Schmidt, Rutgers University, and Alan Siegel, NYU.
3:00 "Verifying Partial Orders," Claire Kenyon-Mathieu and Valerie King,
Princeton University.
BREAK: 3:20 - 3:40
SESSION 8: 3:40 - 5:00, chaired by Frances Yao, Xerox Palo Alto
Research Center
3:40 "A Random Polynomial Time Algorithm for Approximating the Volume of
Convex Bodies," Martin Dyer, Univ. of Leeds, United Kingdom, and Alan Frieze
and Ravi Kannan, CMU.
4:00 "Lines in Space-Combinatorics, Algorithms and Applications" Bernard
Chazelle, Princeton University, Herbert Edelsbrunner, Univ. of Illinois at
Urbana-Champaign, Leonidas Guibas, DEC Systems Research Center and Stanford
University, and Micha Sharir, NYU and Tel Aviv University, Israel.
4:20 "Polling: A New Randomized Sampling Technique for
Computational Geometry," John H. Reif and Sandeep Sen, Duke University.
4:40 "Coordinate Representation of Order Types Requires Exponential Storage,"
Jacob E. Goodman, City College, CUNY, Richard Pollack, NYU, and Bernd
Sturmfels, Johannes-Kepler Univ., Austria.
OUTING TO KIANA LODGE: 5:20 - 9:30
INFORMAL MEETING ON ACADEMIC FUNDING: 9:30 - 11:00, in Meeting Room
426 on fourth floor, chaired by Barbara Simons, IBM Almaden Research Center
Wednesday, May 17, 1989
SESSION 9: 8:30 -9:50, chaired by Christos Papadimitriou, UCSD
8:30 "Inference of Finite Automata Using Homing Sequences," Ronald L. Rivest
and Robert E. Schapire, M.I.T.
8:50 "The Minimum Consistent DFA Problem Cannot Be Approximated within any
Polynomial," Leonard Pitt, Univ.of Illinois at Urbana, Champaign, and
Manfred K. Warmuth, UC Santa Cruz.
9:10 "Cryptographic Limitations on Learning Boolean Formulae and Finite
Automata, "Michael Kearns and Leslie G. Valiant, Harvard University.
9:30 "Proof of a Conjecture of R. Kannan," Jean-Camille Birget, Univ. of
Nebraska.
BREAK: 9:50 - 10:20
SESSION 10: 10:20 - 12:00, chaired by Nancy Lynch, M.I.T.
10:20 "Bounded Concurrent Time-Stamp Systems Are Constructible!" Danny Dolev,
IBM Almaden Research Center and Hebrew University, Israel, and Nir Shavit
Hebrew University, Israel.
10:40 "On the Improbability of Reaching Byzantine Agreements," Ronald
L. Graham, AT&T Bell Laboratories, and Andrew C. Yao Princeton University.
11:00 "Compact Distributed Data Structures for Adaptive Routing,"
Baruch Awerbuch, M.I.T., Amotz Bar-Noy, Stanford University, Nathan Linial,
IBM Almaden Research Center and Hebrew University, Israel, and David Peleg,
Weizmann Institute, Israel.
11:20 "Reliable Communication Using Unreliable Channels," Hagit Attiya,
Michael J. Fischer, Da-Wei Wang, and Lenore D. Zuck, Yale University.
11:40 "Randomized Distributed Shortest Paths Algorithms,"
Baruch Awerbuch, M.I.T.
LUNCH: 12:00 - 1:30
SESSION 11: 1:30 - 2:50, chaired by Fan Chung, Bellcore
1:30 "On Search, Decision and the Efficiency of Polynomial-Time Algorithms,"
Michael R. Fellows, Univ.of Idaho, and Michael A. Langston, Washington State
University.
1:50 "A New Fixed Point Approach for Stable Networks and Stable Marriages,"
Tomas Feder, Stanford University.
2:10 "Strongly Polynomial-Time and NC Algorithms for Detecting Cycles in
Dynamic Graphs" Edith Cohen, Stanford University, and Nimrod Megiddo, IBM
Almaden Research Center and TelAviv University, Israel.
2:30 "An O(n~0.4)-Approximation Algorithm for 3-Coloring," Avrim Blum, M.I.T.
BREAK: 2:50 - 3:20
SESSION 12: 3:20 - 5:00, chaired by Eva Tardos, M.I.T. and Eotvos Univ.,
Hungary
3:20 "Trading Space for Time in Undirected s-t Connectivity,"
Andrei Z. Broder and Anna R. Karlin, DEC Systems Research Center,
Prabhakar Raghavan, IBM T. J. Watson Research Center, and Eli Upfal,
IBM Almaden Research Center.
3:40 "Expanding Graphs and the Average-case Analysis of Algorithms for
Matchings and Related Problems," Rajeev Motwani, Stanford University.
4:00 "New Lower Bounds on the Length of Universal Traversal Sequences,"
Allan Borodin, Univ. of Toronto, Walter L. Ruzzo, Univ. of Washington,
and Martin Tompa, IBM T. J. Watson Research Center.
4:20 "The Electrical Resistance of a Graph Captures its Commute and Cover
Times," Ashok K. Chandra and Prabhakar Raghavan, IBM T. J. Watson
Research Center, Walter L. Ruzzo, Univ. of Washington, Roman Smolensky,
UC Berkeley, and Prasoon Tiwari, IBM T. J. Watson Research Center.
4:40 "On the Second Eigenvalue of Random Regular Graphs." Joel Friedman,
Princeton University, Jeff Kahn, Rutgers University, and Endre Szemeredi,
Rutgers University and Hungarian Academy of Sciences.
END OF THE CONFERENCE: 5:00
------------------------------------------------------------------------------
∂25-Feb-89 0941 LOGMTC-mailer Logic Seminar
Received: from csli.Stanford.EDU by SAIL.Stanford.EDU with TCP; 25 Feb 89 09:41:52 PST
Received: by csli.Stanford.EDU (4.0/inc-1.0)
id AA29797; Sat, 25 Feb 89 09:39:52 PST
Date: Sat 25 Feb 89 09:39:51-PST
From: Sol Feferman <SF@CSLI.Stanford.EDU>
Subject: Logic Seminar
To: Logic@csli.Stanford.EDU
Message-Id: <604431591.0.SF@CSLI.Stanford.EDU>
Mail-System-Version: <SUN-MM(242)+TOPSLIB(128)@CSLI.Stanford.EDU>
Speaker: Prof. Jouko Vaananen, Univ. of Helsinki, vis. UCLA
Title: "Trees, games and induction"
Time: Tues., Feb. 28. 4:15-5:30 PM
Place: Room 381-T, Math Corner, Stanford
Abstract:
The aim of this talk is to develop a theory of induction along
non-well-founded orderings. Our notion of inductive definability
is based on a transfinite game the length of which is measured
by the length of branches in a given tree. We describe a well-founded
ordering of trees which enables us to define a notion of rank
for this induction. We use this concept for studying various
aspects of uncountability such as definability theory of
uncountable models, model theory of infinite quantifier
languages and properties of uncountable trees.
***
There will be a dinner with the speaker after the talk.
S. Feferman
-------
∂26-Feb-89 1350 @Score.Stanford.EDU:Mailer@SAIL.Stanford.EDU
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 26 Feb 89 13:47:14 PST
Received: from SAIL.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Sun 26 Feb 89 13:44:19-PST
Message-ID: <96r4L@SAIL.Stanford.EDU>
Date: 26 Feb 89 1343 PST
From: John McCarthy <JMC@SAIL.Stanford.EDU>
To: "@CORREC.LIS[W89,JMC]"@SAIL.Stanford.EDU
The following statement was passed unanimously at a meeting
of the Computer Science Department faculty on Tuesday, Feb 21,
1989.
Statement of Protest about the AIR Censorship of rec.humor.funny.
Computer scientists and computer users have been involved in
making information resources widely available since the 1960s.
Such resources are analogous to libraries. The newsgroups
available on various networks are the computer analog of
magazines and partial prototypes of future universal computer
libraries. These libraries will make available the information
resources of the whole world to anyone's terminal or personal
computer.
Therefore, the criteria for including newsgroups in computer
systems or removing them should be identical to those for
including books in or removing books from libraries. For this
reason, and since the resource requirements for keeping
newsgroups available are very small, we consider it contrary to
the function of a university to censor the presence of newsgroups in
University computers. We regard it as analogous to removing a
book from the library. To be able to read anything subject only
to cost limitations is an essential part of academic freedom.
Censorship is not an appropriate tool for preventing or dealing
with offensive behavior.
We therefore think that AIR and SDC should rescind the purge of
rec.humor.funny. The Computer Science Department has also decided
not to censor Department Computers.
∂26-Feb-89 1446 hoffman@csli.Stanford.EDU The Symbolic Systems Forum, March 3rd
Received: from csli.Stanford.EDU by SAIL.Stanford.EDU with TCP; 26 Feb 89 14:46:31 PST
Received: by csli.Stanford.EDU (4.0/inc-1.0)
id AA23167; Sun, 26 Feb 89 14:32:31 PST
Date: Sun 26 Feb 89 14:32:30-PST
From: Reid Hoffman <HOFFMAN@CSLI.Stanford.EDU>
Subject: The Symbolic Systems Forum, March 3rd
To: ForumAnnouncement@csli.Stanford.EDU
Message-Id: <604535550.0.HOFFMAN@CSLI.Stanford.EDU>
Mail-System-Version: <SUN-MM(242)+TOPSLIB(128)@CSLI.Stanford.EDU>
The Symbolic Systems Forum presents.
Dr. Jeff Shrager
Intelligent Systems Lab
Xerox PARC
on
A Computational Psychology Approach to Commonsense Perception
Commonsense Perception is a generalized version of what Dretske has
called "epistemic seeing" -- that is, knowledge-based interpretation of
(perceptual) experience. In this talk I will outline a psychological
approach to the study of commonsense perception in incremental concept
learning. My goal is a computational framework and model whose basic
processing cycle is knowledge revision by commonsense perception, and
which subsumes rule-based inference, perceptual reasoning, and most
inductive and instructed learning tasks.
Date: Friday, March 3rd
Time: 3:15
Location: building 60, room 62n
The talk is open to the general public and refreshments will be served.
-------
∂26-Feb-89 2018 @Score.Stanford.EDU,@polya.Stanford.EDU:coraki!pratt@Sun.COM potluck report
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 26 Feb 89 20:18:19 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Sun 26 Feb 89 20:15:40-PST
Received: from SUN.COM by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA14309; Sun, 26 Feb 89 20:11:28 -0800
Received: from sun.Sun.COM (sun-bb.sun.com) by Sun.COM (4.1/SMI-4.0)
id AA23178; Sun, 26 Feb 89 20:13:40 PST
Received: from coraki.UUCP by sun.Sun.COM (4.0/SMI-4.0)
id AA12601; Sun, 26 Feb 89 20:10:53 PST
Received: by (4.0/SMI-4.0Beta)
id AA13569; Sun, 26 Feb 89 20:10:10 PST
Date: Sun, 26 Feb 89 20:10:10 PST
From: Vaughan Pratt <coraki!pratt@Sun.COM>
Message-Id: <8902270410.AA13569@>
To: faculty@cs.stanford.edu
Subject: potluck report
Cc: coraki!pratt@Sun.COM
Eight of the seventy people listed under CSD Faculty and Research Staff
in the phone directory (p.147) came to the potluck. The potluck
organizers tell me this was a four-fold gain over the previous potluck,
but another four-fold gain would still be less than 50%. Suggestions
for making the event more attractive to faculty and staff are hereby
solicited. Should it be
* held less often?
* on a more favorable date and/or time?
* advertised more vigorously/attractively?
* catered instead of potluck?
* entertaining, featuring
a guest of honour? (I bet lunch Tuesday will be crowded.)
a general-interest talk?
games (parlor, lawn)?
* other?
-v
∂27-Feb-89 0207 @Score.Stanford.EDU:lam@k2.Stanford.EDU Re: A Proposal to Change Initial Student Support
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 27 Feb 89 02:07:44 PST
Received: from k2.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Mon 27 Feb 89 02:04:55-PST
Received: by k2.Stanford.EDU (5.59/inc-1.0)
id AA15404; Sun, 26 Feb 89 19:19:19 PDT
Date: 26 Feb 1989 19:01-PST
From: lam@k2.Stanford.EDU
Subject: Re: A Proposal to Change Initial Student Support
To: faculty@SCORE.STANFORD.EDU
Message-Id: <89/02/26 1901.880@k2.Stanford.EDU>
I think we should separate the funding issues with getting an advisor.
A student should have an advisor regardless of whether he needs
financial support or not.
We should simply make getting an advisor, say by the end of the first
quarter, part of the Ph.D. program. But if we do that, we must also
help the students in choosing an advisor by creating more opportunities
for the students to find out about the faculty and their research
projects.
-Monica
∂27-Feb-89 0217 X3J13-mailer Issue: EXTRA-SYNTAX
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 27 Feb 89 02:17:05 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
id AA14142; Mon, 27 Feb 89 02:15:12 PST
Message-Id: <8902271015.AA14142@decwrl.dec.com>
Received: by decwrl.dec.com (5.54.5/4.7.34)
for x3j13@sail.stanford.edu; id AA14142; Mon, 27 Feb 89 02:15:12 PST
From: chapman%aitg.DEC@decwrl.dec.com
Date: 27 Feb 89 05:15
To: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
Subject: Issue: EXTRA-SYNTAX
Issue: EXTRA-SYNTAX
References: Chapter 1, Section 1.5, Working draft of standard
Category: Clarification
Related Issues: ERROR-TERMINOLOGY, EXTENSIONS-POSITION
Edit history: 8-JAN-89, Version 1 by Masinter
13-JAN-89, Version 2 by Chapman
3-FEB-89, Version 3 by Chapman
27-FEB-89, Version 4 by Chapman
Problem: is it OK to extend Common Lisp macros and special forms to take
additional syntax not specified?
Proposal: EXTRA-SYNTAX:NO
It isn't allowed.
Rationale:
It would be very difficult for a program-analyzing-program to detect
such an extension. Non-portable programs could easily result.
Current Practice:
Adoption Cost:
Benefits:
Conversion Cost:
Aesthetics:
None.
Discussion:
∂27-Feb-89 0218 X3J13-mailer Issue: EXTRA-OPTIONAL-KEYWORD-ARGUMENTS
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 27 Feb 89 02:18:42 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
id AA14193; Mon, 27 Feb 89 02:16:50 PST
Message-Id: <8902271016.AA14193@decwrl.dec.com>
Received: by decwrl.dec.com (5.54.5/4.7.34)
for x3j13@sail.stanford.edu; id AA14193; Mon, 27 Feb 89 02:16:50 PST
From: chapman%aitg.DEC@decwrl.dec.com
Date: 27 Feb 89 05:16
To: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
Subject: Issue: EXTRA-OPTIONAL-KEYWORD-ARGUMENTS
Issue: EXTRA-OPTIONAL-KEYWORD-ARGUMENTS
References: Chapter 1, Section 1.5, Working draft of standard
Category: Clarification
Edit history: 8-JAN-89, Version 1 by Masinter
3-FEB-89, Version 2 by Chapman
27-FEB-89, Version 3 by Chapman
Problem:
Is it OK to define Common Lisp functions with extra optional or named arguments
with system-dependent meanings?
Proposal: EXTRA-OPTIONAL-KEYWORD-ARGUMENTS:NO-EXCEPT-AS-ALLOWED
Unless explicitly allowed in the standard,
implementations are not allowed to include such definitions.
When extra optional or named arguments are allowed in the
standard, they will be annotated as follows:
functions that may be
extended to take implementation-specific optional arguments are indicated
by an &REST IGNORE in their argument list; functions that may be extended
to take additional keyword parameters are indicated by &ALLOW-OTHER-KEYS.
Rationale:
The goal is not to outlaw any extensions currently offered by
implementors, but to make the range of extensions to functions defined in
the standard well documented in the standard. Implementations that want to
extend functions that aren't explicitly allowed to be extended can instead
shadow them.
Alternate proposal: NOT-IN-STANDARD-PACKAGE
Like NO-EXCEPT-AS-ALLOWED, except that an implementation may always
provide additional named arguments to a function if the names are not in
an implementation-specific package (the list of these currently includes
the LISP, USER, and KEYWORD packages).
Current Practice:
Most implementations extend function syntax with extra
optional and named arguments.
Adoption Cost:
Implementors will be required to determine which parts of their implementations
are conforming and which parts aren't.
Implementors will have to provide a candidate list of exceptions to the
editorial committee.
Benefits:
It will be more possible to write portable programs. Also, future standards
will be less likely to make changes that are incompatible with current
implementations.
Conversion Cost:
See Adoption Cost.
Aesthetics:
None.
Discussion:
∂27-Feb-89 0255 X3J13-mailer Review schedule reminder
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 27 Feb 89 02:54:55 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
id AA15941; Mon, 27 Feb 89 02:52:59 PST
Message-Id: <8902271052.AA15941@decwrl.dec.com>
Received: by decwrl.dec.com (5.54.5/4.7.34)
for x3j13@sail.stanford.edu; id AA15941; Mon, 27 Feb 89 02:52:59 PST
From: chapman%aitg.DEC@decwrl.dec.com
Date: 27 Feb 89 05:31
To: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
Subject: Review schedule reminder
I would like to come to closure on several issues and sections of the
standard at the March meeting (i.e. take a vote on them). The complete
list is in issue CUT-OFF-DATES that I hope you have received either by
hardcopy mail or electronically. Below is a summary of what will be voted
on in March, and the dates I'm hoping to get comments from you. Please
see CUT-OFF-DATES for more details, or let me know if you didn't get that
issue.
Topic Suggested date for returning comments
______________________________________________________________________________
Conformance issues 3/1
CONFORMANCE-POSITION
EXTENSIONS-POSITION
SUBSETTING-POSITION
EXTRA-SYNTAX
EXTRA-OPTIONAL-KEYWORD-ARGUMENTS
MACRO-AS-FUNCTION
UNSOLICITED-MESSAGES
UNSPECIFIED-DATATYPES
Sections 1.1-1.5 3/1
Section 1.7 3/1
Sections 5.2-5.4 3/8
Section 1.6 3/15
Section 2.1 3/15
Section 5.1 (*) 3/15
Section 2.2 (**) 3/22
(*) This section is not complete as of now. Please do not review until
I let you know if will be worth your time.
(**) This section has undergone recent organizational changes. Please
do not review until after 3/1.
Please note that the dates above are only suggestions. Please feel free
to comment up to 3/21.
The sections of the standard are all available from hudson.dec.com
(ftp_user merrychristmas). Please see the file "how-to-build-standard.lis"
for information about file names.
I will also be sending you the sources from these sections electronically,
and will create a file named "march-27-ballot.tex" (and .dvi) that will contain
all these sections (except 5.1) and will be available after 3/1.
Please let me know if you have any trouble accessing or reviewing this
information. Note that after these sections have been voted in, we can
still change them with clean-up proposals.
kathy chapman
∂27-Feb-89 0851 @Score.Stanford.EDU:nilsson@Tenaya.stanford.edu faculty meetings
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 27 Feb 89 08:51:37 PST
Received: from Tenaya.stanford.edu by SCORE.STANFORD.EDU with TCP; Mon 27 Feb 89 08:50:53-PST
Received: by Tenaya.stanford.edu (5.59/25-eef) id AA12490; Mon, 27 Feb 89 08:47:31 PDT
Date: Mon, 27 Feb 89 08:47:31 PDT
From: Nils Nilsson <nilsson@Tenaya.stanford.edu>
Message-Id: <8902271647.AA12490@Tenaya.stanford.edu>
To: tenured@score
Cc: bureaucrat@polya
Subject: faculty meetings
Gene Golub inquires why don't we combine the full professor
faculty meeting to be held on Wed. Mar 1 with the assoc/full prof
faculty meeting to be held on Tue, Mar 7? Good question. I assumed
that we wouldn't be able to cover all the business at the Mar 1
meeting. This note is to inquire about:
1) Can the assoc profs come to the meeting on Wed. Mar 1 (this
is somewhat late notice)? If so, pls respond to Joyce saying
you will be there if held. The assoc and full profs will then
consider the Mike Clancy case. Letters on him are available from
Joyce and should be read before the meeting.
2) Are the full profs willing to stay a little longer at the Mar
1 meeting to consider the case they were going to consider that day
(but do so after the Clancy matter and after the assoc profs are
excused). Again, pls respond to Joyce if you are willing to do this.
Joyce will make a judgement call on the likely attendance and then
send a note out saying either that their will be one combined
meeting on Wed. Mar 1 at 4:15 or two meetings as previously planned.
In response to Gene's comment about having regular faculty meetings:
the only way I could deal with this would be to schedule a regular
faculty meeting every two weeks and then cancel most of them. Perhaps
those in favor of regular faculty meetings should consider them so
scheduled and then consider them all cancelled unless they hear
otherwise.
Yours for greater efficiency,
-Nils
∂27-Feb-89 0917 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu STOC Errata and Manuscripts
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 27 Feb 89 09:17:41 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA28174; Mon, 27 Feb 89 09:15:27 -0800
Message-Id: <8902271715.AA28174@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Mon, 27 Feb 89 09:15:46 PST
Received: by BYUADMIN (Mailer R2.01A) id 8023; Mon, 27 Feb 89 10:14:27 MST
Date: Mon, 27 Feb 89 11:11:27 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Christos Papadimitriou <christos%cs@UCSD.EDU>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Christos Papadimitriou <christos%cs@UCSD.EDU>
Subject: STOC Errata and Manuscripts
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
If you have an erratum on an earlier STOC or FOCS paper for inclusion
in the Proceedings of the next STOC, please send a copy to me ASAP:
Christos Papadimitriou, CSE-C014, UCSD, La Jolla, CA 92093, U.S.A.
For the rest of this message, I apologize that I am using this route
in my effort to reach as many STOC authors as possible. All others,
please try to ignore what follows.
There are several problems associated with the letter, apparently
signed by me, that you received from ACM with the special forms. For starters,
I did not write it, or approve of it before it was sent. It neglects
to mention the page limit, which is TEN PAGES. And it contains an
error in its description of the dimensions of the forms (trust your
ruler rather than the letter).
I am expecting your paper any day now.
Regards to all,
---Christos Papadimitriou
∂27-Feb-89 0922 @Score.Stanford.EDU:golub@na-net.stanford.edu Re: faculty meetings
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 27 Feb 89 09:22:48 PST
Received: from bravery.stanford.edu by SCORE.STANFORD.EDU with TCP; Mon 27 Feb 89 09:21:59-PST
Received: by bravery.stanford.edu (4.0/inc-1.5)
id AA10466; Mon, 27 Feb 89 09:32:47 PST
Date: Mon, 27 Feb 1989 9:32:42 PST
From: Gene H. Golub 415/723-3124 <golub@na-net.stanford.edu>
To: Nils Nilsson <nilsson@Tenaya.stanford.edu>
Cc: tenured@score.stanford.edu, bureaucrat@polya.stanford.edu
Subject: Re: faculty meetings
In-Reply-To: Your message of Mon, 27 Feb 89 08:47:31 PDT
Message-Id: <CMM.0.88.604603962.golub@>
A regularly scheduled meeting every two weeks would be fine if it were
held at the same time and place and no "emergency" meetings were held.
Previously, there had been a place reserved in the teaching schedule
just for such purposes. By the way, the Computer Systems Colloquium
is held on Wednesdays at 4:15. It's an excellent series and you might
want to attend.
Gene
From @Score.Stanford.EDU:csl@sierra.STANFORD.EDU Fri Feb 24 16:31:20 1989
Flags: 000000000005
Return-Path: <@Score.Stanford.EDU:csl@sierra.STANFORD.EDU>
Received: from Score.Stanford.EDU by patience.stanford.edu (4.0/inc-1.5)
id AA00340; Fri, 24 Feb 89 16:31:17 PST
Received: from sierra.STANFORD.EDU by SCORE.STANFORD.EDU with TCP; Fri 24 Feb 89 15:52:01-PST
Received: by sierra.STANFORD.EDU (3.2/4.7); Fri, 24 Feb 89 15:49:14 PST
From: csl@sierra.STANFORD.EDU (Eileen Schwappach)
Date: Fri 24 Feb 89 15:49:12-PST
Subject: EE380 Colloquium, Wednesday, March 01, 1989
To: allcolloq@score
Message-Id: <604367352.0.CSL@SIERRA>
Mail-System-Version: <SUN-MM(219)+TOPSLIB(128)@SIERRA>
EE 380/CS 540 Computer Systems Colloquium
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
Title: CAD Applications of Massive Parallel Computers
Speaker: Professor Alberto Sangiovanni-Vincentelli
From: UC Berkeley, Department of Electrical Engineering
Date: Wednesday, March 01, 1989 at 4:15 p.m.
Place: Terman Auditorium, Stanford University
ABSTRACT
Massively parallel computers such as the Connection Machine developed
by D. Hillis at MIT offer a new paradigm for CAD algorithms which allows
the exploitation of fine as well as coars grain parallelism. Two CPU
intensive CAD problems have been attacked with the Connection Machine:
process simulation and device simulation. As submicron geometries require
that simulations be performed in three dimensions, the computational
requirements increase dramatically. This talk will focus on the relationships
between algorithms and massively parallel architecture.
NOTE: The EE380 Colloquium is a public lecture which any interested
party may attend. In addition, after each talk there is an "informal
dutch-treat" dinner, organized by Professor Dennis Allison, which is
open to those attending the talk. If you plan to attend the dinner,
please R.S.V.P. to Professor Allison at Allison@SHASTA.Stanford.edu.
Please note that due to logistics, the number of persons to attend the
dinner may be limited.
-------
∂27-Feb-89 1005 GENESERETH@Score.Stanford.EDU Re: faculty meetings
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 27 Feb 89 10:05:29 PST
Date: Mon 27 Feb 89 10:04:06-PST
From: Mike Genesereth <GENESERETH@Score.Stanford.EDU>
Subject: Re: faculty meetings
To: golub@patience.Stanford.EDU
cc: nilsson@Tenaya.Stanford.EDU, tenured@Score.Stanford.EDU,
bureaucrat@Polya.Stanford.EDU
In-Reply-To: <CMM.0.88.604603962.golub@>
Message-ID: <12474057449.33.GENESERETH@Score.Stanford.EDU>
Nils,
I stringly agree with Gene on this. Same time, same place. No meetings
outside. If all of these things I will guarantee to hold that
slot open.
mrg
-------
∂27-Feb-89 1009 @Score.Stanford.EDU:dill@amadeus.Stanford.EDU potluck
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 27 Feb 89 10:08:56 PST
Received: from amadeus.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Mon 27 Feb 89 10:06:04-PST
Received: by amadeus.Stanford.EDU (5.59/inc-1.0)
id AA25751; Mon, 27 Feb 89 10:05:11 PDT
Date: Mon, 27 Feb 89 10:05:11 PDT
From: dill@amadeus.Stanford.EDU (David Dill)
Message-Id: <8902271805.AA25751@amadeus.Stanford.EDU>
To: faculty@score.stanford.edu
Subject: potluck
The factor that pushed me over the brink was having to cook. I had a lot
to do last weekend, so it would have been difficult to find time to
attend (but feasible). I feel bad about punting these things, because
I strongly believe that the department needs more friendly interaction,
but it just didn't seem do-able.
By the way, not everyone has an account on Polya (which was needed for
the dish signup).
∂27-Feb-89 1045 @Score.Stanford.EDU:jcm@ra.stanford.edu potluck
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 27 Feb 89 10:45:39 PST
Received: from ra.stanford.edu by SCORE.STANFORD.EDU with TCP; Mon 27 Feb 89 10:43:44-PST
Received: by ra.stanford.edu (5.59/25-eef) id AA04381; Mon, 27 Feb 89 10:42:35 PDT
Date: Mon, 27 Feb 89 10:42:35 PDT
From: John Mitchell <jcm@ra.stanford.edu>
Message-Id: <8902271842.AA04381@ra.stanford.edu>
To: faculty@score
Subject: potluck
I enjoyed the potluck. Among other things, I think it was a
far more pleasant setting for discussion than the usual TGIF.
Offhand, I would think one such event per quarter would be
about right. Some activity might make an afternoon more
enjoyable, although it is impossible to find an activity that
suits everyone. We used to have an MIT theory picnic with
football every year, even though there were fewer than 5
people who could catch/throw a football.
As far as "pot luck," there are plenty of places to buy food
that needs no further preparation.
John
∂27-Feb-89 1050 @Score.Stanford.EDU:winograd@loire.stanford.edu potluck
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 27 Feb 89 10:50:01 PST
Received: from loire.stanford.edu by SCORE.STANFORD.EDU with TCP; Mon 27 Feb 89 10:44:01-PST
Received: by loire.stanford.edu (5.59/25-eef) id AA07362; Mon, 27 Feb 89 10:42:20 PDT
Date: Mon, 27 Feb 89 10:42:20 PDT
Message-Id: <8902271842.AA07362@loire.stanford.edu>
From: Terry Winograd <Winograd@csli.stanford.edu>
To: faculty@score.stanford.edu
Subject: potluck
I (as we all do) have individual reasons for missing the potluck -- we
had long ago purchased tickets for a benefit banquet for the Veterans
of the Abraham Lincoln Brigade -- but I think it rasises a more general
issue. Faculty are being exhorted to go as a favor (or obligation) to
the students. In other groups I have been connected with (e.g., CSLI)
the faculty go to events like this because they enjoy the chance to
talk with each other (as well as with the students). That's also one
reason they go to the colloquium (which nobody in this department does)
-- it provides an opportunity for informal contact.
As far as I can tell, the faculty in this department don't particularly
enjoy talking to each other, and therefore don't take advantage of
opportunities to do so. There are always good excuses, and it is
always good to lower the overhead to encourage those on the edge, but
overall that won't change things drastically. Maybe nothing will,
until the natural processes lead to a change in the makeup of the
faculty (I do have the feeling that the junior faculty have more group
interaction than the senior faculty).
Or maybe there are ways to shift the culture that we have drifted
into. Maybe the faculty retreat could be used to promote this. For
example, in the long run it might be better to have faculty members
talk about things that are important to them in their lives, rather
than about their technical work. I have to admit that for almost
everyone in the faculty, I know very little about what makes them tick
-- what they actually care about outside of their formal
academic/professional activities. I'm sure most of them have only the
vaguest idea about me in return.
I know this sounds California-groupy, and people will resent losing the
opportunity for "real" discussions of computer science. I happen to
believe that a small amount of time spent getting to see each other as
people will lead eventually to a much larger number of "real" technical
discussions at places like potlucks and colloquia.
--t
∂27-Feb-89 1100 TAJNAI@Score.Stanford.EDU Re: potluck
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 27 Feb 89 11:00:34 PST
Date: Mon 27 Feb 89 10:57:51-PST
From: Carolyn Tajnai <TAJNAI@Score.Stanford.EDU>
Subject: Re: potluck
To: jcm@ra.Stanford.EDU, faculty@Score.Stanford.EDU
In-Reply-To: <8902271842.AA04381@ra.stanford.edu>
Message-ID: <12474067235.20.TAJNAI@Score.Stanford.EDU>
Money that is spent on food for the CSD potluck is tax deductible if you
have enough business expenses to qualify. So buying pre-prepared food
saves time and energy and is economically reasonable.
Carolyn
-------
∂27-Feb-89 1106 TAJNAI@Score.Stanford.EDU Call for IBM fellowship nominees
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 27 Feb 89 11:06:06 PST
Date: Mon 27 Feb 89 11:02:48-PST
From: Carolyn Tajnai <TAJNAI@Score.Stanford.EDU>
Subject: Call for IBM fellowship nominees
To: faculty@Score.Stanford.EDU
cc: hiller@Score.Stanford.EDU
Message-ID: <12474068137.20.TAJNAI@Score.Stanford.EDU>
The "call" from IBM should arrive this week. The deadline is March 24, so
I'm trying to get a head start.
We are invited to nominate 2 PHD students -- should be CSD, citizenship
not an issue. Also, should be an advanced student who has passed the
qual, and helpful if there are publications.
Carolyn
-------
∂27-Feb-89 1101 X3J13-mailer characters and conformance
Received: from IBM.COM by SAIL.Stanford.EDU with TCP; 27 Feb 89 11:00:39 PST
Date: Mon, 27 Feb 89 10:48:34 PST
From: Thom Linden <baggins@IBM.com>
To: Common Lisp mailing <x3j13@sail.stanford.edu>
Message-ID: <890227.104834.baggins@almvma>
Subject: characters and conformance
>> See issues CONFORMANCE-POSITION and ERROR-TERMINOLOGY.
>> kc
Is a program written in non-STANDARD-CHAR-P characters conforming?
The conformance-position and error-terminology issues don't seem to
provide an answer. Clearly it is the case that portability of such
a program is restricted to implementations which support the
specific characters used (eg. the CLtL semi-standard chars, Kanji,
Hangul). Should all such programs be considered non-conforming?
Perhaps the terms "conforming" and "strictly conforming" (mentioned
in use by ANS C) could be used which also deal with programs written
using extra optional keyword arguments.
Conforming rules:
--basic rules as stated in CONFORMANCE-POSITION issue
Strictly Conforming rules:
--Conforming rules (above)
--Strictly conforming code is written using only
STANDARD-CHAR-P characters.
--Strictly conforming code is written using no extra
optional keyword arguments.
Perhaps Strictly Conforming is where one lumps together all the
requirements to define maximally portable code.
∂27-Feb-89 2357 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu LICS-89
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 27 Feb 89 23:57:02 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA19040; Mon, 27 Feb 89 23:54:50 -0800
Message-Id: <8902280754.AA19040@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Mon, 27 Feb 89 23:55:12 PST
Received: by BYUADMIN (Mailer R2.01A) id 2685; Tue, 28 Feb 89 00:51:10 MST
Date: Mon, 27 Feb 89 19:36:40 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Rohit Parikh <RIPBC@CUNYVM.CUNY.EDU>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Rohit Parikh <RIPBC@CUNYVM.CUNY.EDU>
Subject: LICS-89
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
FOURTH IEEE SYMPOSIUM ON LOGIC IN COMPUTER SCIENCE (LICS)
June 5-8, 1989
Asilomar, California
PROGRAM AND CONFERENCE INFORMATION
The Fourth IEEE Symposium on Logic in Computer Science will take
place at the Asilomar Conference Center in Pacific Grove, California,
from Monday June 5 to Thursday June 8, in 1989. The Symposium will
cover a wide range of theoretical and practical issues in computer
science that relate to logic in a broad sense. Below you will find
information about the location, travel arrangements, the conference,
and the program, as well as registration and room reservation forms.
PROGRAM COMMITTEE
M. Davis, M. Fitting, M. Hennessy, D. Israel, J. Jaffar, D. Joseph,
D. Kapur, D. Kfoury, P. Kolaitis, D. Kozen, V. Lifschitz, R. Parikh
(chair), A. Pnueli, V. Pratt, R. Statman.
ORGANIZING COMMITTEE
J. Barwise, W. Bledsoe, A. Chandra, E. Dijkstra, E. Engeler, J. Goguen,
D. Gries, Y. Gurevich, D. Kozen, Z. Manna, A. Meyer (chair), R. Parikh,
G. Plotkin, D. Scott.
LOCAL ARRANGEMENTS CHAIR
M. Abadi
Digital Equipment Corporation
Systems Research Center
130 Lytton Avenue
Palo Alto, CA 94301
USA
(415) 853-2196
internet: ma@src.dec.com
SPONSORSHIP
The 1989 LICS Symposium is sponsored by the Technical Committee on
Mathematical Foundations of Computing of the IEEE Computer Society, in
cooperation with the ACM Special Interest Group on Automata and
Computability Theory, the Association for Symbolic Logic, and the
European Association for Theoretical Computer Science. The Symposium
has been subsidized by a generous donation from Xerox PARC and by
further donations from the Digital Equipment Corporation Systems
Research Center, the Hewlett-Packard Research Laboratory, the
Laboratory for Computer Science of Edinburgh University, and IBM
(T.J. Watson Research Center and Almaden Research Center).
CONFERENCE PROGRAM
Sunday, June 4, 1989
Reception, 7:30pm-9:30pm
Monday, June 5, 1989
Session 1, 9am-noon
Chair: Dexter Kozen
9:00 Domains and Logics
Dana Scott (invited talk)
Coffee break, 10am-10:20am
10:20 Non-trivial Power Types Can't be Subtypes of Polymorphic Types
A. Pitts
10:45 Computational Lambda-Calculus and Monads
E. Moggi
11:10 Computing with Recursive Types
S. Cosmadakis
11:35 Stratified Polymorphism
D. Leivant
Lunch at noon
Session 2, 2pm-3:40pm
Chair: Phokion Kolaitis
2:00 Proof Theory and Semantics of Logic Programs
H. Gaifman and E. Shapiro
2:25 Negation as Refutation
M. Fitting
2:50 Fixpoint Extensions of First-order Logic and Datalog-like
Languages
S. Abiteboul and V. Vianu
3:15 Parthenon, a Parallel Theorem Prover for Non-Horn Clauses
S. Bose, E. Clarke, D. Long, and S. Michaylo
Coffee break, 3:40pm-4pm
Session 3, 4pm-5:40pm
Chair: David Israel
4:00 Type Inference for Record Concatenation and Multiple Inheritance
M. Wand
4:25 Computational Consequences and Partial Solutions of a Generalized
Unification Problem
A. Kfoury, J. Tiuryn, and P. Urzyczyn
4:50 How Complete is PER?
E. Robinson
5:15 Inheritance and Explicit Coercion
V. Breazu-Tannen, T. Coquand, C. Gunter, and A. Scedro
Session 4, 8pm-9pm
Chair: Vladimir Lifschitz
8 PM Emil Post's Contributions to Computer Science
Martin Davis (invited talk)
Tuesday, June 6, 1989
Session 5, 9am-noon
Chair: Vaughan Pratt
9:00 Towards Action-Refinement in Process Algebras
L. Aceto and M. Hennessy
9:25 A Complete Axiom System for Event Executions
J. Gischer
9:50 A Game-Theoretic Modelling of Concurrency
Y. Moschovakis
Coffee break, 10:15am-10:45am
10:45 Nets of Processes and Data Flow
A. Rabinovich and B. Trakhtenbrot
11:10 Axiomatizing Net Computations and Processes
P. Degano, J. Meseguer, and U. Montanari
11:35 A Probabilistic Powerdomain of Evaluations
C. Jones and G. Plotkin
Lunch at noon
Session 6, 2pm-3:40pm
Chair: Assaf Kfoury
2:00 Equality in Lazy Computation Systems
D. Howe
2:25 Extending the Lambda Calculus with Surjective Pairing is
Conservative
R. de Vrijer
2:50 Faithful Ideal Models for Recursive Polymorphic Types
M. Abadi, B. Pierce, and G. Plotkin
3:15 Structure and Representation in LF
R. Harper, D. Sannella, and A. Tarlecki
Visit to the Monterey Bay Aquarium, 7pm
(buses will be running between Asilomar and Monterey)
Wednesday, June 7, 1989
Session 7, 9am-noon
Chair: Rohit Parikh
9:00 The Mathematics of Nonmonotonic Reasoning
Vladimir Lifschitz (invited talk)
Coffee break, 10am-10:20am
10:20 On the Complexity of Epistemic Reasoning
M. Vardi
10:45 RI: A Logic for Reasoning with Inconsistency
M. Kifer and E. Lozinskii
11:10 Non-well-founded Sets Obtained from Ideal Fixed Points
M. Mislove, L. Moss, and F. Oles
11:35 Substitutional Recursion on Non-well-founded Sets
T. Fernando
Lunch at noon
Session 8, 2pm-3:40pm
Chair: Joxan Jaffar
2:00 A Sound and Complete Axiomatization of Operational Equivalence of
Programs with Memory
I. Mason and C. Talcott
2:25 A Fully Abstract Semantics for a Functional Language with Logic
Variables
R. Jagadeesan, P. Panangaden, and K. Pingali
2:50 Unified Algebras and Institutions
P. Mosses
3:15 Elf: A Language for Logic Definition and Verified Metaprogramming
F. Pfenning
Coffee break, 3:40pm-4pm
Session 9, 4pm-5:40pm
Chair: Melvin Fitting
4:00 Some Complexity Bounds for Dynamic Logic
A. Stolboushkin
4:25 On Simultaneously Determinizing and Complementing omega-Automata
A. Emerson and C. Jutla
4:50 mu-Definable Sets of Integers
R. Lubarsky
5:15 Compositional Model Checking
E. Clarke, D. Long, and K. McMillan
Business meeting, 8pm
Thursday, June 8, 1989
Session 10, 9am-10:40am
Chair: Martin Davis
9:00 Characterizing Complexity Classes by Higher Type Primitive
Recursive Definitions
A. Goerdt
9:25 Polynomially Graded Logic
A. Nerode, J. Remmel, and A. Scedro
9:50 ECC, an Extended Calculus of Constructions
Z. Luo
10:15 A Sufficient Condition for the Termination of the Direct Sum of
Term Rewriting Systems
A. Middeldorp
Lunch at noon
Conference Ends
CONFERENCE EVENTS
Sunday: an opening reception at Asilomar, at 7:30pm.
Tuesday: a visit to the Monterey Bay Aquarium, with copious drinks and
hors d'oeuvres, starting at 7pm; buses will be running between Asilomar
and downtown Monterey for the evening.
Wednesday: a barbecue at Asilomar at 6pm (weather permitting) and a
business meeting at 8pm.
LOCATION
Asilomar is situated on the tip of the Monterey Peninsula, overlooking
the Pacific Ocean, 120 miles south of San Francisco. Asilomar occupies
105 secluded acres of forest and dune, with pleasant pathways, a
swimming pool, and an exercise trail. Just over the dunes, Asilomar
State Beach stretches for over a mile. Monterey is an interesting
historical city--by California standards. Nearby, Carmel and Big Sur
offer quaint towns, pleasant beaches, and a rugged coastline. The
weather is mild, with temperatures in the 60's and 70's and a slight
chance of rain; the evenings can be cool, and we recommend bringing a
jacket.
TRANSPORTATION TO ASILOMAR
The following information held in January 1989.
Flying into Monterey:
This is the simplest way to reach Asilomar. United, SkyWest, USAir,
American Eagle, and others fly to Monterey from West Coast locations,
such as San Francisco and Los Angeles. A shuttle goes from the
Monterey airport to Asilomar, for $8.
Flying into San Jose or San Francisco:
If you fly into San Jose or San Francisco, we recommend you rent a
car. You may wish to share a car rental. We can provide you with a
list of other registrants whom you may contact about such sharing
arrangements. The San Jose airport is about one and a half hours away
from Monterey by car. The San Francisco airport is about two and half
hours away by car. In both cases, leave the airport on Highway 101
South and follow the driving directions below.
Public transportation is a cheaper but inconvenient alternative.
Greyhound buses go from the San Francisco airport to Monterey five
times per day, at 8:40am, 10:55am, 3:25pm, 7:10pm, and 10pm. The trip
lasts between three and four hours and costs $15. Asilomar can be
reached from the Greyhound station with a short cab ride or on local
buses.
Driving to Asilomar:
When arriving on Highway 101, turn west at Salinas onto Highway 68 and
proceed to the Asilomar gatepost at the end of the highway. When using
Route 1, turn west onto Highway 68 in Carmel, and proceed as above.
ACCOMMODATIONS
Accommodations are at Asilomar; the standard arrangement is room and
board from Sunday at 3pm to Thursday at noon. All meals are included,
from dinner on Sunday through lunch on Thursday. If you prefer
vegetarian meals, please indicate this preference on the room
reservation form. If you wish to spend other nights in the area,
Asilomar will attempt to provide accommodations or suggest suitable
hotels. Should you have any questions, you can contact Asilomar
directly at the address given on the reservation form or by phone at
(408) 372-8016.
Room availability is limited. WE URGE YOU TO REGISTER EARLY.
REGISTRATION AND ROOM RESERVATION
Please send the registration form and the room reservation form to the
addresses given, each with a corresponding check for the exact amount
in US dollars, by APRIL 26. Once they have both been received,
Asilomar will send you an acknowledgement letter. Cancellations after
May 4 are subject to $25 charges, both from Asilomar and from LICS.
After May 20, they are subject to forfeiture of all fees.
LICS REGISTRATION FORM
Please send this form--along with a check payable to the 4th Symposium
on Logic in Computer Science--to
Martin Abadi
Digital Equipment Corporation
Systems Research Center
130 Lytton Avenue
Palo Alto, CA 94301
USA
(Attn. LICS registration)
Type or print:
Name_________________________________________________________________
Affiliation__________________________________________________________
Street Address_______________________________________________________
City________________________ State______________________ Zip_________
Country______________________________________ Phone__________________
E-mail_______________________________________________________________
Before April 26 After April 26
Member or author $150 $210
Non-member $210 $270
Full-time student $50 $75
Registration fees include conference proceedings, the opening
reception, and the Aquarium excursion. The member or author rate is
for members of the IEEE Computer Society, the ACM, the EATCS, the ASL,
the program committee, and the organizing committee, and for authors
of presented papers. If you qualify for the rate, please indicate
how:______________________________
LICS ROOM RESERVATION FORM
Please send one form per person--along with a check payable to
Asilomar Conference Center--to
Asilomar Conference Center
Post Office Box 537
Pacific Grove, CA 93950
USA
For additional information, call Asilomar at (408) 372-8016. Type or
print:
Name_________________________________________________________________
Street Address_______________________________________________________
City________________________ State______________________ Zip_________
Country______________________________________ Phone__________________
Check which kind of accommodation you would like to reserve. You may
indicate first and second choices:
Single Double 3/4-room Youth (2--17yrs.)
Deluxe $380 $220 $200 $135
Historic $240 $200 $200 $135
Rustic $220 $180 $180 $135
In historic and rustic rooms, the youth rate applies with one adult or
at least two children per room; in deluxe rooms, it applies with two
adults per room. Please indicate age of children________________
____ Male ____ Female ____ Smoker ____ Non-smoker
____ Vegetarian
____ Pick me a roommate. ____ I'll room with_______________________.
∂28-Feb-89 0733 @Score.Stanford.EDU:chandler@polya.Stanford.EDU Today's Faculty Lunch
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 28 Feb 89 07:33:40 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Tue 28 Feb 89 07:31:53-PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA24742; Tue, 28 Feb 89 07:30:27 -0800
Date: Tue, 28 Feb 1989 7:30:25 PST
From: "Joyce R. Chandler" <chandler@polya.stanford.edu>
To: faculty@score, bureaucrats@score, staff-rep@score
Subject: Today's Faculty Lunch
Message-Id: <CMM.0.87.604683025.chandler@polya.stanford.edu>
Just to remind you ... Steve Jobs from NeXT will be our guest today at the
faculty lunch....MJH-146 at 12:15.
∂28-Feb-89 0816 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu The ?What Exit? seminar series
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 28 Feb 89 08:16:34 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA25909; Tue, 28 Feb 89 08:14:14 -0800
Message-Id: <8902281614.AA25909@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Tue, 28 Feb 89 08:14:38 PST
Received: by BYUADMIN (Mailer R2.01A) id 6731; Tue, 28 Feb 89 09:12:11 MST
Date: Tue, 28 Feb 89 09:58:25 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Joan Feigenbaum <jf@RESEARCH.ATT.COM>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Joan Feigenbaum <jf@RESEARCH.ATT.COM>
Subject: The ?What Exit? seminar series
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
This is the final announcement of the first meeting of
THE ?WHAT EXIT? SEMINAR SERIES,
sponsored by DIMACS, the new NSF Science and Technology Center
for DIscrete MAth and Computer Science.
Tentatively, we are planning to sponsor a series of
day-long seminars, each organized around a specific topic
in discrete math or theoretical computer science. The
participating institutions are Rutgers, Princeton, Bellcore,
and AT&T Bell Labs, and the location of the meetings will
rotate among these four. The first seminar will take place
at Princeton.
*****************************************************************
Topic: Approximation Algorithms for NP-Complete Problems
Date: Friday, March 3, 1989
Time of first talk: 10:30 a.m.
Location: Princeton
Talks:
(1) Ravi Kannan (CMU):
Sampling from a Convex Set and Volume Computation
This talk will describe a random polynomial-time algorithm that
finds the volume of any convex set to any desired degree of
accuracy. The algorithm uses a random walk to pick a point in a
convex set with nearly uniform distribution. It will be easy to
see that the steady state distribution of the Markov chain is
uniform; the bulk of the effort is spent in proving that the Marko
chain "mixes rapidly", i.e., approaches the steady state
distribuition in a polynomial number of steps. This is done using
some recent results on isoperimetry for general Reimannian
manifolds.
This is joint work with M. Dyer and A. Frieze.
(2) David Shmoys (MIT):
Using Linear Programming in the Design and Analysis of
Approximation Algorithms
One of the oldest heuristics for solving hard combinatorial
optimization problems is as follows: formulate the problem
as an integer program, solve the linear relaxation, and then
round the solution to a nearby integer solution. Alternatively,
linear programming may be used to analyze the performance of
more combinatorially defined procedures, by relating the solution
value delivered by the procedure to the value of the linear programming
relaxation, in addition to proving a result relating the integer
and fractional optima.
We will give an example of both types of results, as applied
to approximating (1) a certain scheduling problem within a fixed bound,
and (2) the traveling salesman problem with triangle inequality.
This is joint work with Jan Karel Lenstra, Eva Tardos and David
Williamson.
(3) Mihalis Yannakakis (AT&T-Bell Labs):
Approximation and Complexity Classes
There is a number of common optimization problems
which can be approximated easily with some constant ratio,
but for which it has proved very difficult to go
beyond it and either find a polynomial-time
approximation scheme or show that none exists.
We define some classes which contain problems of this type.
Several natural problems are complete under a kind
of reduction that preserves approximability.
Such a complete problem has a polynomial-time approximation
scheme iff the whole class does.
________________________________________________________________
Directions:
Park in Lot 21, which you reach as follows: Assume you start
on Nassau Street (a.k.a. Rt. 27) going southwest (i.e., away from
New Brunswick, towards Trenton). Turn left on Washington Road
(at a light). Drive on Washington past Fine Hall and Palmer
Stadium. Turn left onto Faculty Road (at a light). If you
get to a bridge, you have gone too far. The first real street
onto which you can turn left off Faculty is Fitzrandolf. (There
is a previous left, but it is into an alley as opposed to a real
street.) Take that left, and Lot 21 is on your left.
The talks will take place in the Woodrow Wilson School, on the
corner of Washington Street and Prospect Avenue. To get there
from Lot 21, go back to Fitzrandolf and walk in the same direction
in which you were driving before you entered the lot. Go left
on Prospect and continue until Washington. The Woodrow Wilson
School is a large white building.
It takes 10 to 15 minutes to walk from Lot 21 to the Woodrow
Wilson School. So allow enough time!
∂28-Feb-89 0854 @Score.Stanford.EDU:nilsson@Tenaya.stanford.edu fac mtg
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 28 Feb 89 08:54:30 PST
Received: from Tenaya.stanford.edu by SCORE.STANFORD.EDU with TCP; Tue 28 Feb 89 08:53:07-PST
Received: by Tenaya.stanford.edu (5.59/25-eef) id AA13310; Tue, 28 Feb 89 08:49:39 PDT
Date: Tue, 28 Feb 89 08:49:39 PDT
From: Nils Nilsson <nilsson@Tenaya.stanford.edu>
Message-Id: <8902281649.AA13310@Tenaya.stanford.edu>
To: tenured@score
Cc: bureaucrat@polya
Subject: fac mtg
I think the best way to handle our two faculty meetings is to try to
combine them and have just one meeting tomorrow, Wednesday, March 1 at
4:15 promptly. I apologize to those who want to attend the systems
seminar. The faculty meeting will begin with all associate and full
professors only (plus student representatives). We will consider the
case of Mike Clancy's appt as an assoc professor (teaching). George
Wheaton, chair of the committee that found Clancy, will present
the case briefly, but please do read the letters we have on Clancy.
Next, we will excuse the assoc profs, and move smartly on to consider
a promotion case previously mentioned to the full professors. Jeff
Ullman (who will be taking just one day off from his sabbatical at
Princeton to visit Stanford on March 1) will present the case. (That's
why we are having this meeting on a Wednesday instead of on our
regular Tuesday time slot.)
I realize that some will not be able to make this meeting (e.g. Terry
Winograd has a previously scheduled under-graduate committee meeting
at that time). For those who cannot attend, please:
1) read the letters on the candidates
2) talk to those who did attend
3) give Betty Scott your vote
(Since the Clancy appt impacts strongly on undergraduate matters,
perhaps the u.g. committee might want to take a few minutes during
their meeting to consider the Clancy case and the letters on him and
then communicate their vote to Betty Scott.)
Thanks for your patience with this very important aspect of our
departmental life. We will be featuring cookies at the meeting!
-Nils
∂28-Feb-89 0956 X3J13-mailer agenda items, registration
Received: from lucid.com by SAIL.Stanford.EDU with TCP; 28 Feb 89 09:56:46 PST
Received: from challenger ([192.9.200.17]) by heavens-gate.lucid.com id AA01016g; Tue, 28 Feb 89 09:50:16 PST
Received: by challenger id AA15462g; Tue, 28 Feb 89 09:45:48 PST
Date: Tue, 28 Feb 89 09:45:48 PST
From: Jan Zubkoff <jlz@lucid.com>
Message-Id: <8902281745.AA15462@challenger>
To: x3j13@sail.stanford.edu
Subject: agenda items, registration
Let me know if you have anything to add to the March agenda, how much time
you'll need and what day you'd prefer. I'll be away the week before the X3J13
meeting so please let me know by March 15.
If you have anything to be voted on, please mail documents by March 6 to avoid
the two week rule.
Please let me know of any changes to the registration list below.
X3J13 Attendee Information
02/28/89
Name Institute Paid L1 L2 L3
David Bartley TI -0- y y y
Paul Beiser HP -0- y y y
Mary Boelk Johnson Controls, Inc. -0- y y y
Kathy Chapman DEC -0- - - -
Jeff Dalton University of Ediburgh -0- y y y
Patrick Dussud Lucid, Inc. -0- y y y
Dick Gabriel Lucid, Inc. -0- y y y
David Gray TI -0- y y y
George Hadden Honeywell S&RC -0- y y y
Masayuki Ida Aoyama Gakuin University -0- y y y
Gregor Kiczales Xerox Corp. -0- y y y
Aaron Larson Honeywell S&RC -0- y y y
Kevin Layer Franz, Inc. 50.00 y y y
Thom Linden IBM 50.00 y y y
David Loeffler MCC -0- y y y
Sandra Loosemore University of Utah -0- y y y
Barry Margolin Thinking Machines -0- y y y
Bob Mathis CONTEL -0- y y y
David Moon Symbolics -0- y y y
Cris Perdue Sun Microsystems -0- y y y
Dan Pierson Encore Computer -0- y y y
Kent Pitman Symbolics -0- y y y
Guy Steele Thinking Machines -0- y y y
Walter van Roggen DEC -0- y y y
JonL White Lucid, Inc. -0- y y y
Jan Zubkoff Lucid, Inc. -0- y y y
∂28-Feb-89 1128 misha@polya.Stanford.EDU reminder: AFLB TODAY!
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 28 Feb 89 11:28:22 PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA05518; Tue, 28 Feb 89 11:24:59 -0800
Date: Tue, 28 Feb 89 11:24:59 -0800
From: Michael Kharitonov <misha@polya.Stanford.EDU>
Message-Id: <8902281924.AA05518@polya.Stanford.EDU>
To: aflb-all@polya.Stanford.EDU
Subject: reminder: AFLB TODAY!
Next AFLB will be TODAY, February 28, 4:15pm
in the usual room. The talk will be by Serge Plotkin from Stanford:
SUBLINEAR-TIME PARALLEL ALGORITHMS FOR MATCHING AND RELATED PROBLEMS
Serge Plotkin
We present the first sublinear-time deterministic parallel algorithms for
bipartite matching and several related problems, including maximal
node-disjoint paths, depth-first search, and flows in zero-one networks. Our
results are based on a better understanding of the combinatorial structure of
the above problems, which leads to new algorithmic techniques. In particular,
we show how to use maximal matching to extend, in parallel, a current set of
node-disjoint paths and how to take advantage of the parallelism that arises
when a large number of nodes are ``active'' during an execution of a
push/relabel network flow algorithm.
We also show how to apply our techniques to design parallel algorithms for the
weighted versions of the above problems. In particular, we present
sublinear-time deterministic parallel algorithms for finding a minimum-weight
bipartite matching and for finding a minimum-cost flow in a network with
zero-one capacities, if the weights are polynomially bounded integers.
Joint work with A. Goldberg and P. Vaidya.
∂28-Feb-89 1347 X3J13-mailer cs proposal
Received: from IBM.COM ([192.5.58.7]) by SAIL.Stanford.EDU with TCP; 28 Feb 89 13:46:58 PST
Date: Tue, 28 Feb 89 12:46:45 PST
From: Thom Linden <baggins@IBM.com>
To: Common Lisp mailing <x3j13@sail.stanford.edu>
Message-ID: <890228.124645.baggins@almvma>
Subject: cs proposal
I'll be away from the office next week (6-9 March) and won't
be able to respond to any comments on the proposal before
13 March. I've received one straw vote response todate.
∂01-Mar-89 0611 @Score.Stanford.EDU:op@polya.Stanford.EDU The rec.humor.funny controversy
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 1 Mar 89 06:11:14 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Wed 1 Mar 89 06:08:14-PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA06224; Wed, 1 Mar 89 06:06:21 -0800
From: Oren Patashnik <op@polya.Stanford.EDU>
Sender: Oren Patashnik <op@polya.stanford.edu>
Date: Wed, 1 Mar 1989 6:06:19 PST
To: hk.dxk@forsythe, HK.GRH@Forsythe, s.street@macbeth, gq.vvn@forsythe,
g.gorin@macbeth, hk.ixb@forsythe, hk.jjs@forsythe, siegman@sierra,
cr.apc@forsythe, faculty@score, su-etc@score
Subject: The rec.humor.funny controversy
Reply-To: op@polya.stanford.edu
Message-Id: <CMM.0.88.604764379.op@polya.stanford.edu>
The students of the Computer Science Department passed the resolution
below by a vote of 128 to 4, conducted via electronic mail on February
27th and 28th, with the identities of the voters kept confidential.
The vote totals represent about 50% of all PhD students, 20% of all
Master's students, and 20% of all undergraduate majors in the
department. Three of the four dissenting voters thought that the
rec.humor.funny newsgroup should not be reinstated. Several other
students chose not to vote because, although they agreed that
rec.humor.funny should be reinstated, they couldn't support other
parts of the resolution. About 20 of the "ayes" agreed with the
resolution as passed, but would have preferred it to include a summary
of the rebuttals of AIR's arguments for the removal of rec.humor.funny;
those rebuttals appeared on the su.etc newsgroup. And we have no way
of estimating how many students didn't see the proposed resolution
in time to vote on it. Here's the resolution.
----------------------------------------------------------------------
A CALL FOR THE FREE EXCHANGE OF IDEAS
Since we students in the Computer Science Department are, as a group,
the segment of the Stanford community most familiar with the
"newsgroup" medium, we have a responsibility to comment on the
controversy.
In the short term we have little at stake in the removal from AIR
computers of rec.humor.funny, since that newsgroup remains uncensored
on our department's computers. But in the long term we have much at
stake, for the newsgroups constitute an increasingly important source
of information and means of communication; any administrative attempts
to limit the ideas they contain pose a threat to academic freedom.
We find it particularly distressing that an institution so committed
to the free exchange of ideas should resort to suppressing them.
The issue that sparked the present controversy was offensive speech.
We believe that each of us must be sensitive to the feelings of
others, whether we express ourselves through the newsgroups or over
the phone or face to face. Inevitably, however, where there is free
speech, someone will take offense. Yet the newsgroups provide a
uniquely effective forum for rebutting offensive speech. The su.etc
newsgroup, for instance, has a history of showering the wrath of an
outraged readership onto transgressors of accepted community standards.
Offensive thoughts, ultimately, are best squelched by their failure to
survive in the marketplace of ideas.
We believe that AIR and SDC should reinstate rec.humor.funny.
∂01-Mar-89 0758 @Score.Stanford.EDU:chandler@polya.Stanford.EDU Today's Faculty Meeting
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 1 Mar 89 07:58:00 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Wed 1 Mar 89 07:56:50-PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA08121; Wed, 1 Mar 89 07:55:24 -0800
Date: Wed, 1 Mar 1989 7:55:21 PST
From: "Joyce R. Chandler" <chandler@polya.stanford.edu>
To: tenured@score
Cc: bureaucrats@polya
Subject: Today's Faculty Meeting
Message-Id: <CMM.0.87.604770921.chandler@polya.stanford.edu>
I sent out a message yesterday announcing that the faculty meeting would be
held today at 2:30 in MJH-146. That information was incorrect.
Today's faculty meeting will be held at 2:30 in MJH-220. Sorry for the
confusion.
∂01-Mar-89 0802 @Score.Stanford.EDU:chandler@polya.Stanford.EDU I can't believe I did that.....
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 1 Mar 89 08:02:48 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Wed 1 Mar 89 08:01:40-PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA08203; Wed, 1 Mar 89 08:00:15 -0800
Date: Wed, 1 Mar 1989 8:00:13 PST
From: "Joyce R. Chandler" <chandler@polya.stanford.edu>
To: tenured@score
Cc: bureaucrats@polya
Subject: I can't believe I did that.....
Message-Id: <CMM.0.87.604771213.chandler@polya.stanford.edu>
Now that I've given you the correct location, I've given you the incorrect
time. Not 2:30...........but 4:15.
∂01-Mar-89 1109 X3J13-mailer Section 1.7
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 1 Mar 89 11:09:32 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
id AA00298; Wed, 1 Mar 89 11:07:25 PST
Message-Id: <8903011907.AA00298@decwrl.dec.com>
Received: by decwrl.dec.com (5.54.5/4.7.34)
for x3j13@sail.stanford.edu; id AA00298; Wed, 1 Mar 89 11:07:25 PST
From: chapman%aitg.DEC@decwrl.dec.com
Date: 1 Mar 89 07:23
To: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
Subject: Section 1.7
%%Language Extensions
[{\it This section is dependent upon the passage or failure of the following
issues: EXTENSIONS-POSITION, EXTRA-SYNTAX, EXTRA-OPTIONAL-KEYWORD-ARGUMENTS,
UNSPECIFIED-DATATYPTES, UNSOLICITED-MESSAGES, MACRO-AS-FUNCTION, and
EXTRA-RETURN-VALUES. When they have passed or failed, this section
will be altered.}]
A language extension is
any implementation-supplied {\word tool} that isn't explicitly defined
in this standard. This includes facilities added to {\word tools} defined
in this standard.
An implementation may have extensions,
provided they do not alter the behavior of conforming code and
provided they are not explicitly prohibited by this standard.
From Common Lisp's point of view, defining an extension
refers to a facility's initial definition.
Whether an implementation permits redefinition of an extension is between that
implementation and its users and beyond the scope of this standard to
specify.
If this standard says that ``the results are unspecified", and an
implementation specifies the results, this an extension in the
sense that if the correct behavior of a program depends on the results,
only implementations with the same extension will execute the program
correctly.
In places where the standard says that ``an implementation may be extended",
this implies that a conforming, but probably non-portable, program can
be written using the implementation's extension.
%Following will be included if the proposal that states this is passed.
%An implementation is required to have a way to disable its extensions, so
%that a programmer can be told when he is using a feature that might
%affect his program's portability.
The following list contains specific guidance to implentations
concerning certain types of extensions.
\beginlist
\itemitem{\bf Additional syntax}
An implementation
is not allowed to extend {\word macros} and {\word special forms} to take
additional syntax not specified in this standard.
\itemitem{\bf Extra optional or named arguments}
Unless explicitly allowed in this standard,
implementations are not allowed to include definitions
of {\word functions} with extra optional or named arguments
with system-dependent meanings.
When extra optional or named arguments are allowed by this
standard, they will be annotated as follows:
{\word functions} that may be
extended to take implementation-specific optional arguments are indicated
by {\tt &rest ignore} in their argument list.
{\word Functions} that may be extended
to take additional keyword parameters are indicated by {\tt &allow-other-keys}.
The goal is not to outlaw any extensions currently offered by
implementors, but to make the range of extensions to {\word functions}
defined in
this standard well documented in this standard. Implementations that want to
extend {\word functions} that aren't explicitly
allowed to be extended can instead
shadow them.
% or as follows, if this proposal passes.
%Alternate proposal: NOT-IN-STANDARD-PACKAGE
%
%Like NO-EXCEPT-AS-ALLOWED, except that an implementation may always
%provide additional named arguments to a function if the names are not in
%an implementation-specific package (the list of these currently includes
%the LISP, USER, and KEYWORD packages).
%
\itemitem{\bf Extra return values}
Unless it is explicitly allowed in this standard,
an implementation is
not allowed to return extra values from {\word functions}
defined by this standard.
\itemitem{\bf Function behavior on non-standard data types}
An implementation does not define the behavior of {\word functions}
on data types not explicitly permitted by this standard.
\itemitem{\bf Unsolicited messages}
Unsolicited messages, such as garbage collector notifications
and autoload heralds, if
they are produced by an implementation, should not be directed to
@var[standard-output] or @var[error-output]\rm.
If an implementation produces them, they
may be produced on a {\datatype stream}
that is not shared with any of the {\datatype streams}
that a user might redefine or redirect. This means that an
implementation is allowed to
direct such notifications to @var[terminal-io] since a user may not redirect
@var[terminal-io]\rm.
Messages such as progress reports from {\function load} and
{\function compile} are solicited,
and are not covered here.
\itemitem{\bf Implementation of macros and special forms}
Operators that are defined as {\word macros} or
{\word special forms} may be defined as {\word
functions}
instead if the semantics can be preserved.
%or as follows:
%Alternate Proposal: MACRO-AS-FUNCTION:STATUS-QUO
%
%The standard will remain silent on the issue of whether or not is
%is legal for an implementation to implemention "macros" and
%"special forms" as functions.
%or as follows:
%Alternate Proposal: MACRO-AS-FUNCTION:DISALLOW
%
%A conforming implementation does not define "macros" and "special forms"
%as functions.
\endlist
∂01-Mar-89 1111 X3J13-mailer Section 5.2
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 1 Mar 89 11:10:51 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
id AA00392; Wed, 1 Mar 89 11:08:46 PST
Message-Id: <8903011908.AA00392@decwrl.dec.com>
Received: by decwrl.dec.com (5.54.5/4.7.34)
for x3j13@sail.stanford.edu; id AA00392; Wed, 1 Mar 89 11:08:46 PST
From: chapman%aitg.DEC@decwrl.dec.com
Date: 1 Mar 89 07:25
To: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
Subject: Section 5.2
%% Input/Output
It is possible to perform I/O to any device physically connected to
the machine on which the @xlisp\ system is running.
Some implementations, however, may not support the interfaces
to all possible physical devices. Some external
data sources
are treated specially in @clisp. The following sections describe the file
system interface, binary and character I/O, and the {\function load}ing process.
\beginsubSection{Files}
%% 23.0.0 5
@clisp\ assumes that files are named, that given a name a
{\datatype stream} can be constructed that
connects to a file of that name, and that the
names can be fit into a {\datatype pathname}.
%% 23.0.0 6
%Facilities are provided for manipulating {\datatype pathnames},
%for creating
%{\datatype streams}
%connected to files, and for manipulating the file system
%through {\datatype pathnames} and {\datatype streams}.
%Left out.
%% 23.1.0 1
In general, different
file systems have different naming formats for files.
There are two ways to represent file names:
namestrings, which are {\datatype strings}
in the implementation-dependent form
customary for the file system, and {\datatype pathnames}, which are
{\word objects} that represent file names in an implementation-independent
way. {\word Functions}
are provided to convert between these two representations,
and all manipulations of files can be expressed in machine-independent
terms by using {\datatype pathnames}. See ``Pathname''.
%% 23.1.0 2
%In order to allow code to operate in a network environment
%that may have more than one kind of file system, the pathname facility
%allows a file name to specify which file system (called the
%host) is to be used.
%Left out.
%%% 23.1.1 11
%Parsing is the conversion of a namestring
%into a {\datatype pathname}. This operation is
%implementation-dependent, because the format of namestrings
%is implementation-dependent.
%
%Merging takes a {\datatype pathname} with missing components
%and supplies values for those components from a source of defaults.
%This operation is also implementation-dependent because the
%set of valid {\datatype pathnames} that may result from merging is
%implementation-dependent.
%% 23.2.0 1
The basic operations for opening a file are {\function open} and
{\function with-open-file}. The basic operation for closing a file
is {\function close}.
Rules concerning file I/O follow:
\beginlist
%% 22.2.1 2
\itemitem{\bf Eof-error-p}
{\arg Eof-error-p} in I/O {\word forms}
controls what happens if input is from a file (or any other
input source that has a definite end) and the end of the file is reached.
If {\arg eof-error-p} is true (the default), an error will be signalled
at end of file. If it is false, then no error is signalled, and instead
the {\word form} returns {\arg eof-value}.
%% 22.2.1 4
\itemitem{\bf Recursive-p}
If {\arg recursive-p} is
supplied and not @nil\rm, it specifies that
this {\word form}
call is not a {\word top level} call to {\function read} but an embedded call,
typically from the {\word function} for a macro character.
It is important to distinguish such recursive calls for three reasons.
%% 22.2.1 5
\beginlist
\itemitem{1.}
A {\word top level} call establishes the context within which the
{\tt \#n=} and {\tt \#n\#} syntax is scoped. Consider, for example,
the expression
@lisp
(cons '#3=(p q r) '(x y . #3#))
@endlisp
If the single quote macro character were defined in this way:
@lisp
(set-macro-character #@bsl\ '
#'(lambda (stream char)
(declare (ignore char))
(list 'quote (read stream))))
@endlisp
then the expression could not be read properly, because there would be no way
to know when {\function read} is called recursively by the first
occurrence of @f['] that the label @f[\#3=] would be referred to
later in the containing expression.
There would be no way to know because {\function read}
could not determine that it was called by a macro character function
rather than from {\word top level}. The correct way to define the single quote
macro character uses {\arg recursive-p}:
@lisp
(set-macro-character #@bsl\ '
#'(lambda (stream char)
(declare (ignore char))
(list 'quote (read stream t nil t))))
@endlisp
%% 22.2.1 6
\itemitem{2.}
A recursive call does not alter whether the reading process
is to preserve whitespace or not (as determined by whether the
{\word top level} call was to {\function read} or {\function
read-preserving-whitespace}).
Suppose again that single-quote had the first, incorrect, macro character
definition shown above. Then a call to {\function read-preserving-whitespace}
that read the expression @f['foo ] would fail to preserve the space
character following the symbol @f[foo] because the single-quote
macro character function calls {\function read},
not {\function read-preserving-whitespace},
to read the following expression (in this case @f[foo]\rm).
The correct definition, which passes the value @true\ for {\arg recursive-p}
to {\function read}, allows the {\word top level} call to determine
whether whitespace is preserved.
%% 22.2.1 8
\itemitem{3.}
When end-of-file is encountered and the {\arg eof-error-p} argument
is not @nil\rm, the kind of error that is signalled may depend on the value
of {\arg recursive-p}. If {\arg recursive-p}
is not @nil\rm, then the end-of-file
is deemed to have occurred within the middle of a printed representation;
if {\arg recursive-p} is @nil\rm, then the end-of-file may be deemed to have
occurred between {\word objects} rather than within the middle of one.
\endlist
\endlist
\endsubSection%{Files}
\beginsubSection{Character and Binary Input/Output}
Figure {\chapno--\the\capno} lists reader and printer control variables.
\boxfig
{\dimen0=.75pc
\tabskip \dimen0 plus .5 fil
\halign to \hsize {#\hfil\tabskip \dimen0 plus 1fil\hfil\tabskip \dimen0 plus
1fil\hfil\cr
\noalign{\vskip -9pt}
@var[read-base] & @var[read-suppress] & @var[print-escape] \cr
@var[print-pretty] & @var[print-circle] & @var[print-base] \cr
@var[print-radix] & @var[print-case] & @var[print-gensym] \cr
@var[print-level] & @var[print-length] & @var[print-array] \cr
@var[read-default-float-format] & & \cr
\noalign{\vskip -9pt} }}
\caption{Reader and printer control variables}
\endfig
Figure {\chapno--\the\capno} lists character and binary input
stream {\word tools}.
\boxfig
{\dimen0=.75pc
\tabskip \dimen0 plus .5 fil
\halign to \hsize {#\hfil\tabskip \dimen0 plus 1fil\hfil\tabskip \dimen0 plus
1fil\hfil\cr
\noalign{\vskip -9pt}
{\tt read }&{\tt read-preserving-whitespace }&{\tt read-delimited-list }\cr
{\tt read-line }&{\tt read-char }&{\tt unread-char }\cr
{\tt peek-char }&{\tt listen }&{\tt read-char-no-hang }\cr
{\tt clear-input }&{\tt read-from-string }&{\tt parse-integer }\cr
{\tt read-byte }&{\tt }&{\tt }\cr
\noalign{\vskip -9pt} }}
\caption{Character and binary input tools}
\endfig
Figure {\chapno--\the\capno} lists character and binary output
stream {\word tools}.
\boxfig
{\dimen0=.75pc
\tabskip \dimen0 plus .5 fil
\halign to \hsize {#\hfil\tabskip \dimen0 plus 1fil\hfil\tabskip \dimen0 plus
1fil\hfil\cr
\noalign{\vskip -9pt}
{\tt write }&{\tt prin1 }&{\tt print }\cr
{\tt pprint }&{\tt princ }&{\tt write-to-string }\cr
{\tt prin1-to-string }&{\tt princ-to-string }&{\tt write-char }\cr
{\tt write-string }&{\tt write-line }&{\tt terpri }\cr
{\tt fresh-line }&{\tt finish-output }&{\tt force-output }\cr
{\tt clear-output }&{\tt write-byte }&{\tt format }\cr
\noalign{\vskip -9pt} }}
\caption{Character and binary output tools}
\endfig
{\function y-or-n-p} and
{\function yes-or-no-p} are used to query the user.
%% 2.2.2 6
When the character {\tt \#{\char '134}Newline} is written to an output file,
the implementation must take the appropriate action
to produce a line division. This might involve writing out a
record or translating {\tt \#{\char '134}Newline} to a CR/LF sequence.
\endsubSection%{Character and Binary Input/Output}
\beginsubSection{Loading}
%% 23.4.0 1
To {\function load} a file is to treat its contents as code and execute
that code. The file may contain character data or binary data. If it is
charater data, {\function load}ing
is accomplished essentially by sequentially reading
the {\word forms} in the file, evaluating each immediately after it is read.
%% 23.4.0 2
{\function Load}ing a compiled
(``fasload'') file is similar, except that the file does not
contain text but rather pre-digested expressions created by the
compiler that can be {\function load}ed more quickly.
See ``Compilation''.
\endsubSection%{Loading}
∂01-Mar-89 1136 X3J13-mailer Section 1.5
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 1 Mar 89 11:36:49 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
id AA02677; Wed, 1 Mar 89 11:34:49 PST
Message-Id: <8903011934.AA02677@decwrl.dec.com>
Received: by decwrl.dec.com (5.54.5/4.7.34)
for x3j13@sail.stanford.edu; id AA02677; Wed, 1 Mar 89 11:34:49 PST
From: chapman%aitg.DEC@decwrl.dec.com
Date: 1 Mar 89 07:23
To: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
Subject: Section 1.5
%%Compliance
[{\it If the issue, CONFORMANCE-POSITION, undergoes radical modification
before passage, this section will change. Therefore, passage of this
section and CONFORMANCE-POSITION go hand in hand.}]
A conformity clause is a statement that is not part of
the language definition, but specifies requirements for compliance with the
language standard.
The standard presents the syntax and semantics to be implemented by
a conforming implementation.
A conforming implementation is an implementation
that processes
code that is written
in the language defined by the language standard, and
that obeys all the conformity clauses for
implementations written in the language standard.
Requirements for a conforming implementation:
\beginlist
\itemitem{1.} A conforming implementation is one that correctly
translates and executes conforming code.
\itemitem{2.} A conforming implementation
is one that rejects all
code that contains errors whose detection is required by this standard.
\itemitem{3.} A conforming implementation is one that contains no
variation except where the language standard permits, and specifies all
such permitted variations in the manner prescribed by this standard.
See ``Language Extensions''.
\itemitem{4.} A conforming implementation includes the following
in its accompanying documentation:
\beginlist
\itemitem{a.} A list of all definitions or values for the
implementation-defined features in the standard language.
See ``Implementation-defined Features''.
\itemitem{b.} A list of all the features of this implementation
which are not part of the standard language but which could unexpectedly
interact with user code, including all package names
and nicknames the implementation
uses.
\itemitem{c.} A statement of conformity, giving the complete reference to
this standard.
\endlist
\itemitem{5.} A conforming implementation shall meet the technical
specification in its accompanying documentation when related to the
requirements of this standard.
\itemitem{6.} A conforming implementation shall treat an
error as is outlined in ``Errors''.
\endlist
The basic test for conformance will be that code written to the letter
of the standard will run in all conforming implementations.
The basic rules are as follows:
\beginlist
\itemitem{1.}
Conforming code uses only the syntax specified in the standard.
\itemitem{2.}
Conforming code is written in only the sequence specified in the standard.
\itemitem{3.}
Conforming code is written using only the {\word functions}, {\word macros},
{\word special forms}, variables, and constants specified in this standard.
Use of language extensions to the syntax specified
in the standard, or dependence upon the existence of those extensions,
is not allowed in conforming code.
\itemitem{3.}
The definitions of all other {\word functions}, {\word macros}, or
{\datatype symbols}
that are used by the code must accompany
the code.
\itemitem{4.}
Conformance will not be machine-checkable.
\endlist
Portable code is required to produce equivalent results and
observable side effects in all conforming implementations.
It is possible for conforming code to
run in all conforming implementations, but to have allowable
implementation-dependent behavior that could make it non-portable.
∂01-Mar-89 1138 X3J13-mailer Section 1.6
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 1 Mar 89 11:38:01 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
id AA02703; Wed, 1 Mar 89 11:35:58 PST
Message-Id: <8903011935.AA02703@decwrl.dec.com>
Received: by decwrl.dec.com (5.54.5/4.7.34)
for x3j13@sail.stanford.edu; id AA02703; Wed, 1 Mar 89 11:35:58 PST
From: chapman%aitg.DEC@decwrl.dec.com
Date: 1 Mar 89 07:23
To: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
Subject: Section 1.6
%%Implementation-defined Features
The following sections contain lists of implementation-dependent
language characteristics.
For more
information about each of these implementation dependencies, see
Chapters 6 and 7 for the description of the {\word tool} being qualified.
\beginsubSection{Values}
%%\item{2.}
\beginlist
\item{1.}
An implementation determines the initial values of the {\word tools}
in Figure {\chapno--\the\capno}.
\boxfig
{\dimen0=.75pc
\tabskip \dimen0 plus .5 fil
\halign to \hsize {#\hfil\tabskip \dimen0 plus 1fil\hfil\cr
\noalign{\vskip -9pt}
{\tt boole-clr}&{\tt boole-set}\cr
{\tt boole-1 }& {\tt boole-2}\cr
{\tt boole-c1}&{\tt boole-c2}\cr
{\tt boole-and}&{\tt boole-xor }\cr
{\tt boole-eqv}&{\tt boole-nand}\cr
{\tt boole-nor }&{\tt boole-orc1}\cr
{\tt boole-orc2}& \cr
& \cr
{\tt array-dimension-limit }&{\tt array-rank-limit }\cr
{\tt array-total-size-limit }&{\tt call-arguments-limit }\cr
{\tt multiple-values-limit}&{\tt lambda-parameters-limit }\cr
{\tt char-bits-limit }&{\tt char-code-limit }\cr
& \cr
@var[features] & {\tt internal-time-units-per-second} \cr
& \cr
{\tt most-positive-fixnum }&{\tt most-negative-fixnum } \cr
{\tt most-positive-short-float }&{\tt least-positive-short-float }\cr
{\tt most-positive-double-float }&{\tt least-positive-double-float }\cr
{\tt most-positive-long-float }&{\tt least-positive-long-float }\cr
{\tt most-positive-single-float }&{\tt least-positive-single-float }\cr
{\tt most-negative-short-float }&{\tt least-negative-short-float }\cr
{\tt most-negative-single-float }&{\tt least-negative-single-float }\cr
{\tt most-negative-double-float }&{\tt least-negative-double-float }\cr
{\tt most-negative-long-float }&{\tt least-negative-long-float }\cr
{\tt short-float-negative-epsilon }&{\tt single-float-negative-epsilon }\cr
{\tt double-float-negative-epsilon }&{\tt long-float-negative-epsilon }\cr
& \cr
@var[load-verbose] & @var[print-array] \cr
@var[print-pretty] &@var[random-state] \cr
@var[read-default-float-format] & \cr
\noalign{\vskip -9pt}
}}
\caption{Implementation-defined values}
\endfig
%%\item{42.}
\item{2.} The implementation determines the defaults for the
@Kwd[rehash-size] and
@Kwd[rehash-threshold]
arguments for
{\function make-hash-table}.
%%\item{44.}
\item{3.} The implementation determines the way in which a
{\datatype sequence} is initialized if an @Kwd[initial-element]
argument is not supplied. See {\function make-sequence}.
The implementation determines the way in which a
{\datatype string} is initialized if an @Kwd[initial-element]
argument is not supplied. See {\function make-string}.
Also, the implementation determines the way in which an
{\datatype array\/} is initialized if @Kwd[initial-element]\rm,
@Kwd[initial-contents]\rm, or @kwd[displaced-to]
arguments are not supplied. See {\function make-array\/}.
%%\item{58.}
\item{4.} Valid values for the argument to
{\function char-bit} and {\function set-char-bit}
are implementation-dependent.
\endlist
\endsubSection%{Values}
\beginsubSection{Results}
\beginlist
\item{1.}
%%12.5.2 7
An implementation may return the result of the
absolute value of a {\datatype complex}
number composed of {\datatype integer}
real and imaginary parts as either a {\datatype floating}-point
number or an {\datatype integer}. See {\function abs}.
%%\item{7.}
\item{2.}
An implementation determines the result returned from
{\function lisp-implementation-type},
{\function type-of},
{\function
lisp-implementation-version}, and {\function software-version}.
%%\item{18.}
\item{3.} An implementation determines the result of {\function digit-char}
when more than one character object can encode the supplied weight in
the given radix.
%%\item{20.}
\item{4.} An implementation may determine the consequences in
{\function do} and
{\function do{\tt $*$}} when the index variable is changed within the iteration
loop.
%%\item{30.}
\item{5.} The result of {\function
file-position} for a character file is implementation-dependent.
%%\item{34.}
\item{6.} An implementation determines the order of elements in the results
of {\function intersection},
{\function set-difference}, and {\function
union} and derivatives of those functions.
Some element-processing aspects of sorting are implementation-dependent.
See {\function sort}.
%%\item{36.}
\item{7.} Whether or not {\function length}
or any sequence operation returns when given a circular
{\datatype list} is implementation-dependent.
%%\item{39.}
\item{8.} The implementation determines the {\word type} of
the result of {\function log} ({\datatype integer} or {\datatype
floating-point})
when its arguments are both {\datatype integers} and the result is a whole
number.
%%\item{41.}
\item{9.} The implementation determines the result of {\function make-char}.
%%\item{46.}
\item{10.} An implementation determines the result of
{\tt (eq (symbol-name (make-symbol x)) x)}.
%%\item{47.}
\item{11.}
An implementation determines the {\word type}
of the result of {\function
max} and {\function min} in the following cases.
\beginlist
\itemitem{a.}
If the arguments are a mixture of {\datatype rationals} and
{\datatype floating-point}
numbers and the largest argument
is a {\datatype rational}.
\itemitem{b.} If the largest argument is a {\datatype floating-point}
number of a smaller format
than the largest format of any {\datatype floating}-point argument.
\endlist
In addition, if one or more of the arguments are equal, then any one
of them may be chosen as the value to return.
%%\item{62.}
%\item{12.} {\function special-form-p} can return a non-@nil\ value,
%the identity of which is implementation-dependent.
%%\item{63.}
\item{12.} If the argument to {\function sqrt} is an {\datatype integer},
the result may be either an {\datatype integer}
or a {\datatype float}ing-point number depending on the
implementation. Also, if the argument to {\function sqrt} is a negative
{\datatype integer},
the result
may be either a
{\datatype complex} number with {\datatype integer} components or
a {\datatype complex} number with {\datatype floating}-point components.
%%\item{64.}
\item{13.} If no characters in the argument to {\function string-trim},
{\function string-left-trim}, {\function string-right-trim},
{\function string-upcase}, {\function string-downcase}, and
{\function string-capitalize} need to be changed, then the implementation can
either return the argument itself or a copy of it.
This is true for all destructive
{\datatype sequence} functions.
%%\item{71.}
\item{14.} When the arguments to
a mathematical {\word function} are
all {\datatype rational} and the true mathematical result
is also (mathematically) rational, then unless otherwise noted
an implementation is free to return either an accurate result of
{\word type} {\datatype rational}
or a {\datatype single-float} approximation.
If the arguments are all {\datatype rational}
but the result cannot be expressed
as a {\datatype rational} number, then a {\datatype single-float}
approximation is always returned.
\endlist
\endsubSection%{Results}
\beginsubSection{Data Representation and Typing}
\beginlist
%%\item{5.}
\item{1.}
An implementation determines the representation of a byte specifier.
%%\item{9.}
\item{2.}
An implementation determines the {\word type} of the {\word object} returned
from {\function coerce} when the result is specified to be a specialized
type.
%%\item{11.}
\item{3.}
An implementation can define declaration specifiers other than the ones
given in the description of {\function declare}.
%%\item{27.}
\item{4.} An implementation determines the format of the environment
argument to {\function evalhook} and
the argument that comes to {\function defmacro} via \&environment; the
{\function defmacro} and
{\function evalhook} environment arguments are not necessarily in the same
format.
%%\item{75.}
\item{5.} The existence of
{\word types} that are not {\word subtypes} of {\datatype common}
is implementation-dependent.
\endlist
\endsubSection%{Data Representation and Typing}
\beginsubSection{Program and Control Structure}
\beginlist
%%\item{13.}
%\item{1.}
%An implementation
%may or may not check for any dynamic {\word bindings}
%of the first argument to {\function defconstant} at the time
%{\function defconstant} is executed.
%%\item{14.}
\item{1.}
An implementation determines the way that {\function defmacro}
actually installs a macro function.
%%\item{15.}
\item{2.}
An implementation determines the code generated by {\function defsetf}.
%%\item{16.}
\item{3.}
The following are implementation-dependent features of {\function defstruct}:
\beginlist
\itemitem{a.} The initial contents of a slot, when they have not been provided,
are specified by the implementation.
\itemitem{b.} The access functions may be declared {\function inline}.
\itemitem{c.} The incorrect use of access functions may or may not be checked
by an implementation.
\itemitem{d.} For included slots, an implementation may or may not check
{\word type} assignments.
\itemitem{e.} If the {\keyword :type} option is not supplied, the implementation
determines the representation of the {\datatype structure}.
%%(see clean-up issue)
\endlist
%%\item{35.}
\item{4.} The permissibility of non-standard {\word lambda-list}
keywords is implementation-dependent.
%%\item{40.}
\item{5.}
An implementation is free
to implement as a {\word special form} any {\word construct}
described in this standard as a {\word macro},
if an equivalent {\word macro} definition is also provided.
See {\function macro-function}.
%%\item{60.}
\item{6.}
The exact expansion for any particular form given to {\function setf}
may be implementation-dependent.
%%\item{76.}
\item{7.} The internal representation of
a backquoted {\word form} is implementation-dependent.
\endlist
\endsubSection%{Program and Control Structure}
\beginsubSection{Comparisons}
\beginlist
%%\item{6.}
\item{1.}
An implementation determines the way font information is compared in the
functions {\function char-equal, char-not-equal, char-lessp, char-greaterp,
char-not-greaterp}, and {\function char-not-lessp}. Where not
specified by this standard, the ordering of
characters is implementation-dependent.
\endlist
\endsubSection%{Comparisons}
\beginsubSection{Numerical Calculations}
\beginlist
%%\item{8.}
\item{1.} {\function minusp},
{\function eql},
{\function float-sign}, and
{\function zerop}
are affected by the presence
of {\tt $-0.0$} in an implementation.
%%\item{24.}
\item{2.} Whether or not two {\datatype numbers} or {\datatype characters}
are {\function eq}
depends on the implementation.
%%\item{26.}
\item{3.} Whether two {\datatype floating}-point
numbers of different {\word types} are {\function eql} depends
on the implementation because it is possible for an implementation to
have less than four floating-point data types.
%%%\item{29.}
%\item{4.} An implementation may use different algorithms
%for the cases of a {\datatype rational} second
%argument and a {\datatype floating}-point
%second argument to {\function expt}.
%%\item{55.}
\item{4.} Random number generation is implementation-dependent.
%%\item{70.}
\item{5.} For the {\word operators} in Figure {\chapno--\the\capno},
an implementation may process the arguments in any manner consistent
with associative (and possibly commutative) rearrangement.
\boxfig
{\dimen0=.75pc
\tabskip \dimen0 plus .5 fil
\halign to \hsize {#\hfil\tabskip \dimen0 plus 1fil\hfil\tabskip \dimen0
plus 1fil\hfil\cr
\noalign{\vskip -9pt}
{\tt + }&{\tt * }&{\tt max }\cr
{\tt min }&{\tt =}&{\tt /=}\cr
{\tt < }&{\tt >}&{\tt <=}\cr
{\tt >= }&{\tt gcd}&{\tt lcm}\cr
{\tt logior}&{\tt logxor}&{\tt logand}\cr
{\tt logeqv}&{\tt lognand}&{\tt lognor}\cr
{\tt logandc1}&{\tt logandc2}&{\tt logorc1}\cr
{\tt logorc2}&{\tt boole}&\cr
\noalign{\vskip -9pt}
}}
\caption{Mathematically associative operators}
\endfig
Implementations may differ in
which automatic coercions are applied because of differing
orders of argument processing.
%%\item{72.}
\item{6.}
The precise definitions of {\datatype short-float},
{\datatype long-float}, {\datatype single-float}, and
{\datatype double-float} are implementation-dependent.
\endlist
\endsubSection%{Numerical Calculations}
\beginsubSection{User Interface}
\beginlist
%%\item{.}
\item{1.}
An implementation determines the user interface for the read-eval-print loop
in the {\word
operators} and variables in Figure {\chapno--\the\capno}.
\boxfig
{\dimen0=.75pc
\tabskip \dimen0 plus .5 fil
\halign to \hsize {#\hfil\tabskip \dimen0 plus 1fil\hfil\tabskip \dimen0
plus 1fil\hfil\cr
\noalign{\vskip -9pt}
{\tt break }&{\tt check-type }&{\tt describe }\cr
{\tt disassemble }&{\tt inspect }&{\tt step }\cr
{\tt warn }&{\tt y-or-n-p }&{\tt yes-or-no-p }\cr
{\tt error }&{\tt cerror }&{\tt ccase }\cr
{\tt ccase }&{\tt ctypecase }&{\tt Anything that uses cerror }\cr
\noalign{\vskip -9pt}
}}
\caption{User interface operators and variables}
\endfig
\endlist
\endsubSection%{User Interface}
\beginsubSection{Input/Output}
\beginlist
%%\item{17.}
\item{1.} An implementation determines whether an attempt by {\function
delete-file} to delete a non-existent file is considered to be successful.
%%\item{19.}
\item{2.} An implementation may define keywords to be used with
{\function directory}.
%%\item{31.}
\item{3.} An implementation determines the precise actions of
{\function finish-output}, {\function clear-output}, and {\function
force-output}.
%%\item{31a.}
\item{4.} {\datatype Streams}
may be implemented in an asynchronous or buffered manner.
%%\item{32.}
\item{5.} {\function format} has the following implementation-defined
features:
\beginlist
%% CLean-up item on this
\itemitem{a.} {\tt @tilde C} prints a character in an implementation-dependent
abbreviated format.
\itemitem{b.} The precise output for {\tt @tilde :{\char '100}C} depends
on the implementation.
\itemitem{c.} When rounding up and rounding down would produce printed values
equidistant from the scaled value of the argument, then the implementation
is free to use either one.
\itemitem{d.} For the {\tt @tilde \$} operation, if the magnitude of the argument is so large or small
that more than 100 digits would have to
be printed, then an implementation is free, at its discretion, to print
the number using exponential notation.
\itemitem{e.} For the {\tt @tilde \$} operation, if
the argument is a {\datatype rational} number,
then it is coerced to be a {\datatype single-float}
or processed by any other method that has essentially the
same behavior.
Only a finite number of digits may be printed.
\endlist
%%\item{37.}
\item{6.} The means by which a text (character file)
is distinguished from an object (binary) file is
implementation-dependent.
%%\item{38.}
\item{7.} The selection by {\function load} of a file type when there
is a choice is implementation-dependent.
%%\item{43.}
\item{8.} The implementation determines the internal representation
of a {\datatype pathname}. See {\function make-pathname}.
%%\item{48.}
\item{9.} The following aspects of {\function open}
are implementation-dependent:
\beginlist
\itemitem{a.} {\keyword :supersede}
\itemitem{b.} An implementation is required to recognize all of
the following {\keyword if-exists} keywords
and to do something reasonable in the context of the host operating
system:
{\keyword :error},
{\keyword :new-version},
{\keyword :rename},
{\keyword :rename-and-delete},
{\keyword :overwrite},
{\keyword :append},
{\keyword :supersede}, or
@false\rm.
\itemitem{c.} If it is impossible for an implementation to handle some option
in a manner close to what is specified in this manual, an error may be
signalled.
\endlist
%%\item{50.}
\item{10.} {\function parse-namestring}
may or may not signal an error if
the representation of a {\datatype pathname}
is surrounded on either side by
whitespace characters, depending on the implementation.
Whether or not {\function parse-namestring} supplies
the
standard default device as the device component
of the resulting {\datatype pathname} depends on the implementation.
%%\item{51.}
\item{11.} The {\datatype pathname} namestring
syntax is implementation-dependent.
The printed representation of a pathname
typically designates {\keyword :wild} by an asterisk; however, this is
implementation-dependent.
%%\item{52.}
\item{12.} A {\datatype character} name or a {\datatype pathname}
that is typed out
is acceptable as input in only the implementation which typed it.
Which names for characters are chosen to print is
implementation-dependent, although standard names are
chosen over non-standard names. See {\function write}.
%%\item{53.}
\item{13.} The printed representation of a
{\datatype random-state} object is implementation-dependent.
%%\item{54.}
\item{14.} {\word Objects} which do not have a specific syntax
specified in this manual are printed in an implementation-dependent manner.
%%\item{68.}
\item{15.} The {\arg host}
argument to {\function user-homedir-pathname}
defaults in an implementation-dependent manner.
%%\item{77.}
\item{16.} Whether the following
character names are supported is implementation-dependent:
@f[rubout]\rm, @f[page]\rm,
@f[tab]\rm,
@f[backspace]\rm,
@f[return]\rm, and
@f[linefeed]\rm.
%%\item{78.}
\item{17.} Whether
characters with non-zero {\arg bits} and {\arg font} attributes
syntax
descriptions are in the {\datatype readtable} is implementation-dependent.
\endlist
\endsubSection%{Input/Output}
\beginsubSection{Compiling}
\beginlist
%%\item{10.}
\item{1.}
An implementation determines the following for {\function compile-file}:
\beginlist
\itemitem{a.} The contents of the file created by {\function compile-file}.
\itemitem{b.} The file
specification (if one is not supplied)
for the file created by {\function compile-file}.
\endlist
%%\item{12.}
\item{2.}
An implementation's compiler can ignore declaration
specifiers except for {\tt declaration}, {\tt special}, and
{\tt notinline}.
%%\item{25.}
\item{3.} An implementation may ``collapse'' constants or portions of constants
in code to be compiled if they appear to be {\function eq}
or {\function eql} and are {\function equal}.
See ``Compilation''.
%%\item{79.}
\item{4.} The representation of the {\word object} produced by
the compiler, and the internals of the compiler
are implementation-dependent, except that {\function compile} produces
a {\datatype compiled-function}.
\endlist
\endsubSection%{Compiling}
\beginsubSection{Miscellaneous}
\beginlist
%%\item{4.}
\item{1.}
An implementation determines the specifics of the
debugger that {\function break} enters.
%%\item{74.}
\item{2.} Although functions that manipulate {\datatype packages}
generally signal
name conflict errors before making any change to the package structure, an
implementation may {\function export}
each of a given list of {\datatype symbols} separately.
%%\item{49.}
\item{3.} The contents of the @f[system] package are determined by
the implementation.
%%\item{57.}
\item{4.} The frequency of execution of test and key
functions for all sequence functions is implementation-dependent.
The implementation of
{\function search} may choose to search the {\datatype sequence} in any order.
%%\item{65.}
\item{5.} The manner in which a
hash code is computed by {\function sxhash}
is implementation-dependent.
%% clean-up pending for this
%%\item{69.}
\item{6.} The optional argument {\arg extension}
for {\function
vector-push-extend}
defaults to a ``reasonable'' implementation-dependent
value.
%%\item{73.}
\item{7.} A {\datatype symbol's} property list may have defined components.
\endlist
\endsubSection%{Miscellaneous}
\beginsubSection{Programming Environment}
\beginlist
%%\item{22.}
\item{1.} An implementation may or may not provide a resident editor.
See {\function ed}.
%%\item{23.}
\item{2.} An implementation determines the means by which
function text is obtained when {\tt (ed {\it symbol})} is invoked.
%%\item{33.}
\item{3.} An implementation determines the units used in representing
Internal Time.
See {\function get-internal-run-time}.
%%\item{56.}
\item{4.} The information {\function room} prints is
implementation-dependent.
%%\item{66.}
\item{5.} The nature and
format of the information printed by {\function time}
is implementation-dependent.
%%\item{67.}
\item{6.} The following are implementation dependencies of
tracing.
\beginlist
\itemitem{a.} {\function trace} and {\function untrace} may accept
implementation-dependent argument formats.
\itemitem{b.} The format of the {\function trace}
output is implementation-dependent.
\endlist
\endlist
\endsubSection%{Programming Environment}
∂01-Mar-89 1159 X3J13-mailer New versions of standard files available
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 1 Mar 89 11:59:21 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
id AA05099; Wed, 1 Mar 89 11:57:05 PST
Message-Id: <8903011957.AA05099@decwrl.dec.com>
Received: by decwrl.dec.com (5.54.5/4.7.34)
for x3j13@sail.stanford.edu; id AA05099; Wed, 1 Mar 89 11:57:05 PST
From: chapman%aitg.DEC@decwrl.dec.com
Date: 1 Mar 89 07:02
To: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
Subject: New versions of standard files available
New versions of the standard files that will be voted on in March are available
on hudson.dec.com. There will probably still be changes to section 5.1 (Errors),
so plan to copy and review that last. All these files are contained in
march-27-ballot.dvi, if you can use that file type. If you want to build this
yourself, use march-27-ballot.tex as well as the other files necessary for
any build (kcamfont.tex, kcmacros.tex, macros2.tex, march-27-ballot.tc).
S1100.SCOPE-PURPOSE-AND-HISTORY
S1200.ORGANIZATION-OF-THE-DOCUMENT
S1300.REFERENCED-PUBLICATIONS
S1400.DEFINITIONS
S1500.COMPLIANCE
S1600.IMPLEMENTATION-DEFINED-FEATURES
S1700.LANGUAGE-EXTENSIONS
S2100.INTRODUCTION
S2200.TYPES
S5100.ERRORS
S5200.INPUT-OUTPUT
S5300.INTERFACE-WITH-PROGRAMMING-ENVIRONMENT
S5400.GENERALIZED-REFERENCE
Please let me know if you have trouble accessing these files.
I will be mailing the sources to you for review.
kathy chapman
∂01-Mar-89 1203 X3J13-mailer Section 1.3
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 1 Mar 89 12:03:44 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
id AA05782; Wed, 1 Mar 89 12:01:39 PST
Message-Id: <8903012001.AA05782@decwrl.dec.com>
Received: by decwrl.dec.com (5.54.5/4.7.34)
for x3j13@sail.stanford.edu; id AA05782; Wed, 1 Mar 89 12:01:39 PST
From: chapman%aitg.DEC@decwrl.dec.com
Date: 1 Mar 89 07:22
To: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
Subject: Section 1.3
%%Referenced Publications
\beginlist
\item{} {\it The Anatomy of Lisp}, John Allen, McGraw-Hill, 1978.
\item{} {\it Compile-time Evaluation and Code Generation for Semantics-directed
Compilers}, Andrew W. Appel, Carnegie-Mellon University, 1985.
\item{} {\it The Definition of Programming Languages}, Andrew D. McGettrick,
Cambridge University Press, 1980.
\item{} {\it Desiderata for the Standardisation of Lisp}, Julian Padget et.
al., 1986 ACM Conference on Lisp and Functional Programming, 1986.
\item{} {\it Formal Specification of Programming Languages - A Panoramic
Primer}, Frank G. Pagan, Prentice-Hall, Inc, 1981.
\item{} {\it $Revised↑3$ Report on the Algorithmic Language Scheme},
Jonathan Rees and William Clinger (editors), SIGPLAN Notices V21, \#12,
December, 1986.
%\item{} {\it Denotational Semantics}, David A. Schmidt, Allyn and Bacon,
%1986.
\item{} {\it Common LISP the Language}, Guy L. Steele, Jr., Digital Press,
1984.
%\item{} {\it Denotational Semantics: The Scott-Strachey Approach to Programming
%Language Theory}, Joseph E. Stoy, MIT, 1977.
\item{} {\it A Programmer's Guide to Common Lisp}, Deborah G. Tatar,
Digital Press, 1987.
\item{} {\it History of
Programming Languages}, edited by Richard Wexelblat, Academic Press,
1981.
\item{} {\it NIL -- A Perspective}, JonL White, MacSyma User's Conference,
1979.
\item{} {\it Common LISPcraft}, Robert Wilensky, W. W. Norton, 1986.
\endlist
∂01-Mar-89 1207 X3J13-mailer Section 2.1
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 1 Mar 89 12:06:27 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
id AA06314; Wed, 1 Mar 89 12:04:26 PST
Message-Id: <8903012004.AA06314@decwrl.dec.com>
Received: by decwrl.dec.com (5.54.5/4.7.34)
for x3j13@sail.stanford.edu; id AA06314; Wed, 1 Mar 89 12:04:26 PST
From: chapman%aitg.DEC@decwrl.dec.com
Date: 1 Mar 89 07:24
To: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
Subject: Section 2.1
%% Introduction to Objects and Types
%% 2.0.0 4
%% 6.2.1 1
A {\word data type} (a {\word type})
is a (possibly infinite) set of
{\word objects}. An {\word object} can belong to more than one
{\word type}. @Funref[typep] is used to determine
whether an {\word object} is of a given {\word type},
a set membership test, while {\function subtypep}
is a subset test.
@Funref[type-of] returns a {\word type}
to which an {\word object} belongs.
%% 9.1.0 1
Type declarations can be embedded in executable
code using {\function declare}.
Global type declarations are established by {\function proclaim}.
%% 9.3.0 1
%The special form {\function the} is used to declare
%the {\word type} of the value of an
%unnamed {\word form}.
%The form {\tt (the type form)} means
%that the value of {\tt form}
%is declared to be of type {\tt type}.
%% 1.1.0 4
%% 9.0.0 3
%All type declarations are optional
%and correct type declarations do not affect the meaning
%of a correct program.
%All type declarations are of an advisory nature, and may be used
%by the @xlisp\ system in performing error checking
%or producing more efficient compiled code.
%% 9.0.0 4
The consequences are undefined if a program violates a
type declaration (such as a {\function type} declaration),
but an implementation is
not required to detect such errors.
%% 9.2.0 1
%% 2.0.0 1
Data {\word objects}, not variables, are {\word typed}.
Normally, any variable
can have any @xlisp\ {\word object} as its value.
It is possible to make an explicit
type declaration that a variable will
take on one of only a limited set of values.
%% 2.0.0 5
@clisp\ {\word types} are arranged in a directed acyclic graph.
%Therefore,
%it is possible for an {\word object} to belong to more than one
%{\word type}.
%% 2.12.0 1
%%% 19.1.0 1
%{\word Structures} created by @Macref[defstruct]
%are instances of user-defined {\word types}.
%%% Beginning of CLOS stuff
%\beginSection{Introduction}
%
The \CLOS\ is based on
{\word generic functions}, multiple inheritance, declarative {\word method}
combination, and a meta-object protocol.
%
%The first two chapters of this specification present a description of
%the standard Programmer Interface for the \CLOS. The first chapter
%contains a description of the concepts of the \CLOS, and the second
%contains a description of the functions and macros in the \CLOS\
%Programmer Interface. The chapter ``The \CLOS\ Meta-Object
%Protocol'' describes how the \CLOS\ can be customized.
%
The fundamental {\word objects} of the \CLOS\
are {\word classes}, {\word instances},
{\word generic functions}, and {\word methods}.
A {\bit class\/} object determines the structure and behavior of a set
of other {\word objects}, which are called its {\bit instances}.
Every {\word object} is an {\bit
instance\/} of a {\word class}. The
{\word class} of an {\word object} determines the set of
operations that can be performed on the {\word object}.
See ``Generic Functions and Methods''.
%%\endSection%{Introduction}
∂01-Mar-89 1232 X3J13-mailer Section 1.1
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 1 Mar 89 12:32:28 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
id AA09717; Wed, 1 Mar 89 12:30:00 PST
Message-Id: <8903012030.AA09717@decwrl.dec.com>
Received: by decwrl.dec.com (5.54.5/4.7.34)
for x3j13@sail.stanford.edu; id AA09717; Wed, 1 Mar 89 12:30:00 PST
From: chapman%aitg.DEC@decwrl.dec.com
Date: 1 Mar 89 07:21
To: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
Subject: Section 1.1
%%Scope, Purpose, and History
\beginsubSection{Scope and Purpose}
The standard specification set forth in this document
is designed to promote the portability of @clisp\ programs
among a variety of data-processing systems. It is intended for use
by implementors and knowledgeable programmers, and is not a tutorial.
This standard is intended to be a language specification
rather than an implementation specification.
An
implementation is free to achieve the semantics
specified in this standard by any means. The @clisp\ definitions
in Chapters 6 and 7 need not be reflected directly in the implementation.
\endsubSection%{Scope and Purpose}
\beginsubSection{History}
Lisp is the second oldest high-level programming language still in current use.
(The oldest high-level programming language still in widespread use
is Fortran.)
@clisp\ is a joint-venture language stemming from several
research and development projects in the late 1970's. Its
roots reveal why some of the features of the language were
added. From a short look at these roots, it can also be seen
how these features influence the architectural requirements
for a high-quality implementation.
From the mid-1960's through much of the 1970's, DEC's PDP10 computer
was the mainstay of Lisp work at MIT and Stanford's AI and Computer
Science Labs, at BBN in Cambridge, at CMU, and at selected other sites.
Designed in the early
1960's, the PDP10 had the unique advantage of being influenced by
John McCarthy, the ``Grandfather of Lisp'', and as a result has
half-word instructions suitable for {\word car} and {\word cdr}
instructions, and
stack instructions to facilitate recursive programming.
But the limitations of this old machine were painfully
evident by 1973, two of which were
the high cost to support a single researcher,
and the small address space available ($2↑{18}$ = 262,144 words).
To alleviate the latter problem, BBN Lisp (developed at Bolt, Bernak,
\& Newman in Cambridge, and later, with Xerox's
participation, called Interlisp)
added a ``black hole'' feature somewhat akin to ``paging''
on a function basis rather than on a page-boundary basis. MacLisp
(developed at the MIT AI Lab and Laboratory for Computer Science)
added an ``autoload'' feature, whereby only the functions actually used
would be loaded in to ``core''. Large applications such as the
symbolic algebra system MACSYMA and the Interlisp programing development
environment were driving forces for larger address space capabilities.
In the early 1970's, at Xerox's Palo Alto Research Center, L. Peter Deutch
conceived of a personal workstation with an architecture
tailored to the needs of Lisp. This architecture would allow
a machine to be affordable to an
individual researcher and to have sufficient power to run large Lisp
applications.
Soon thereafter, Richard Greenblatt began work
on a similar design at MIT's AI Laboratory.
Eventually, a dialect of Interlisp known as Interlisp-D became available
on
the ``D-series'' machines manufactured by Xerox, and an upward-compatible
extension of MacLisp became available on the early MIT ``Lisp'' machines.
Both of these efforts culminated in commercial Lisp machines that were
seen in laboratory prototype at about the time of the 1980 Lisp Conference
at Stanford, and were marketable by 1981.
In another direction, in the late 1970's the MacSyma group at MIT
began
a project called New Implementation of Lisp (NIL). In additon
to capitalizing on the large address space and other hardware
capabilities of the VAX, one of the stated goals of NIL was to fix many
of the historic, but annoying, little problems of the Lisp
language while still retaining an essentially upward-compatible
outlook. At about the same time, a research group
at Stanford University and Lawrence Livermore National Laboratory
began the design of a Lisp to run on the supercomputer,
S-1. Recognizing the similarity of
their goals to those of the MIT NIL project, the S-1 group
began to collaborate with the NIL group.
In a third direction, around 1980, Scott Fahlman and others at CMU
began work on a Lisp to run on the SPICE workstation.
The SPICE machine had a much weaker microcode capability
than the MIT Lisp Machine, so the goal was to emulate as much of the
MIT design as was feasible.
After a DARPA-sponsored meeting on the future of Lisp in April 1981,
representatives
of several of the post-MacLisp efforts (Gabriel, Steele, White, and Fahlman)
decided to join forces by
directing their efforts towards a common, portable dialect of Lisp.
Further design sessions were held at CMU in June 1981. Later that
fall, Symbolics Corporation representatives began assisting in
designing the new dialect.
After the name was chosen (@clisp) the task then turned to a
choice of how much of the design could be retained from the Lisp
machines, and how much seemed to pre-suppose special purpose hardware. Also
there was a task of sorting out which features of conventional
languages for conventional hardware architectures, like compile-time
typing, could be integrated into the new language without damaging
its essential Lisp character. The theorists of each
camp allowed some deviations from what they considered theoretically
best, and the result
was a language suitable for general purpose hardware, but with certain
particular implementational problems to be met.
@maclisp, @lmlisp, @scheme, @interlisp, @slisp, @s1lisp, @newlisp,
@stdlisp, and @psl\
were each considered during the design of
@clisp\rm, and the most useful features of each were incorporated.
{\it Common LISP the Language},
was written by members of the informal design group.
The semantics in {\it Common LISP the Language} were intentionally
underspecified in
places where it was felt that a tight specification would
unduly constrain @clisp\ research and use.
However, industrial use of @clisp\
mandates implementations to produce the same results given the same arguments
in order that code can be ported between implementations.
In addition, @clisp\ users recognized the need to agree on standard
object-oriented and condition systems, iteration facilities, and
a way to handle large character sets.
Therefore, a new language specification, this document, was created by
the X3J13 committee.
\endsubSection%{History}
∂01-Mar-89 1232 X3J13-mailer Section 1.2
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 1 Mar 89 12:32:32 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
id AA09839; Wed, 1 Mar 89 12:30:26 PST
Message-Id: <8903012030.AA09839@decwrl.dec.com>
Received: by decwrl.dec.com (5.54.5/4.7.34)
for x3j13@sail.stanford.edu; id AA09839; Wed, 1 Mar 89 12:30:26 PST
From: chapman%aitg.DEC@decwrl.dec.com
Date: 1 Mar 89 07:21
To: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
Subject: Section 1.2
%%Organization of the Document
This document is divided into seven chapters:
\beginlist
\item{\bull} This introduction.
\item{\bull} A description of @clisp\ types and objects.
\item{\bull} A description of the syntax of @clisp\ objects.
\item{\bull} The @clisp\ evaluation and compilation processes.
\item{\bull} A description of the @clisp\ interfaces to
its environment and a description of the condition
system.
\item{\bull} A catalog of @clisp\ symbols (divided into two chapters).
\endlist
∂01-Mar-89 1234 X3J13-mailer Section 1.4
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 1 Mar 89 12:34:33 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
id AA09935; Wed, 1 Mar 89 12:32:23 PST
Message-Id: <8903012032.AA09935@decwrl.dec.com>
Received: by decwrl.dec.com (5.54.5/4.7.34)
for x3j13@sail.stanford.edu; id AA09935; Wed, 1 Mar 89 12:32:23 PST
From: chapman%aitg.DEC@decwrl.dec.com
Date: 1 Mar 89 07:22
To: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
Subject: Section 1.4
%%Definitions
This section contains notational conventions used in this manual.
The font key to be used in Chapters 1-5
is as follows:
\beginlist
\itemitem{\datatype data-type}
Denotes
@clisp\ {\word data types}.
\itemitem{\word defined word}
Denotes the words whose
definitions appear in the ``Glossary''.
\itemitem{\function tools}
Denotes {\word tools}.
\itemitem{\keyword keywords}
Denotes {\word keywords}.
\endlist
%% 1.2.1 1
All numbers in this book are in decimal notation
unless otherwise noted.
%% 1.2.5 9
The dot appearing in the expression
@f[(sample-macro @i[var] {\char '056} @i[body])]
means that @f[body] stands
for a list of {\word forms},
not just a single {\word form}, at the end of a list.
The following notations are used in this document:
\beginlist
\itemitem{\word @EV\rm}
Indicates {\word evaluation}.
For example:
@Lisp
(+ 4 5) @EV 9
@Endlisp
means that the result of {\word evaluating} the code @f[(+ 4 5)] is @f[9]\rm.
%% 1.2.3 3
\itemitem{\word @EQ}
Indicates code
equivalence.
For example:
@Lisp
(gcd x (gcd y z)) @EQ (gcd (gcd x y) z)
@Endlisp
means that the results and observable
{\word side-effects} of {\word evaluating }
the {\word form}
@f[(gcd x (gcd y z))] are always the same as the results
and observable {\word side-effects} of
@f[(gcd (gcd x y) z)] for any
@f[x]\rm, @f[y]\rm, and @f[z]\rm.
%% 1.2.5 4
\itemitem{@t}
The canonical truth value.
Any {\word object} other than @false\ is construed to be Boolean
``not false,'' that is, ``true.'' The {\datatype symbol} @true\ is
used to mean ``true'' when no other value is more appropriate.
When a {\word function} is said to ``return @i[true]\rm'' or to ``be @i[true]\rm''
in some circumstance, this means that it returns some value other
than @false\rm, but not necessarily @true\rm.
\itemitem{@nil}
Represents the empty {\datatype list} and
the ``false'' value for Boolean tests.
The {\datatype symbol} @f[nil] evaluates to
itself, so @f['nil] and @f[nil] denote the same {\word object}
in terms of evaluation.
The former syntax is used to emphasize that the result is
a {\datatype symbol},
while the latter is used to emphasize that the result is
a boolean value. @f['()]
is used to denote the
empty {\datatype list}
in terms of evaluation. It is used in a quoted structure
or a program structure.
For example:
\screen!
(print ()) ;avoided
'(nil nil) ;list of symbols
'(()()) ;list of empty lists
(defun three () 3) ;Emphasize empty parameter list.
(append '() '()) @EV () ;Emphasize use of empty lists
(not @false) @EV @true ;Emphasize use as Boolean "false"
(get '@nil 'color) ;Emphasize use as a symbol
\endscreen!
When a function is said to ``return @i[false]\rm'' or to ``be @i[false]\rm''
in some circumstance, this means that it returns @false\rm.
\endlist
∂01-Mar-89 1240 X3J13-mailer Section 5.3
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 1 Mar 89 12:40:11 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
id AA10373; Wed, 1 Mar 89 12:38:09 PST
Message-Id: <8903012038.AA10373@decwrl.dec.com>
Received: by decwrl.dec.com (5.54.5/4.7.34)
for x3j13@sail.stanford.edu; id AA10373; Wed, 1 Mar 89 12:38:09 PST
From: chapman%aitg.DEC@decwrl.dec.com
Date: 1 Mar 89 07:26
To: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
Subject: Section 5.3
%% Interface with the Programming Environment
\beginSubsection{Top level loop}
%% 20.2.0 1
The {\function read}-{\function eval}-{\function print} loop
is the highest level of control and consists of an endless
loop that reads an expression, evaluates it, and prints the
results. The parts of the
{\function read}-{\function eval}-{\function print} loop are individually
referred to as the reader, the evaluator, and the printer.
%% 20.2.0 2
The precise nature of the {\function read}-{\function eval}-{\function print}
loop
is not rigorously specified; thus the user interface is
implementation-defined.
%% 20.2.0 3
The {\function read}-{\function eval}-{\function print} loop
traps all {\function throws} and recovers from them.
It prints all values resulting from the evaluation of a
{\word form}.
%% 20.2.0 4
The following variables are maintained by the
{\function read}-{\function eval}-{\function print} loop.
{\tt +, ++, +++, *, **, ***, /, //, ///, -}.
See Chapter 6 for the meanings of these variables.
\endSubsection%{Top level loop}
\beginSubsection{Environment inquiry}
%% 25.4.0 1
Environment inquiry {\word tools} provide information about the
system on which a @clisp\ program is being executed.
These {\word tools}
aid in querying the hardware and software configuration, and
in debugging.
Figure {\chapno--\the\capno} lists the
{\word tools} that are applicable to configuration inquiry.
\boxfig
{\dimen0=.75pc
\tabskip \dimen0 plus .5 fil
\halign to \hsize {#\hfil\tabskip \dimen0 plus 1fil\hfil\tabskip \dimen0 plus
1fil\hfil\cr
\noalign{\vskip -9pt}
{\tt @var[features] } & {\tt long-site-name } & {\tt room } \cr
{\tt identity } & {\tt machine-instance } & {\tt short-site-name } \cr
{\tt lisp-implementation-type } & {\tt machine-type } & {\tt software-type }
\cr
{\tt lisp-implementation-version} & {\tt machine-version } & {\tt
software-version } \cr
\noalign{\vskip -9pt} }}
\caption{Configuration inquiry tools}
\endfig
Figure {\chapno--\the\capno} lists the
{\word tools} that are applicable to debugging.
\boxfig
{\dimen0=.75pc
\tabskip \dimen0 plus .5 fil
\halign to \hsize {#\hfil\tabskip \dimen0 plus 1fil\hfil\tabskip \dimen0 plus
1fil\hfil\cr
\noalign{\vskip -9pt}
{\tt apropos } & {\tt dribble } & {\tt step } \cr
{\tt apropos-list } & {\tt ed } & {\tt trace } \cr
{\tt describe } & {\tt inspect }& {\tt untrace } \cr
{\tt documentation } & & \cr
\noalign{\vskip -9pt} }}
\caption{Debugging tools}
\endfig
\endSubsection%{Environment inquiry}
\beginsubsubsection{Time}
%% 25.4.1 1
Time is represented in three different ways in @clisp\rm:
Decoded Time, Universal Time, and Internal Time.
The first two representations
are used primarily to represent calendar time, and are
precise only to one second.
Internal Time is used primarily to represent measurements of computer
time (such as run time) and is precise to some implementation-dependent
fraction of a second, as specified by @Conref[internal-time-units-per-second]\rm.
Decoded Time format is used only for absolute time indications.
Universal Time and Internal Time formats are used for both absolute
and relative times.
\beginlist
\itemitem{\bf Decoded time}
%% 25.4.1 2
Decoded Time format represents calendar time as a number of components:
%% 25.4.1 3
\beginlist
\itemitem{\bf Second}
An {\datatype integer} between 0 and 59, inclusive.
%% 25.4.1 4
\itemitem{\bf Minute}
An {\datatype integer} between 0 and 59, inclusive.
%% 25.4.1 5
\itemitem{\bf Hour}
An {\datatype integer} between 0 and 23, inclusive.
%% 25.4.1 6
\itemitem{\bf Date}
An {\datatype integer} between 1 and 31, inclusive (the upper limit actually
depends on the month and year, of course).
%% 25.4.1 7
\itemitem{\bf Month}
An {\datatype integer} between 1 and 12, inclusive; 1 means January,
12 means December.
%% 25.4.1 8
\itemitem{\bf Year}
An {\datatype integer} indicating the year A.D. However, if this
{\datatype integer}
is between 0 and 99, the ``obvious'' year is used; more precisely,
that year is assumed that is equal to the
{\datatype integer} modulo 100 and
within fifty years of the current year (inclusive backwards
and exclusive forwards).
Thus, in the year 1978, year 28 is 1928
but year 27 is 2027. (Functions that return time in this format always return
a full year number.)
%% 25.4.1 10
\itemitem{\bf Day-of-week}
An {\datatype integer} between 0 and 6, inclusive;
0 means Monday, 1 means Tuesday, and so on; 6 means Sunday.
%% 25.4.1 11
\itemitem{\bf Daylight-saving-time-p}
A flag that, if not @false\rm, indicates that
daylight saving time is in effect.
%% 25.4.1 12
\itemitem{\bf Time-zone}
%% should be a clean-up item about this
An {\datatype integer} specified as the number of hours west of GMT
(Greenwich Mean Time). For example, in Massachusetts the time zone is 5,
and in California it is 8. Any adjustment for daylight saving time is
separate from this.
\endlist
\itemitem{\bf Universal time}
%% 25.4.1 13
Universal Time represents time as a single non-negative {\datatype integer}.
For relative time
purposes, this is a number of seconds. For absolute time, this is the
number of seconds since midnight, January 1, 1900 GMT. Thus the time 1
is 00:00:01 (that is, 12:00:01 a.m.) on January 1, 1900 GMT.
Similarly, the time 2398291201 corresponds to time 00:00:01 on January 1,
1976 GMT.
Recall that the year 1900 was not a leap year; for the purposes of
@clisp\rm, a year is a leap year if and only if its number is divisible by 4, except
that years divisible by 100 are not leap years, except that years
divisible by 400 are leap years. Therefore the year 2000 will
be a leap year.
(Note that the ``leap seconds'' that
are sporadically inserted by the world's official timekeepers as an additional
correction are ignored; @clisp\ assumes that every day is exactly 86400
seconds long.)
Because the @clisp\ Universal Time representation uses only
non-negative integers, times before the base time of midnight,
January 1, 1900 GMT cannot be processed by @clisp\rm.
\itemitem{\bf Internal time}
%% 25.4.1 14
Internal Time also represents time as a single {\datatype integer},
in terms of an implementation-dependent unit.
Relative time is measured as a number of these units.
Absolute time is relative to an arbitrary time base.
\endlist
Figure {\chapno--\the\capno} lists the
{\word tools} that are applicable to time.
\boxfig
{\dimen0=.75pc
\tabskip \dimen0 plus .5 fil
\halign to \hsize {#\hfil\tabskip \dimen0 plus 1fil\hfil\cr
\noalign{\vskip -9pt}
{\tt time }&{\tt get-decoded-time }\cr
{\tt get-universal-time }& {\tt decode-universal-time }\cr
{\tt encode-universal-time } & {\tt internal-time-units-per-second } \cr
{\tt get-internal-run-time }&{\tt get-internal-real-time }\cr
{\tt sleep } & \cr
\noalign{\vskip -9pt} }}
\caption{Time tools}
\endfig
\endsubsubsection%{Time}
∂01-Mar-89 1243 X3J13-mailer Section 5.4
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 1 Mar 89 12:43:35 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
id AA10362; Wed, 1 Mar 89 12:41:24 PST
Message-Id: <8903012041.AA10362@decwrl.dec.com>
Received: by decwrl.dec.com (5.54.5/4.7.34)
for x3j13@sail.stanford.edu; id AA10362; Wed, 1 Mar 89 12:41:24 PST
From: chapman%aitg.DEC@decwrl.dec.com
Date: 1 Mar 89 07:27
To: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
Subject: Section 5.4
%% Generalized Reference
When it is stated that an argument to a {\word function} or
{\word macro} must be
a generalized reference, this means that the argument must follow the
rules specified in this section. The definition for generalized reference
is given in terms of {\function setf},
which performs access and update operations within the
same {\word form}.
Figure {\chapno--\the\capno} contains examples of the use of {\function setf}.
Note that the values returned by evaluating the {\word forms} in column two
are not necessarily the same as those obtained by evaluating the {\word
forms}
in column three.
\boxfig
{\dimen0=.75pc
\tabskip \dimen0 plus .5 fil
\halign to \hsize {#\hfil\tabskip \dimen0 plus
1fil\hfil\tabskip \dimen0 plus 1fil\hfil\cr
\noalign{\vskip -9pt}
\hfil\bf Access function & Update function & Update using {\function setf} \cr
\noalign{\vskip 2pt\hrule\vskip 2pt}
{\tt x }&{\tt (setq x datum) }&{\tt (setf x datum) }\cr
{\tt (car x) }&{\tt (rplaca x datum) }&{\tt (setf (car x) datum) }\cr
{\tt (symbol-value x) }&{\tt (set x datum) }&{\tt (setf (symbol-value x) datum) }\cr
\noalign{\vskip -9pt}
}}
\caption{Examples of setf}
\endfig
Figure {\chapno--\the\capno} lists the {\word operators}
that are applicable to generalized reference. Some manipulate generalized
references and some manipulate {\function setf} methods.
\boxfig
{\dimen0=.75pc
\tabskip \dimen0 plus .5 fil
\halign to \hsize {#\hfil\tabskip \dimen0 plus
1fil\hfil\tabskip \dimen0 plus 1fil\hfil\cr
\noalign{\vskip -9pt}
{\tt setf }&{\tt psetf }&{\tt shiftf }\cr
{\tt rotatf }&{\tt getf }&{\tt remf }\cr
{\tt incf }&{\tt decf }&{\tt push}\cr
{\tt pop }&{\tt assert }&{\tt ctypecase }\cr
{\tt ccase} &{\tt define-modify-macro }&{\tt defsetf }\cr
{\tt define-setf-method }&{\tt get-setf-method }&{\tt get-setf-method-multiple-value }\cr
\noalign{\vskip -9pt}
}}
\caption{Generalized reference operators}
\endfig
%% 7.2.0 29
%% 7.2.0 30
These {\word operators} must guarantee that
subforms of generalized references are
evaluated
exactly as many times as they appear in the source program, and
they are evaluated
in exactly the same order as they appear in the source
program
\issue{PUSH-EVALUATION-ORDER}
(left to right)
whenever possible. The left-to-right rule does not
remove the obligation on writers of {\word macros} and
users of {\function define-setf-method}
to ensure
left-to-right order, however.
\endissue{PUSH-EVALUATION-ORDER}
\issue{PUSH-EVALUATION-ORDER}
\beginlist
\itemitem{1.}
The evaluation ordering of subforms within a generalized reference
is determined by the order specified by the second value returned by
{\function get-setf-method}.
For all predefined generalized references ({\function getf}, {\function ldb}),
this order of evaluation is exactly left-to-right. When a generalized
reference is derived from a macro expansion, this rule is applied after the
macro is expanded to find the appropriate generalized reference.
If the user writes a {\function defmacro} or
{\function define-setf-method}
that does not preserve order, the order specified in the
user's code holds. For example, given
@lisp
(defmacro wrong-order (x y) `(getf ,y ,x))
@endlisp
then
@lisp
(push value (wrong-order place1 place2))
@endlisp
will evaluate {\tt place2} first and then {\tt place1}
because that is the order they
are evaluated in the macro expansion.
\itemitem{2.}
For the {\word macros}
that manipulate generalized references ({\function push},
{\function pushnew}, {\function getf\/}, {\function remf\/},
{\function incf\/}, {\function decf\/}, {\function shiftf\/}, {\function rotatef\/},
{\function psetf\/}, {\function setf\/}, {\function pop}, and those
defined by {\function define-modify-macro}) the subforms of the
macro call are evaluated exactly once
in left-to-right order, with the subforms of the generalized references
evaluated in the order specified in (1).
{\function push}, {\function pushnew}, {\function getf\/}, {\function remf\/},
{\function incf\/}, {\function decf}, {\function shiftf\/}, {\function rotatef\/},
{\function psetf\/}, {\function pop} evaluate all
subforms before modifying any of the generalized reference locations.
{\function setf\/} (in
the case when {\function setf\/} has more than two arguments)
performs its operation
on each pair in sequence, i.e., in
@lisp
(setf place1 value1 place2 value2 ...)
@endlisp
the subforms of {\tt place1} and {\tt value1} are evaluated, the location
specified by
{\tt place1} is modified to contain the value returned by
{\tt value1}, and
then the rest of the {\function setf\/} form is processed in a like manner.
\itemitem{3.}
For {\function check-type}, {\function ctypecase}, and
{\function ccase}, subforms of the generalized
reference are evaluated once as in (1), but may be evaluated again if the
type check fails in the case of {\function check-type}
or none of the cases hold in
{\function ctypecase} and {\function ccase}.
\itemitem{4.}
For {\function assert}, the order of evaluation of the generalized
references is not specified.
\endlist
Rules 2, 3 and 4 cover all macros defined in @clisp\ that manupulate
generalized references.
@lisp
(let ((ref2 (list '())))
(push (progn (princ "1") 'ref-1)
(car (progn (princ "2") ref2)))) @EV "12"
@endlisp
@lisp
(let (x)
(push (setq x (list 'a))
(car (setq x (list 'b))))
x) @EV (((a) . b))
@endlisp
{\function push} first evalutes {\tt (setq x (list 'a)) @EV\ (a)},
then evaluates {\tt (setq x (list 'b)) @EV\ (b)},
then modifies the {\word car} of this latest value to be {\tt ((a) . b)}.
\endissue{PUSH-EVALUATION-ORDER}
%% 7.2.0 31
For example, in
{\tt (setf {\arg reference} {\arg value})}
{\arg value}
must be evaluated after all the subforms of {\arg reference} because
{\arg value} appears to the right of them.
%% 7.2.0 32
The expansion of these {\word operators} must consist of code that follows these
rules or has the same effect as such code. This is accomplished by
introducing temporary variables bound to the
\issue{PUSH-EVALUATION-ORDER}
subforms of the macro call.
\endissue{PUSH-EVALUATION-ORDER}
As an optimization in the implementation,
temporary variables may be eliminated whenever it
can be proven that removing them has no effect on the semantics of the program.
For example, a constant need never be saved in a temporary variable.
A variable or any {\word form} that does not have side effects need not be
saved in a temporary variable if it can be proven that its value will
not change within the scope of the generalized reference.
%% 7.2.0 57
A {\function setf\/} method may be derived from any
generalized reference.
A {\function setf\/} method
describes how to store into that generalized reference and which subforms of
the macro call are evaluated.
%% 7.2.0 59
Given knowledge of the subforms of the macro call,
it is possible to avoid evaluating
them multiple times or in the wrong
order. A {\function setf\/}
method for a given access form can be expressed as
five values:
%% 7.2.0 60
\beginlist
%% 7.2.0 64
\itemitem{\bf List of temporary variables}
The temporary variables
will be bound to the {\word values} of
the value forms sequentially as if by @Specref[let*]\rm.
\itemitem{\bf List of value forms}
The values of the value forms (these are subforms of the access form)
are bound to the temporary variables.
%% 7.2.0 61
%% 7.2.0 65
\itemitem{\bf List of store variables}
The store variables (these are temporary variables)
are to be bound to the values of the generalized reference form,
that is, the values to be
stored into the variable.
%% 7.2.0 62
\itemitem{\bf Storing form}
The storing form modifies the value of the
generalized reference and guarantees to return the value of the
store variable as
its value; these are the correct values for {\function setf\/} to
return.
The storing form may contain references to the temporary and store variables.
%% 7.2.0 63
\itemitem{\bf Accessing form}
The accessing form returns the value of the
generalized reference.
It may contain references to the temporary variables.
\endlist
%% 7.2.0 66
The value returned by the accessing form is
affected by execution of the storing form, but either of these
forms may be evaluated any number of times.
%% 7.2.0 67
The temporary variables and the store variables are generated names,
as if by @Funref[gensym] or @Funref[gentemp]\rm.
It is possible
to do more than one {\function setf\/} in parallel via
{\function psetf\/}, {\function shiftf\/}, and {\function rotatef\/}.
Computation
of the {\function setf\/}
method must always create new variable names; it may not return
the same ones every time.
Examples of the contents of the constituents of {\function setf\/} methods
follow.
%% 7.2.0 69
For a variable {\arg x}:
\boxfig
{\dimen0=.75pc
\tabskip \dimen0 plus .5 fil
\halign to \hsize {#\hfil\tabskip \dimen0 plus
1fil\hfil\cr
\noalign{\vskip -9pt}
{\tt () }&; list of temporary variables \cr
{\tt () }&; list of value forms \cr
{\tt (g0001) }&; list of store variables \cr
{\tt (setq {\arg x} g0001) }&; storing form \cr
{\arg x }&; accessing form \cr
\noalign{\vskip -9pt}
}}
\caption{Examples of setf methods - 1}
\endfig
%% 7.2.0 70
For {\tt (car {\arg exp})}:
\boxfig
{\dimen0=.75pc
\tabskip \dimen0 plus .5 fil
\halign to \hsize {#\hfil\tabskip \dimen0 plus
1fil\hfil\cr
\noalign{\vskip -9pt}
{\tt (g0002) }&; list of temporary variables \cr
{\tt ({\arg exp}) }&; list of value forms \cr
{\tt (g0003) }&; list of store variables \cr
{\tt (progn (rplaca g0002 g0003) g0003) }& ; storing form \cr
{\tt (car g0002) }&; accessing form \cr
\noalign{\vskip -9pt}
}}
\caption{Examples of setf methods - 2}
\endfig
%% 7.2.0 71
For {\tt (subseq {\arg seq s e})}:
\boxfig
{\dimen0=.75pc
\tabskip \dimen0 plus .5 fil
\halign to \hsize {#\hfil\tabskip \dimen0 plus
1fil\hfil\cr
\noalign{\vskip -9pt}
{\tt (g0004 g0005 g0006) }&; list of temporary variables \cr
{\tt ({\arg seq s e}) }& ; list of value forms \cr
{\tt (g0007) }& ; list of store variables \cr
{\tt (progn (replace g0004 g0007 :start1 g0005 :end1 g0006) }& \cr
{\tt g0007) }& ; storing form \cr
{\tt (subseq g0004 g0005 g0006) }&{\tt ; accessing form} \cr
\noalign{\vskip -9pt}
}}
\caption{Examples of setf methods - 3}
\endfig
∂01-Mar-89 1257 X3J13-mailer cs proposal and straw vote
Received: from multimax.encore.com by SAIL.Stanford.EDU with TCP; 1 Mar 89 12:53:49 PST
Received: from mist.encore.COM by multimax.encore.com with SMTP (5.61/25-eef)
id AA20108; Wed, 1 Mar 89 15:51:57 -0500
Received: from localhost by mist. (4.0/SMI-4.0)
id AA11442; Wed, 1 Mar 89 15:50:01 EST
Message-Id: <8903012050.AA11442@mist.>
To: baggins@ibm.com
Cc: x3j13@sail.stanford.edu
Subject: cs proposal and straw vote
Date: Wed, 01 Mar 89 15:49:59 EST
From: Dan L. Pierson <pierson@mist.encore.com>
General comments first.
I find the layout of the proposal, mainly Appendix A, confusing to the
point of uselessness. As I understand it, chapters 1 and 2 are
intended to be a general overview of the proposal, but the detailed
changes in Appendix A are what we are effectively voting on.
Unfortunately, I can't understand Appendix A without spending a long
time destroying a copy of CLtL per draft. All of the other committees
(and X3J13 as a whole) have accepted that we are writing a new
document, not rewriting Guy's book. Why do you insist on only doing
the later?
Before the Hawaii meeting, I was willing to reluctantly ignore all of
the above and just trust the Character Committee to see that Appendix
A accurately reflected the contents of chapters 1 and 2. The
combination of the revelation of deep disagreements within the
committee, and my own attempts to answer some questions by refering to
Appendix A have forced me to change my mind. I find that I cannot
understand the proposal as presented and thus cannot vote for the
contents of Appendix A. The straw ballot that follows represents my
willingness to vote for the specific issues as described in chapters 1
and 2 of the proposal provided that such a vote does not require
acceptance of the specific wording of Appendix A.
As an example of the above problems. I was unable to find anywhere in
the latest draft either the data types of character labels and
registry names or the predicates to be used to compare them. Your
replies to comments on the January draft state that these are symbols,
which seems correct, but the proposal does not appear to specify this.
Character Registries:
While the idea of character registries doesn't sound bad in principle,
I'm still not convinced that tying the first Common Lisp standard to
the output of an ISO committee which has not been (and may never be)
formed is wise. If nothing else, this approach would appear to
guarantee a period of major incompatibility for the users of any
Common Lisp implementation which provided its own set of character
registries in advance of an ISO standard.
By the way, I find the support of the ISO Prolog committee, which
seems to be being ignored by all major US and many international
Prolog implementors, rather meaningless. If you could get support from
a major, effective ISO language committee or two I might be convinced.
Moon is correct that it is (barely) possible to enumerate all the
characters in a registry without additional functionality. Never the
less, the method he proposes is far from desirable. Since I believe
that adding non-enumerable data types to Common Lisp is a bad thing, I
sould be much happier if a registry iterator were added. The following
would suffice; I'm sure that there are many acceptable alternatives:
(DO-ALL-CHARACTERS (char registry) [Macro]
body)
In particular, I would point out that requiring the available
characters to be documented is sufficient only for some users of
commercial implementations. Students, users of non-commercial
implementations, and an unfortunate number of business users have to
get by with little or no access to printed documentation.
Specific comments:
Page 8: paragraph 2 <The proposed ISO...>
Is this meant to be a proposal from X3J13 to the not-yet-existent ISO
working group? X3J13 certainly can't make a pronouncement about the
contents of a unwritten ISO Character Registry Standard.
Page 8: paragraph 3
In other words, implementations can subset character registries but
not expand them?
Straw Ballot:
Issue: CHAR-FONT-UNUSED-CHAR-BITS-NONPORTABLE
Problem: CHAR-FONT isn't used, CHAR-BITS isn't portable.
Proposal:
Eliminate of font and bit attributes.
Add rules for an implementation supporting attributes.
The only reference I can find to implementation defined attributes is
footnote 3 at the bottom of page 6. Either the "rules" mentioned
above should be added to the proposal or this part of the issue should
be dropped.
Redefine STRING-CHAR as implementation defined.
Remove CHAR-FONT-LIMIT
Remove CHAR-BITS-LIMIT
Remove INT-CHAR
Remove CHAR-BITS
Remove CHAR-FONT
Remove MAKE-CHAR
Remove CHAR-CONTROL-BIT
Remove CHAR-META-BIT
Remove CHAR-SUPER-BIT
Remove CHAR-HYPER-BIT
Remove CHAR-BIT
Remove SET-CHAR-BIT
IF: see above
Issue: CHAR-INT-ONLY-USEFUL-WHEN-ATTRIBUTES-SUPPORTED
Problem: CHAR-INT behavior is CHAR-CODE unless implementation
defined attributes are supported.
Proposal:
Remove CHAR-INT
IF: Moon agrees that this is sufficient for hashing (or I'm convinced that
he's wrong :-)).
Issue: CHARACTER-TYPE-RESTRICTIVEC
Problem: CHARACTER type doesn't allow thin & fat characters.
Proposal:
Define BASE-CHARACTER as a subtype of STRING.
Standard characters are a subset of the base
characters.
STANDARD-CHAR type is replaced by (CHARACTER :STANDARD)
Remove the semi-standard characters.
YES
Issue: STRING-TYPE-RESTRICTIVE
Problem: STRING type doesn't allow thin & fat strings.
Proposal:
Define STRING as a union type
STRING used as a type specifier for object creation
means (VECTOR CHARACTER)
All string functions operate as specified on any
string object except it is an error to insert
an extended character into a base string.
What do STRING-LESSP, etc. mean for non-standard-character strings?
Extend the COERCE function to allow coercion from
base string to extended string.
IF: the above is resolved, possibly by explictly saying it's undefined.
Issue: STRING-TYPE-ABBREVIATIONS
Problem: new types are awkward to name, want abbreviations.
Proposal:
Add BASE-STRING
Add GENERAL-STRING
YES
Issue: SIMPLE-STRING-TYPE-RESTRICTIVE
Problem: SIMPLE STRING type doesn't allow thin & fat strings.
Proposal:
Define SIMPLE-STRING as a union type
Define SIMPLE-STRING as a type specifier for object
creation means (SIMPLE-ARRAY CHARACTER (size))
YES
Issue: SIMPLE-STRING-TYPE-ABBREVIATIONS
Problem: new types are awkward to name, want abbreviations.
Proposal:
Add SIMPLE-BASE-STRING
Add SIMPLE-GENERAL-STRING
YES
Issue: FILE-EXTERNAL-REPRESENTATION
Problem: can't specify external encoding even when there are lots
Proposal:
Add :EXTERNAL-CODED-CHARACTER-FORMAT keyword to OPEN
YES
Issue: STRING-BINARY-WIDTH
Problem: Can't find out how many bytes a string will take when
written as text
Proposal:
Add :EXTERNAL-CODED-STRING-LENGTH function
YES
I think that reference to "terminal screen templates" has confused
some people without adding to the content.
Issue: CHAR-CODE-NON-PORTABLE
Problem: no way to talk about well-known external coding methods, only
internal codes
Proposal:
Add CHAR-CCS-VALUE function
YES
Issue: CHARACTER-IDENTIFICATION-NONPORTABLE
Problem: Can't portably talk about non-standard characters
Proposal:
Introduce the concept of Registries
Standardize on #\registry:id, add all-implemented-registries
Add *ALL-CHARACTER-REGISTRY-NAMES* variable
Add FIND-CHAR function
Add CHAR-LABEL function
Add CHAR-REGISTRY-NAME function
New syntax for CHARACTER type specifier
New #\label:registry character name syntax
New argument to CHARACTERP
NO: Unless the issues raised in the first part of this message are resolved.
∂01-Mar-89 1305 X3J13-mailer Section 1.7
Received: from Think.COM by SAIL.Stanford.EDU with TCP; 1 Mar 89 13:04:43 PST
Return-Path: <barmar@Think.COM>
Received: from sauron.think.com by Think.COM; Wed, 1 Mar 89 16:00:20 EST
Received: from OCCAM.THINK.COM by sauron.think.com; Wed, 1 Mar 89 15:58:25 EST
Date: Wed, 1 Mar 89 16:01 EST
From: Barry Margolin <barmar@Think.COM>
Subject: Section 1.7
To: chapman%aitg.DEC@decwrl.dec.com
Cc: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
In-Reply-To: <8903011907.AA00298@decwrl.dec.com>
Message-Id: <19890301210123.2.BARMAR@OCCAM.THINK.COM>
Date: 1 Mar 89 07:23
From: chapman%aitg.DEC@decwrl.dec.com
A language extension is
any implementation-supplied {\word tool} that isn't explicitly defined
in this standard.
I don't like this definition. I suggest:
A language extension is any documented implementation-defined behavior
of a tool defined in this standard that varies from the behavior
described in this standard; or a documented consequence in a situation
that the standard defines as undefined, unspecified, or extendable by
the implementation.
This accomplishes several things:
- It restricts the definition to tools described in the standard.
Implementations are expected to provide their own tools in their own
packages, and I don't think these are considered extensions (this would
require an implementation to litter its documentation with "this is an
extension to Common Lisp" on nearly every page).
- It only talks about "behavior". Because of a cleanup issue voted on
in Hawaii, we already have specified that implementations are not
permitted to add tools with names in the standard-defined packages.
Because I don't think we want to consider tools in other packages as
extensions, the only thing left is the behavior of standard-defined
tools.
- It only refers to "documented" behavior. If the implementation varies
from the standard in an undocumented way it is a bug, not an extension.
And if the situation has an undocumented consequence in an undefined,
unspecified, or extendable situation, it is not an extension, it is just
an accident of the implementation.
barmar
∂01-Mar-89 1326 littell@polya.Stanford.EDU Spring Quarter RA appointments
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 1 Mar 89 13:26:25 PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA24634; Wed, 1 Mar 89 13:23:40 -0800
Date: Wed, 1 Mar 89 13:23:40 -0800
From: Angelina M. Littell <littell@polya.Stanford.EDU>
Message-Id: <8903012123.AA24634@polya.Stanford.EDU>
To: To:@polya.Stanford.EDU, faclist@polya.Stanford.EDU
Cc: littell@polya.Stanford.EDU
Subject: Spring Quarter RA appointments
Please send me a list of students you plan to support during the
Spring quarter, along with their source of support and percentage of
time. I need this information by March 17th. The RA appointment
forms need to be processed soon so that the students receive their
bills with the correct tuition applied.
Thank you.
--Angie
∂01-Mar-89 1335 X3J13-mailer Re: Section 1.7
Received: from multimax.encore.com by SAIL.Stanford.EDU with TCP; 1 Mar 89 13:35:17 PST
Received: from mist.encore.COM by multimax.encore.com with SMTP (5.61/25-eef)
id AA20628; Wed, 1 Mar 89 16:31:49 -0500
Received: from localhost by mist. (4.0/SMI-4.0)
id AA11532; Wed, 1 Mar 89 16:29:55 EST
Message-Id: <8903012129.AA11532@mist.>
To: Barry Margolin <barmar@Think.COM>
Cc: "chapman%aitg.DEC@decwrl.dec.com"@Multimax.encore.com,
x3j13@sail.stanford.edu,
"skona%csilvax@hub.ucsb.edu"@multimax.encore.com
Subject: Re: Section 1.7
In-Reply-To: Your message of Wed, 01 Mar 89 16:01:00 -0500.
<19890301210123.2.BARMAR@OCCAM.THINK.COM>
Date: Wed, 01 Mar 89 16:29:54 EST
From: Dan L. Pierson <pierson@mist.encore.com>
- It restricts the definition to tools described in the standard.
Implementations are expected to provide their own tools in their own
packages, and I don't think these are considered extensions (this would
require an implementation to litter its documentation with "this is an
extension to Common Lisp" on nearly every page).
I'm not sure I agree with you here. Lucid certainly documents every
new "tool" as "a Lucid extension to Common Lisp" and this doesn't seem
to unduely clutter their documentation.
∂01-Mar-89 1404 @Score.Stanford.EDU:winograd@loire.stanford.edu Clancy and undergraduate teaching
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 1 Mar 89 14:04:19 PST
Received: from loire.stanford.edu by SCORE.STANFORD.EDU with TCP; Wed 1 Mar 89 14:03:07-PST
Received: by loire.stanford.edu (5.59/25-eef) id AA11285; Wed, 1 Mar 89 14:01:27 PDT
Date: Wed, 1 Mar 89 14:01:27 PDT
Message-Id: <8903012201.AA11285@loire.stanford.edu>
From: Terry Winograd <Winograd@csli.stanford.edu>
To: ac@score
Subject: Clancy and undergraduate teaching
I won't be able to be at the faculty meeting since we have an
undergraduate committee meeting at the same time. I wanted to express
a few thoughts relative to the appointment in general.
We have a major problem with teaching (not just undergraduate teaching)
in our department due to what I see as a temporary structural mismatch
(where temporary is on the order of 10 to 20 years). Stanford, like
other elite research institutions, has a general policy of hiring
regular faculty primarily on the basis of research strength. The
university is quite reluctant to provide regular billets to people
whose primary interest is in teaching. As a result, most of the
faculty are much more concerned with their research and not willing to
put in the time it takes to develop a consistent, coherent curriculum
and teach it well.
At the introductory service-course level, it is acceptable to hire
non-tenure-track lecturers who are excellent teachers. We have done
this quite successfully. At the graduate level, it is assumed that
only research-based professors will do an adequate job with the
material, and we just suffer with complaints about the quality of the
teaching. But in between (undergraduate beyond-intro courses) we have
a gap.
In many departments (I think this is especially typical in the
engineering school) this gap is filled by a older professors, who have
had research careers, and for various reasons don't want to continue in
that game. They turn their experience and intelligence to the concerns
of teaching, and are the mainstays for the serious curricular issues as
well as teaching many of the basic courses.
We don't have such people. I have been thinking about why this is (I
see several causal factors) and will probably get around to writing a
memo on it later. I believe that in the long run, we will normalize.
In the meantime (which as I said may be on the order of twenty years)
we need to solve the problem.
The obvious solution is to hire people who have the security and
stature (e.g., being academic council members) of the professoriate,
while having a primary focus on teaching. This is what the
professor(teaching) ranks are for, but there is a hesitancy in the
university at large to put many people in this category. I think it is
important for us (unless we have volunteers to fill the gap) to make it
clear to the university that this is a critical need and a valid
strategy. I would like to see us go in to the Dean and the Provost
with a very strong case.
My reading of Clancy is that he is well above clip level for doing
this. I'm sure we could all pick arguments with him about just how
computer science should be taught, but he has a good track record, a
good overall orientation and a focus on teaching. If he doesn't choose
to take the job if offered (which is a real possibility) we should use
this as a foot in the door to establish the need for the position, and
then move rapidly to search for someone else.
Once we have someone, we need to work out a clear understanding of
roles and status, in which real autonomy goes with formal
responsibility. That is, if he is responsible for getting the
undergraduate courses taught well, he has the autonomy (with
consultation from the rest of us) to decide what they are. But that's
getting ahead of things at this point. First we need to make the
effort to get the kind of help we need.
--t
∂01-Mar-89 1432 @Score.Stanford.EDU:wab@sumex-aim.stanford.edu rec.humor.funny, CSD students
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 1 Mar 89 14:32:02 PST
Received: from sumex-aim.stanford.edu by SCORE.STANFORD.EDU with TCP; Wed 1 Mar 89 14:29:17-PST
Received: by sumex-aim.stanford.edu (4.0/inc-1.0)
id AA02418; Wed, 1 Mar 89 14:27:34 PST
Date: Wed, 1 Mar 1989 14:27:30 PST
From: "William A. Brown" <wab@sumex-aim.stanford.edu>
To: hk.dxk.@forsythe.stanford.edu, hk.grh@forsythe.stanford.edu,
s.street@macbeth.stanford.edu, gq.vvn@forsythe.stanford.edu,
g.gorin@macbeth.stanford.edu, hk.ixb@forsythe.stanford.edu,
hk.jjs@forsythe.stanford.edu, hk.rwb@forsythe.stanford.edu,
siegman@sierra.stanford.edu, cr.apc@forsythe.stanford.edu,
faculty@score.stanford.edu, su-etc@score.stanford.edu,
brad%looking@waterloo.edu
Cc: wab@SUMEX-AIM.Stanford.EDU, s.summer-rain@lear.stanford.edu
Subject: rec.humor.funny, CSD students
Message-Id: <CMM.0.88.604794450.wab@sumex-aim.stanford.edu>
A CALL FOR RESPONSIBLE AND ETHICAL COMPUTER SCIENCE USE
Recently you received a transmission from Oren Patashnik of the computer
science department. Oren has conducted a survey of computer science students
in an effort to draft a summary statement regarding their opinion of the
recent removal of rec.humor.funny from some Stanford computer services.
Oren's survey summary started with "The students of the computer science
department..."
We too are computer science students at Stanford. Because Oren's survey
provided no outlet for us to express WHY we oppose his statement, we are
sending this transmission to let our reasons be known. As one of the persons
who supports the University's original decision, I asked others who voted
against Oren's statement to tell me why they oppose it. What follows is a
summary of their reasons:
a) Several students pointed out that this is NOT a free speech issue.
These students noted that the University is not banning the existence of
rec.humor.funny; it is simply cancelling its subscription. Several students
compared this to the University's stance on not subscribing to pornographic
magazines.
b) One student argued that including such a file, especially a humor file,
would detract from the quality of student one would attract to such a
high-profile institution such as Stanford.
c) Another student proposed a connection between the lack of support for
the removal of the bboard with the lack of minorities period in the computer
science department.
d) Several students did not support the METHOD by which the file was
removed, but agreed that it is proper and resonsible for a university to be
able to determine what it will and will not subscribe to.
In general, all of these Stanford University Computer Science students
felt that there is a proper rationale for a University determining what it
will and will not subscribe to. In addition, many felt that this particular
humor file was not in the best interest of a multicultural university.
Final notes:
a) At least one person who did vote for the Oren's statement wrote to
tell me that he believed another process should exist for determining the
propriety of subscribing to such services.
b) I wished to send this statement with Oren's, in order to provide a
balanced picture of the feelings of the computer science department.
Apparently Oren disagreed, although he was considerate enough to send me his
mailing list.
A PERSONAL NOTE:
I sincerly hope the University takes both sides of the issue into
consideration when making its final decision. We are all members of this
diverse family. Let us not tread irresponsibly upon the feet of those least
able to defend themselves. There are so many other POSITIVE ways in which
this resource can be used to foster a diverse, dynamic academic community. I
personally disagree with Oren's belief that ridicule is the best way to fight
racism; I believe a display of truth, with truth being a realistic
presentation of a culture, is much more effective in fighting racism (or
sexism). People will never change theire racist and sexist ideas until they
have something more realistic to supplant them. I would argue that a better
use of University computer services would be to provide an avenue for the
nurturing of cultural and sexual progress, not an avenue for the perpetuation
of derogatory and harmful stereotypes. As the saying goes, beauty is as
beauty does...
How are we doing?
Sincerely,
William Brown, Jr.
MD/PhD student
∂01-Mar-89 1517 @polya.Stanford.EDU:tah@linz Theory Faculty Candidate
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 1 Mar 89 15:17:54 PST
Received: from linz.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA03710; Wed, 1 Mar 89 15:13:37 -0800
Received: by linz.stanford.edu (5.59/25-eef) id AA06821; Wed, 1 Mar 89 15:12:50 PDT
Message-Id: <8903012312.AA06821@linz.stanford.edu>
To: thcom@sail, csd@score, aflb-all@polya
Cc: ag@pepper
Subject: Theory Faculty Candidate
Reply-To: tah@cs.stanford.edu
Date: 01 Mar 89 15:12:40 PST (Wed)
From: Tom Henzinger <tah@linz>
Bob Cypher (Univ. of Washington) will be visiting on Thursday and
Friday, March 2-3. Please send me a message if you want to talk
with him, and/or join him for lunch/dinner.
His schedule so far:
Th 12:30 AFLB talk
4:30 Don Knuth
5:00 dinner with Don, ?
Fr
Sorry for the short notice. -t
∂01-Mar-89 1526 X3J13-mailer minor comments on letter ballot material
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 1 Mar 89 15:26:35 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 548782; Wed 1-Mar-89 18:22:47 EST
Date: Wed, 1 Mar 89 18:22 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: minor comments on letter ballot material
To: chapman%aitg.DEC@decwrl.dec.com
cc: x3j13@SAIL.STANFORD.EDU, skona%csilvax@hub.ucsb.edu
Message-ID: <19890301232245.6.MOON@EUPHRATES.SCRC.Symbolics.COM>
Here are some minor comments about the material that you mailed out
with your letter ballot. This is not an official response to the
letter ballot.
I like the terms in the error-terminology proposal, however the
meanings of the terms are rather sloppily written. To take one
example, for "the consequences are unspecified", it says that
implementations are permitted to specify the consequences. However,
for "the consequences are undefined", it neither says that
implementations are permitted to specify the consequences, nor
that they are not. I noticed a few other things that might be
inconsistencies or ambiguities in these descriptions. I also
noticed that the reference sections in the letter ballot do not
actually use this error terminology, for the most part. I assume
these deficiencies are just due to the schedule, and will be
corrected before the final draft. I would certainly recommend
putting a lot of time into the exact wording of the definitions
of the error terminology, since that will have high leverage for
the understanding of the rest of the specification. CLtL suffered
greatly because we did not do this. I don't think it's effective
for the committee of the whole to argue over that exact wording,
I think it would be more appropriate for 2 or 3 people on the
editorial committee to write the whole set of descriptions at
one time in a consistent and unambiguous style. (On the subject
of implementations specifying the consequences, I see no advantage
to the standard forbidding implementations to say anything about
what the particular implementation will do in situations that
conforming programs are forbidden to depend upon.)
On page 2-12 of section 2.3, the second to last paragraph came from
something in 88-002R that said that CLtL doesn't specify some class
orderings but CLOS does. Now that CLtL and CLOS are not two separate
standards, this no longer makes sense. You don't need to talk about
classes being layered on top of a preexisting type system defined by
somebody else. Possibly you should delete all but the first sentence of
this paragraph.
The table of built-in classes on page 2-13 is missing a great many
entries. Now that cleanup issue DATA-TYPES-HIERARCHY-UNDERSPECIFIED has
passed, the types HASH-TABLE, READTABLE, PACKAGE, PATHNAME, STREAM, and
RANDOM-STATE should be added to this table. I also believe that the
passage of FUNCTION-TYPE means that FUNCTION should be added to this
table, although I'm less confident there. Each one of these classes
has a CPL consisting of just itself and T. Do you need a separate
cleanup issue to be passed to do this?
Page 2-24 says implementations are permitted to make certain
optimizations, but does not say what they are. This paragraph
came from page 1-42 of 88-002R, which did say (or pointed to
where it is said.) Note: I have not done a line by line
comparison of this document with 88-002R and I have no intention
of doing so. This is just a discrepancy that jumped out at me.
Page 2-9 says "Updating an instance does not change its identity as
defined by the EQ function". Page 2-24 does not say "Changing the class
of an instance does not change its identity as defined by the EQ
function". My belief is that it was the intent of the CLOS committee to
say that, although 88-002R fails to say it. Do you need a separate
cleanup issue to be passed to fix this?
Here's a suggestion from one of our CLOS implementors. Would this
change (adding the word "affected") require a vote?
Page 2-9 Redefining Classes
Updating such an instance occurs at an implementation-dependent time,
but no later than the next time a slot of that instance is read or written.
I think I'd prefer if this said:
Updating such an instance occurs at an implementation-dependent time,
but no later than the next time an affected slot of that instance is
read or written.
I (Moon again) think this is a good idea.
∂01-Mar-89 1622 misha@polya.Stanford.EDU AFLB tomorrow!
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 1 Mar 89 16:22:43 PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA07898; Wed, 1 Mar 89 16:12:46 -0800
Date: Wed, 1 Mar 89 16:12:46 -0800
From: Michael Kharitonov <misha@polya.Stanford.EDU>
Message-Id: <8903020012.AA07898@polya.Stanford.EDU>
To: aflb-all@polya.Stanford.EDU
Subject: AFLB tomorrow!
The next AFLB is, as usual, tomorrow at 12:30 in room 352.
Bob Cypher from University of Washington will speak on
Lower and Upper Bounds on Parallel Sorting
This talk presents two results in parallel sorting. The first result is an
algorithm, called Cubesort, that sorts efficiently on a number of bounded
degree parallel computers when the number of data items exceeds the number
of processors. Let $N$ be the number of data items to be sorted, let $P$ be
the number of processors in the parallel computer and let $L = N/P$. If
$\log↑{(x)} N < L < N↑{x}$ for some constant $x$, then Cubesort sorts in
$O(L\log↑{2} N/\log L)$ time on a shuffle-exchange or cube-connected cycles
computer. This result is the fastest known for these types of computers.
The second result is a lower bound on the size of sorting networks based on
Shellsort. A comparator is a device that sorts 2 items, and a sorting
network is a hardwired collection of comparators that sorts $N$ items.
Shellsort is a well known sorting algorithm that is controlled by a sequence
of parameters called increments. Researchers have suggested that a sorting
network having $O(N\log N)$ comparators could be obtained by using Shellsort
with the correct increment sequence. All increment sequences that have been
proposed for Shellsort have been monotonic. It will be shown that any
monotonic increment sequence yields a sorting network having at least
$Omega(N\log↑{2} N/\log\log N)$ comparators.
∂01-Mar-89 1748 @Score.Stanford.EDU:hayes@arisia.xerox.com rec.humor.funny, CSD students
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 1 Mar 89 17:48:54 PST
Received: from arisia.Xerox.COM by SCORE.STANFORD.EDU with TCP; Wed 1 Mar 89 17:46:56-PST
Received: by arisia.Xerox.COM
(5.59++/IDA-1.2.6) id AA24440; Wed, 1 Mar 89 17:42:49 PST
Date: Wed, 1 Mar 89 17:42:49 PST
From: Pat Hayes <hayes@arisia.xerox.com>
Message-Id: <8903020142.AA24440@arisia.Xerox.COM>
To: wab@SUMEX-AIM.STANFORD.EDU
Cc: hk.dxk.@forsythe.stanford.edu, hk.grh@forsythe.stanford.edu,
s.street@macbeth.stanford.edu, gq.vvn@forsythe.stanford.edu,
g.gorin@macbeth.stanford.edu, hk.ixb@forsythe.stanford.edu,
hk.jjs@forsythe.stanford.edu, hk.rwb@forsythe.stanford.edu,
siegman@sierra.stanford.edu, cr.apc@forsythe.stanford.edu,
faculty@SCORE.STANFORD.EDU, su-etc@SCORE.STANFORD.EDU,
brad%looking@waterloo.edu, wab@SUMEX-AIM.STANFORD.EDU,
s.summer-rain@lear.stanford.edu
In-Reply-To: "William A. Brown"'s message of Wed, 1 Mar 89 14:27:30 PST <CMM.0.88.604794450.wab@sumex-aim.stanford.edu>
Subject: rec.humor.funny, CSD students
I am glad that you were able to circulate your oppposition view in
favor of electronic censorship. But some of what you say seems to
overstate your case. For a start, is it really fair to compare
rec.humor.funny to a pornographic magazine? What percentage of the
content of the newsletter has ever been in any way even slightly
racist or otherwise offensive? One would have to be a VERY sensitive
Scot to be really offended by the joke which McCarthy quoted as being
the one which apparently led to all this ruckus.
In what possible way could the University subscribing to an electronic
newsletter be considered "treading on the feet of those least able to
defend themselves" ? One would have to be actively searching for
things to offend one in order to even become aware of the thing: we
arent talking about defacing posters or assaulting people in the
street. And its not something which helps to elect KKKlan members,
its a simple source of humor. Low humor, perhaps, but thats
a separate issue: thats not sufficient reason to ban it.
Let me suggest that discussion of this poor little blackboard is
getting out of hand, especially when people are drawing veiled hints
about the possible connections between its defenders and the lack of
minority CS students...Ah, that helps to explain it, those computer
scientists are all hidden racialists; and they have a poor-quality
sense of humor as well...not the sort of people one would expect to
meet on a dark night in a high-profile institution such as Stanford,
no doubt. I expect some of them laugh at Benny Hill ( shudder ).
The trouble with your final suggestion, Mr.Brown, is this: who is to
decide what sort of stuff is OK to nurture "cultural and sexual
progress"? Will you have a committee which will check out the lines
coming into the campus and give its cultural approval? ( What will it
make of blasphemy, which is far more legitimately offensive to true
believers? ) No, this is an old idea, tried many times, that doesnt
work, because nobody has the insight, let alone the right, to make
such decisions for a society.
Pat Hayes
∂01-Mar-89 1853 X3J13-mailer Re: minor comments on letter ballot material
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 1 Mar 89 18:53:24 PST
Received: from Semillon.ms by ArpaGateway.ms ; 01 MAR 89 18:46:12 PST
Date: Wed, 1 Mar 89 18:45 PST
From: Gregor.pa@Xerox.COM
Subject: Re: minor comments on letter ballot material
To: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
cc: chapman%aitg.DEC@decwrl.dec.com, x3j13@SAIL.STANFORD.EDU,
skona%csilvax@hub.ucsb.edu
Fcc: BD:>Gregor>mail>outgoing-mail-5.text.newest
In-Reply-To: <19890301232245.6.MOON@EUPHRATES.SCRC.Symbolics.COM>
Message-ID: <19890302024559.5.GREGOR@SPIFF.parc.xerox.com>
Line-fold: no
Date: Wed, 1 Mar 89 18:22 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Here's a suggestion from one of our CLOS implementors. Would this
change (adding the word "affected") require a vote?
Page 2-9 Redefining Classes
Updating such an instance occurs at an implementation-dependent time,
but no later than the next time a slot of that instance is read or written.
I think I'd prefer if this said:
Updating such an instance occurs at an implementation-dependent time,
but no later than the next time an affected slot of that instance is
read or written.
I (Moon again) think this is a good idea.
This change makes is impossible for people to use MAKE-INSTANCES-OBSOLETE
to arrange for any future access to the slots of an instance to trap.
One of the reasons we gave for not adding an instance enumeration
mechanism was the availability of this functionality. So, I don't think
we should make this change.
I agree that the other change you suggested (change-class vs. eq) is in
line with our original intent and we should go ahead and make it. I
hope it doesn't require a vote.
Page 2-9 says "Updating an instance does not change its identity as
defined by the EQ function". Page 2-24 does not say "Changing the class
of an instance does not change its identity as defined by the EQ
function". My belief is that it was the intent of the CLOS committee to
say that, although 88-002R fails to say it. Do you need a separate
cleanup issue to be passed to fix this?
-------
∂01-Mar-89 2340 X3J13-mailer Section 2.2, part 1
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 1 Mar 89 23:38:50 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
id AA07792; Wed, 1 Mar 89 23:36:51 PST
Message-Id: <8903020736.AA07792@decwrl.dec.com>
Received: by decwrl.dec.com (5.54.5/4.7.34)
for x3j13@sail.stanford.edu; id AA07792; Wed, 1 Mar 89 23:36:51 PST
From: chapman%aitg.DEC@decwrl.dec.com
Date: 2 Mar 89 02:32
To: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
Subject: Section 2.2, part 1
%% Types - part 1
%% Type Hierarchy and Relationships
\beginsubSection{Type Hierarchy and Relationships}
Figure {\chapno--\the\capno}
depicts the @clisp\ type hierarchy and relationships.
An explanation of the
relationships of data types to each other follows.
\beginlist
%% 2.15.0 4
\itemitem{\bull} {\datatype t} is a {\word supertype} of every type whatsoever.
Every {\word object} is of type {\datatype t}.
%% 2.15.0 5
\itemitem{\bull} {\datatype Nil} is a {\word subtype} of every type whatsoever.
No {\word object} is of type {\datatype nil}.
\issue{DATA-TYPES-HIERARCHY-UNDERSPECIFIED}
The following will be left out of the standard.
%% 2.15.0 6
\itemitem{\bull} {\datatype Cons}, {\datatype symbol},
{\datatype array}, {\datatype number}, and {\datatype character}
are pairwise {\word disjoint}.
\endissue{DATA-TYPES-HIERARCHY-UNDERSPECIFIED}
%% 2.15.0 7
\itemitem{\bull} {\datatype Rational}, {\datatype float}, and {\datatype complex}
are pairwise {\word disjoint}
{\word subtypes} of {\datatype number}.
%% 2.15.0 8
\itemitem{\bull} {\datatype Integer}
and {\datatype ratio} are {\word disjoint subtypes }
of {\datatype rational}.
%% 2.15.0 10
\itemitem{\bull}
{\datatype Fixnum} and {\datatype bignum}
are {\word disjoint} {\word subtypes} of {\datatype integer}.
%% 2.15.0 12
\itemitem{\bull}
{\datatype Short-float}, {\datatype single-float}, {\datatype double-float}, and
{\datatype long-float} are {\word subtypes} of {\datatype float}.
Any two of them must be
either {\word disjoint} or identical;
if identical, then any other types between
them in the above ordering must also be identical to them
(for example, if {\datatype single-float} and {\datatype long-float}
are identical,
then {\datatype double-float} must be identical to them also).
%% 2.15.0 13
\itemitem{\bull} {\datatype Null} is a
{\word subtype} of {\datatype symbol}; the only {\word object} of
type
{\datatype null} is @nil\rm.
%% 2.15.0 14
\itemitem{\bull} {\datatype Cons} and {\datatype null}
form an {\word exhaustive partition} of
{\datatype list}.
%% 2.15.0 15
\itemitem{\bull} {\datatype Standard-char} is a {\word subtype}
of {\datatype string-char};
{\datatype string-char} is a {\word subtype} of {\datatype character}.
%% 2.15.0 16
\itemitem{\bull} {\datatype String} is a
{\word subtype} of {\datatype vector}.
{\datatype String}
is identical to {\tt (vector string-char)}, which in turn
is the same as {\tt (array string-char (*))}.
%% 2.15.0 17
\itemitem{\bull} {\datatype Bit-vector}
is a {\word subtype} of {\datatype vector}, for {\datatype bit-vector}
means {\tt (vector bit)}.
%% 2.15.0 18
\itemitem{\bull} {\tt (vector t)} and
{\datatype string}, and {\datatype bit-vector} are {\word disjoint}.
%% 2.15.0 19
\itemitem{\bull} {\datatype Vector} is a
{\word subtype} of {\datatype array};
for all types @f[x]\rm,
{\tt (vector x)} is the same as
{\tt (array x (*)).}
%% 2.15.0 20
\itemitem{\bull} {\datatype Simple-array} is a {\word subtype}
of {\datatype array}.
%% 2.15.0 21
\itemitem{\bull} {\datatype Simple-vector}, {\datatype simple-string}, and
{\datatype simple-bit-vector} are
{\word disjoint subtypes} of {\datatype simple-array}, for they
respectively mean
{\tt (simple-array t (*))}, {\tt (simple-array string-char (*))},
and {\tt (simple-array bit (*))}.
%% 2.15.0 22
\itemitem{\bull} {\datatype Simple-vector} is a {\word subtype}
of {\datatype vector},
and is
a {\word subtype} of {\tt (vector t)}.
%% 2.15.0 23
\itemitem{\bull} {\datatype Simple-string} is a
{\word subtype} of {\datatype string}.
%% 2.15.0 25
\itemitem{\bull} {\datatype Simple-bit-vector}
is a {\word subtype} of {\datatype bit-vector}.
%% 2.15.0 26
\itemitem{\bull} {\datatype Vector} and {\datatype list}
are {\word disjoint subtypes} of {\datatype sequence}.
\issue{DATA-TYPES-HIERARCHY-UNDERSPECIFIED}
The following will be left out of the standard.
%% 2.15.0 27
\itemitem{\bull} {\datatype Hash-table}, {\datatype readtable},
{\datatype package}, {\datatype pathname},
{\datatype stream}, and {\datatype random-state} are {\word pairwise disjoint}.
\endissue{DATA-TYPES-HIERARCHY-UNDERSPECIFIED}
\issue{DATA-TYPES-HIERARCHY-UNDERSPECIFIED}
\itemitem{\bull} The types {\datatype cons},
{\datatype symbol}, {\datatype array},
{\datatype number}, {\datatype character}, {\datatype hash-table},
\issue{FUNCTION-TYPE:X3J13-MARCH-88}
{\datatype function},
\endissue{FUNCTION-TYPE:X3J13-MARCH-88}
{\datatype readtable},
{\datatype package}, {\datatype pathname}, {\datatype stream},
{\datatype random-state}, and any single other type created
by {\function defstruct} or {\function defclass} are pairwise disjoint.
\endissue{DATA-TYPES-HIERARCHY-UNDERSPECIFIED}
%% 2.15.0 28
\itemitem{\bull} Any two types created by @Macref[defstruct] are {\word disjoint} unless
one is a {\word supertype} of the other by virtue of
the {\function defstruct} {\keyword :include} option.
\itemitem{\bull} Any two classes created by {\function defclass} are disjiont
unless one is a superclass of the other.
%% 2.15.0 29
\itemitem{\bull} An {\word exhaustive union} for {\datatype common} is formed by
{\datatype cons}, {\datatype symbol}, {\tt (array x)} where @f[x]
is either {\datatype t} or
a {\word subtype}
of {\datatype common}, {\datatype string}, {\datatype fixnum}, {\datatype
bignum}, {\datatype ratio},
{\datatype short-float}, {\datatype single-float}, {\datatype double-float},
{\datatype long-float},
{\tt (complex x)} where @f[x] is a
{\word subtype} of {\datatype common},
{\datatype standard-char}, {\datatype hash-table}, {\datatype readtable},
{\datatype package}, {\datatype pathname},
{\datatype stream}, {\datatype random-state}, and all types
created by the user
via @Macref[defstruct]\rm.
An implementation may not add {\word subtypes} to
{\datatype common}.
\endlist
%%kc2
\eject
\fig{
\def\IgnoreLineBreaks{\catcode'15=9 \catcode'12=9}
\def\IgnoreWhiteSpace{\catcode'11=9 \catcode'40=9 \IgnoreLineBreaks}
\def\DontIgnoreWhiteSpace{\catcode'12=\active\catcode'15=5\catcode'11=10\catcode'40=10}
\font \pipefont= circle10
\font \foofont = amr10 at 1sp
\IgnoreWhiteSpace
\let \adv=\advance
\def\he{height}
\def\wi{width}
\def\de{depth}
\newdimen \stroke
\stroke= \fontdimen8\pipefont % thickness of line in circles
\newdimen \radius \radius=6pt % radius of circles
\newdimen\irad \irad=\radius\advance\irad by -.5\stroke
\newdimen\orad \orad=\radius\advance\irad by .5\stroke
\newbox\BStrutbox
\setbox\BStrutbox\hbox{\vrule\wi0pt\he10pt\de10pt}
\def\BoxStrut{\unhcopy\BStrutbox}
!% Arrows
\newdimen\ArrowShift
\ArrowShift=\fontdimen22\tensy
\advance\ArrowShift by -0.5\stroke
\def\StrikeOut #1
{ \setbox0\hbox{#1}
\hbox to 1\wd0
{ \vrule \he\stroke\de0pt\wi\wd0
\hskip-\wd0
\unhbox0
}
}
\def\LeftArrow
{ \hskip 0.5\stroke
\StrikeOut{\lower\ArrowShift\hbox to 10pt{\tensy\char'40\hss}}
}
\def\RightArrow
{ \StrikeOut{\lower\ArrowShift\hbox to 10pt{\hss\tensy\char'41}}
\hskip 0.5\stroke
}
\def\ArrowLine
{ \StrikeOut{\hskip 10pt\hskip 0.5\stroke}
}
\def\LeftToRight
{ \let\RightSideArrow=\ArrowLine
\let\LeftSideArrow=\RightArrow
}
\def\RightToLeft
{ \let\LeftSideArrow=\ArrowLine
\let\RightSideArrow=\LeftArrow
}
\def\NoArrows
{ \let\LeftSideArrow=\ArrowLine
\let\RightSideArrow=\ArrowLine
}
!% boxes around tokens
\let\NonterminalFont=\tenrm
\newbox\TStrutbox
\setbox0\hbox{\NonterminalFont{Bg}}
\setbox\TStrutbox\hbox{\vrule\wi0pt\he\ht0\de\dp0}
\def\TextStrut{\unhcopy\TStrutbox}
\def\HorzLine{\hrule \he \stroke \de 0pt}
\def\HFil{\leaders\HorzLine\hfil}
\def\HFill{\leaders\HorzLine\hfill}
\def\Nonterminal#1
{\setbox1\vbox to 0pt{
\vss
\hbox{\TextStrut\NonterminalFont\space#1\space\hskip-\stroke}
\vss}
\hbox{
\BoxStrut
\LeftSideArrow
\lower\irad\vbox{
\TopSquare
\copy1
\BotSquare}
\RightSideArrow}
}
\def\TopSquare
{ \hbox{
\vrule\he\stroke\de\irad\wi\stroke
\vrule\he\stroke\de0pt\wi\wd1
\vrule\he\stroke\de\irad\wi\stroke}
}
\def\BotSquare
{ \hbox{
\vrule\he\orad\de0pt\wi\stroke
\vrule\he\stroke\de0pt\wi\wd1
\vrule\he\orad\de0pt\wi\stroke}
}
\def\\#1{\Nonterminal{#1}\HFil}
\def\last#1{{\def\RightSideArrow{}\Nonterminal{#1}}}
!% piping
\def\foo{\rlap{\foofont\char'40}}
\def\FulVert{\vrule \wi\stroke\foo\hskip-\stroke}
\def\TopVert{\vrule\de-\irad \wi\stroke\foo\hskip-\stroke}
\def\BotVert{\vrule\he-\orad \wi\stroke\foo\hskip-\stroke}
\def\Center#1,#2.
{\hskip\radius\foo#1\lower.5\stroke\hbox{\pipefont#2}\hskip\radius}
\def\ru{\char'10\hskip -2\radius}
\def\rd{\char'11\hskip -2\radius}
\def\ld{\char'12\hskip -2\radius}
\def\lu{\char'13\hskip -2\radius}
\def\thru{\hskip-\radius\vrule\he\stroke\de0pt\wi2\radius\hskip\radius\hskip-2\radius}
\def\Center#1,#2.
{\foo\hskip\radius#1{\pipefont#2\unskip}\hskip-\radius}
\def\LT{\Center\BotVert,\lu.}
\def\LU{\Center\FulVert,\lu.}
\def\LL{\Center\FulVert,\ld.}
\def\LB{\Center\TopVert,\ld.}
\def\LMid{\Center\TopVert\BotVert,\rd\ru\thru.}
\def\LMU{\Center\TopVert,\rd\thru.}
\def\LML{\Center\BotVert,\ru\thru.}
\def\LFD{\Center\FulVert,\ru\thru.}
\def\LS{\Center\TopVert\BotVert,\rd\ru.}
\def\RT{\Center\BotVert,\ru.}
\def\RU{\Center\FulVert,\ru.}
\def\RL{\Center\FulVert,\rd.}
\def\RB{\Center\TopVert,\rd.}
\def\RMid{\Center\TopVert\BotVert,\ld\lu\thru.}
\def\RMU{\Center\TopVert,\ld\thru.}
\def\RML{\Center\BotVert,\lu\thru.}
\def\Cross{\Center\FulVert,\thru.}
\def\LR{\Center,\thru.}
\def\TB{\Center\FulVert,.}
!% ShiftBox
\newbox\x
\newbox\y
\newbox\tempy
\newbox\z
\newbox\tempz
\def\ShiftBox#1{
\savemod
\saverulebox
\setbox\x
\vbox{ \everycr{\noalign{{\modifyrulebox\global\setbox\z\hbox{}}}}
\halign{&\setbox\x\hbox{##}
\global \setbox\z\hbox{\unhbox\z\vrule\he\ht\x\de\dp\x\wi0pt}
\unhbox\x
\cr
#1}}%
\lower\ht\y\box\x\HFil
\restoremod
\restorerulebox
}
\def\saverulebox{
\setbox\tempy\box\y
\global \setbox\y\vbox{}
\setbox\tempz\box\z
\global \setbox\z\hbox{}
}
\def\restorerulebox{
\global \setbox\y\box\tempy
\global \setbox\z\box\tempz
}
\def\topmod{}
\def\thisrow{\global\let\modifyrulebox\firstmod}
\def\firstmod{
\global\setbox\y\vbox{\hrule\he0pt\wi0pt\de\dp\z}
\global\let\modifyrulebox\latermod
}
\def\latermod{
\global\setbox\y\vbox{\unvbox\y\hrule\he\ht\z\de\dp\z\wi0pt}
}
\def\savemod{
\let\tempmod\modifyrulebox
\global \let\modifyrulebox\topmod
}
\def\restoremod{
\global\let\modifyrulebox\tempmod
}
\DontIgnoreWhiteSpace
!{\baselineskip0pt
\lineskip0pt
\LeftToRight
\IgnoreWhiteSpace
\def\ms{\os
\os\os\os}
\def\os{\omit\span}
\hbox{
\\{nil}
\ShiftBox{
\ms\ShiftBox{
\ShiftBox{
\ShiftBox{
\LT\\{fixnum}&\RT\cr
\LU\\{bignum}&\RMU\thisrow\cr
}\\{integer}&\RML\thisrow\cr
\LU\\{ratio}&\RB\cr
}\\{rational}&\RT\cr
\ShiftBox{
\LU\\{short-float}&\RT\cr
\LU\\{single-float}&\RMid\thisrow\cr
\LU\\{double-float}&\RL\cr
\LU\\{long-float}&\RB\cr
}\\{float}&\RMid\thisrow\cr
\LU\\{complex}&\RB\cr
}\\{number}&\RT\cr
\ms\LU\\{standard-char}\\{string-char}\\{character}&\RU\cr
\LU\\{null}&\os\os\os\LML\\{symbol}&\RU\cr
\LMid\\{cons}&\os\os\RMU\\{list}&\RML\\{sequence}&\RMid\thisrow\cr
\os\LL\\{simple-vector}&\LML\HFil&\RML\\{vector}&\LS&\TB\cr
\os\LL\\{simple-bit-vector}&\LFD\\{bit-vector}&\RL&\TB&\TB\cr
\os\LL\\{simple-string}&\LFD\\{string}&\RB&\TB&\TB\cr
\os\TB&\os\LB\HFil\\{simple-array}&\RMU\\{array}&\RL\cr
\ms\LL\\{function}\\{compiled-function}&\RL\cr
\ms\LL\\{stream}&\RL\cr
\ms\LL\\{hash-table}&\RL\cr
\ms\LL\\{readtable}&\RL\cr
\ms\LL\\{package}&\RL\cr
\ms\LL\\{pathname}&\RL\cr
\ms\LL\\{random-state}&\RL\cr
\ms\LB\\{structures}&\RB\cr
}
\last{t}}}
}\caption{Relationships among the Common Lisp data types}
\endfig
\eject
%%kc1
\endsubSection%{Type Hierarchy and Relationships}
\beginsubSection{Data Type Definition}
Following is a description of each @clisp\ {\word type}.
%% 2.0.0 6
\beginsubsubsection{\datatype t}
The set of all {\word objects} is specified
by @true\rm.
\beginsubsubsection{\datatype Number}
The type {\datatype number\/} is composed of the pairwise {\word disjoint}
{\datatype rational}, {\datatype float}, and {\datatype complex\/} subtypes\/.
An {\word object} of type {\datatype number\/} is called a {\datatype
number\/}.
%% 12.0.0 4
Two {\datatype numbers\/} that are {\function eql} or
{\function =} are not necessarily {\function eq}.
The contagion rules for implicit coercions of arguments in
{\word operations} follow:
\beginlist
\itemitem{\bull}
When a {\word shorter}
{\datatype floating-point} number is combined with a longer one in an
operation,
the result will be of the {\word type} of the longer
of the two {\datatype floating-point} numbers.
\issue{CONTAGION-ON-NUMERICAL-COMPARISONS:TRANSITIVE)}
\itemitem{\bull}
For {\word functions} that combine arguments of different {\word types},
when one argument is a {\datatype rational} and the other is
a {\datatype floating-point} number,
the {\datatype rational} is first
converted to a {\datatype floating-point} number of
the same format.
For {\word functions} that compare arguments of different {\word types},
when one argument is a {\datatype rational} and the other is
a {\datatype floating-point} number, the function
{\function rational} is effectively
called to convert the {\datatype floating-point}
number to a {\datatype rational} and then an exact
comparison is performed. In the case of {\datatype complex\/}
numbers, the real and
imaginary parts are handled individually.
\endissue{CONTAGION-ON-NUMERICAL-COMPARISONS:TRANSITIVE)}
\itemitem{\bull}
When a non-{\datatype complex\/}
number meets a {\datatype complex\/} number, the non-{\datatype complex\/}
number is in effect first converted to a
{\datatype complex\/} number by providing an
imaginary part of {\tt $0$}.
\endlist
%% 12.5.3 1
Many of the irrational and transcendental functions are multiply defined
in the complex domain; for example, there are in general an infinite
number of complex values for the logarithm function. In each such
case, a principal value must be chosen for the function to return.
In general, such values cannot be chosen so as to make the range
continuous; lines in the domain
called branch cuts must be defined, which in turn
define the discontinuities in the range.
%% 12.5.3 2
@clisp\ defines the branch cuts, principal values, and boundary
conditions for the complex functions following
@apl\rm.
%% 12.7.0 1
%% 12.7.0 2
Logical operations require {\datatype integers}
as arguments; an error of type {\datatype type-error}
is signalled if a non-{\datatype integer} is supplied
as an argument.
{\datatype Integer} arguments to logical operations are treated as if
they were represented in two's-complement notation.
Internally an implementation
may or may not use a two's-complement representation.
%% 12.8.0 2
The byte-manipulation {\word forms}
use {\word objects} called byte specifiers to
designate a specific byte position within an {\datatype integer}.
The representation of a byte specifier is implementation-dependent ---
it may or may not be a {\datatype number}.
The function {\function byte} will construct a byte specifier,
and the byte-manipulation {\word forms} will accept it.
The following figures contain lists of {\word tools} applicable to
{\datatype numbers}.
Figure {\chapno--\the\capno} lists the number predicate and comparison
{\word tools}.
\boxfig
{\dimen0=.75pc
\tabskip \dimen0 plus .5 fil
\halign to \hsize {#\hfil\tabskip \dimen0 plus 1fil\hfil\tabskip \dimen0 plus
1fil\hfil\cr
\noalign{\vskip -9pt}
{\tt zerop }&{\tt plusp }&{\tt minusp }\cr
{\tt oddp }&{\tt evenp } &{\tt = }\cr
{\tt /= }&{\tt < } &{\tt > }\cr
{\tt <= }&{\tt >= } &{\tt max }\cr
{\tt min} & & \cr
\noalign{\vskip -9pt}
}}
\caption{Number tools - 1}
\endfig
Figure {\chapno--\the\capno} lists the {\word tools} for arithmetic operations.
\boxfig
{\dimen0=.75pc
\tabskip \dimen0 plus .5 fil
\halign to \hsize {#\hfil\tabskip \dimen0 plus 1fil\hfil\tabskip \dimen0 plus
1fil\hfil\cr
\noalign{\vskip -9pt}
{\tt + }&{\tt - } &{\tt * }\cr
{\tt / }&{\tt 1+ } &{\tt 1- }\cr
{\tt incf }&{\tt decf } &{\tt conjugate }\cr
{\tt gcd }&{\tt lcm } & \cr
\noalign{\vskip -9pt}
}}
\caption{Number tools - 2}
\endfig
Figure {\chapno--\the\capno} lists the {\word tools}
for exponential, logarithmic, and trigonometric operations.
\boxfig
{\dimen0=.75pc
\tabskip \dimen0 plus .5 fil
\halign to \hsize {#\hfil\tabskip \dimen0 plus 1fil\hfil\tabskip \dimen0 plus
1fil\hfil\cr
\noalign{\vskip -9pt}
{\tt exp }&{\tt expt } &{\tt log }\cr
{\tt sqrt }&{\tt isqrt } &{\tt abs }\cr
{\tt phase }&{\tt signum } &{\tt sin }\cr
{\tt cos }&{\tt tan } &{\tt cis }\cr
{\tt asin }&{\tt acos } &{\tt atan }\cr
{\tt pi }&{\tt sinh } &{\tt cosh }\cr
{\tt tanh }&{\tt asinh } &{\tt acosh }\cr
{\tt atanh }& &\cr
\noalign{\vskip -9pt}
}}
\caption{Number tools - 3}
\endfig
Figure {\chapno--\the\capno} lists the {\word tools}
for type conversion and component extraction operations.
\boxfig
{\dimen0=.75pc
\tabskip \dimen0 plus .5 fil
\halign to \hsize {#\hfil\tabskip \dimen0 plus 1fil\hfil\tabskip \dimen0 plus
1fil\hfil\cr
\noalign{\vskip -9pt}
{\tt float }&{\tt rational} &{\tt rationalize } \cr
{\tt numerator} & {\tt denominator }& {\tt floor} \cr
{\tt ceiling} & {\tt truncate} & {\tt round} \cr
{\tt mod} & {\tt rem} & {\tt ffloor}\cr
{\tt fceiling} & {\tt ftruncate} & {\tt fround}\cr
{\tt decode-float} & {\tt scale-float} & {\tt float-radix}\cr
{\tt float-sign} & {\tt float-digits} & {\tt float-precision}\cr
{\tt integer-decode-float} & {\tt complex} & {\tt realpart}\cr
{\tt imagpart} & & \cr
\noalign{\vskip -9pt}
}}
\caption{Number tools - 4}
\endfig
Figure {\chapno--\the\capno} lists the logical operation {\word tools}.
\boxfig
{\dimen0=.75pc
\tabskip \dimen0 plus .5 fil
\halign to \hsize {#\hfil\tabskip \dimen0 plus 1fil\hfil\tabskip \dimen0 plus
1fil\hfil\cr
\noalign{\vskip -9pt}
{\tt logior} & {\tt logxor} & {\tt logand} \cr
{\tt logeqv} & {\tt lognand} & {\tt lognor} \cr
{\tt logandc1} & {\tt logandc2 }&{\tt logorc1 } \cr
{\tt logorc2 } & {\tt boole }&{\tt boole-clr }\cr
{\tt boole-set } & {\tt boole-1 }&{\tt boole-2 }\cr
{\tt boole-c1 } & {\tt boole-c2 }&{\tt boole-and }\cr
{\tt boole-ior } & {\tt boole-xor }&{\tt boole-eqv }\cr
{\tt boole-nand } & {\tt boole-nor }&{\tt boole-andc1 }\cr
{\tt boole-andc2 } & {\tt boole-orc1 }&{\tt boole-orc2 }\cr
{\tt lognot } & {\tt logtest }&{\tt logbitp }\cr
{\tt ash } & {\tt logcount} & {\tt integer-length }\cr
\noalign{\vskip -9pt}
}}
\caption{Number tools - 5}
\endfig
Figure {\chapno--\the\capno} lists the byte manipulation {\word tools}.
\boxfig
{\dimen0=.75pc
\tabskip \dimen0 plus .5 fil
\halign to \hsize {#\hfil\tabskip \dimen0 plus 1fil\hfil\tabskip \dimen0 plus
1fil\hfil\cr
\noalign{\vskip -9pt}
{\tt byte} &{\tt byte-size} & {\tt byte-position}\cr
{\tt ldb} & {\tt ldb-test} & {\tt mask-field} \cr
{\tt dpb} & {\tt deposit-field} & \cr
\noalign{\vskip -9pt}
}}
\caption{Number tools - 6}
\endfig
Figure {\chapno--\the\capno} lists the implementation-dependent parameters.
\boxfig
{\dimen0=.75pc
\tabskip \dimen0 plus .5 fil
\halign to \hsize {#\hfil\tabskip \dimen0 plus 1fil\hfil\cr
\noalign{\vskip -9pt}
{\tt most-positive-fixnum }& {\tt most-negative-fixnum }\cr
{\tt most-positive-short-float } &{\tt least-positive-short-float} \cr
{\tt least-negative-short-float} & {\tt most-negative-short-float} \cr
{\tt most-positive-single-float } & {\tt least-positive-single-float} \cr
{\tt least-negative-single-float} & {\tt most-negative-single-float} \cr
{\tt most-positive-double-float} & {\tt least-positive-double-float} \cr
{\tt least-negative-double-float} & {\tt most-negative-double-float} \cr
{\tt most-positive-long-float} &{\tt least-positive-long-float} \cr
{\tt least-negative-long-float} & {\tt most-negative-long-float} \cr
{\tt short-float-epsilon} & {\tt single-float-epsilon} \cr
{\tt double-float-epsilon} & {\tt long-float-epsilon} \cr
{\tt short-float-negative-epsilon} & {\tt single-float-negative-epsilon}\cr
{\tt double-float-negative-epsilon}& {\tt long-float-negative-epsilon} \cr
\noalign{\vskip -9pt}
}}
\caption{Number tools - 7}
\endfig
\beginsubsubsection{\datatype Rational}
The type {\datatype
rational} is composed of the {\word disjoint}
{\datatype integer} and {\datatype
ratio} subtypes.
An {\word object} of type {\datatype rational\/} is called a {\datatype
rational}.
%% 12.1.0 2
The following rules apply to {\datatype rational} computations.
\beginlist
\itemitem {--} Rational computations cannot overflow in the usual sense
(though there may not be enough storage
to represent one), since
{\datatype integers} and {\datatype ratios}
may in principle be of any magnitude.
%% 2.1.2 1
\itemitem {--} The representation of a
{\datatype rational} number is as the ratio of two
integers, the numerator and denominator, where the greatest common divisor of
the numerator and denominator is one, and where the denominator is positive
and greater than one. If the value of a {\datatype rational} is
an {\datatype integer}, it is
represented as an integer.
%% 2.1.2 2
%% 12.1.0 5
\itemitem{--} If any computation produces
a result that is a {\datatype ratio} of
two {\datatype integers} such that the denominator evenly divides the
numerator, then the result is converted to the equivalent
{\datatype integer}.
%% 12.1.0 3
\itemitem{--} When
{\datatype rational} and {\datatype floating-point} numbers
are compared or combined by
a numerical {\word function},
the {\datatype rational}
is first converted to a {\datatype floating-point} number of
the same format. For {\word forms} such as {\function +}
that take more than two arguments,
it is permitted that part of the operation be carried out exactly using
{\datatype rationals}
and the rest be done using floating-point arithmetic.
%% 12.5.0 4
\itemitem{--}
When the arguments to
a mathematical
{\word function} are all {\datatype rational} and the true mathematical result
is also (mathematically) rational, then unless otherwise noted
an implementation is free to return either an accurate
{\datatype rational} result
or a {\datatype single-float} approximation.
If the arguments are all {\datatype rational}
but the result cannot be expressed
as a {\datatype rational} number, then a {\datatype single-float}
approximation is always returned.
\endlist
∂01-Mar-89 2355 X3J13-mailer Section 2.2 - part 2
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 1 Mar 89 23:55:24 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
id AA08620; Wed, 1 Mar 89 23:53:21 PST
Message-Id: <8903020753.AA08620@decwrl.dec.com>
Received: by decwrl.dec.com (5.54.5/4.7.34)
for x3j13@sail.stanford.edu; id AA08620; Wed, 1 Mar 89 23:53:21 PST
From: chapman%aitg.DEC@decwrl.dec.com
Date: 2 Mar 89 02:51
To: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
Subject: Section 2.2 - part 2
%%Types - part 2
\beginsubsubsection{\datatype Ratio}
An {\word object} of type {\datatype ratio\/} (a {\datatype ratio}) is the
mathematical ratio of two {\datatype integers}.
%% 2.1.1 1
\beginsubsubsection{\datatype Integer}
The type {\datatype integer} is composed of
{\word disjoint} {\datatype
fixnum} and {\datatype bignum} subtypes.
An {\word object} of type {\datatype integer\/} (an {\datatype integer}) is a
mathematical integer. There is no limit on the magnitude of an
{\datatype
integer}.
Properties of integers follow:
\beginlist
\itemitem{--} 0 = $-0$
\itemitem{--} The default printed
representation and interpretation for an {\datatype
integer} is decimal.
\endlist
%% 2.1.1 2
\beginsubsubsection{\datatype Fixnum}
An {\word object} of type {\datatype fixnum} (a {\datatype fixnum}) is an
an
{\datatype integer} whose value is between
{\function most-negative-fixnum} and
{\function most-positive-fixnum} inclusive.
Exactly which {\datatype integers} are
{\datatype fixnums} is implementation-dependent.
\beginsubsubsection{\datatype Bignum}
An {\word object} of type {\datatype bignum} (a {\datatype bignum})
is an
{\datatype integer} outside the {\datatype fixnum} range.
\beginsubsubsection{\datatype Float}
The type {\datatype float} is composed of the
{\word disjoint} or identical {\datatype short-float},
{\datatype single-float},
{\datatype double-float}, and {\datatype long-float} subtypes.
An {\word object} of type {\datatype float} (a {\datatype floating}-point
number)
is a (mathematical)
{\datatype rational} of the form
{\it s@centerdot f@centerdot $b↑{e-p}$},
where {\it s} is +1 or @minussign 1, the {\it sign}\rm;
{\it b} is an {\datatype integer}
greater than 1, the {\it base} or {\it radix} of the representation;
{\it p} is a positive {\datatype integer},
the {\it precision} (in base-{\it b} digits) of the floating-point {\datatype
number};
{\it f} is a positive {\datatype integer}
between {\it $b↑{p-1}$} and
{\it $b↑p-1$} (inclusive), the significand;
and {\it e} is an {\datatype integer}, the exponent.
The value of {\it p} and the range of {\it e}
depends on the implementation and on the type of {\datatype floating-point} number
within that implementation.
An {\word object} of type {\datatype short-float\/} is called a {\datatype
short-float}.
An {\word object} of type {\datatype single-float\/} is called a {\datatype
single-float}.
An {\word object} of type {\datatype double-float\/} is called a {\datatype
double-float}.
An {\word object} of type {\datatype long-float\/} is called a {\datatype
long-float}.
Properties of {\datatype floating-point} numbers follow:
\beginlist
\itemitem{--} There is a {\datatype floating-point} number
whose value is zero.
\itemitem{--} If the numeric representation of
{\datatype floating-point} numbers
allows ``minus zero'', it will exist.
\itemitem{--} {\tt $0.0$ = $-0.0$} if there is no minus zero.
\endlist
%% 2.1.3 6
Intermediate between {\datatype short-float} and {\datatype long-float}
are
{\datatype single-float} and {\datatype double-float}.
The precise definition of these categories is implementation-dependent.
The precision (measured in ``bits'', computed as {\it p} log$\sub 2${\it b}\rm)
and the exponent size (also measured in ``bits'', computed as
log$\sub 2$ (maximum exponent value + 1)) is recommended
to be at least as great
as the values in Figure {\chapno--\the\capno}.
\boxfig
{\dimen0=.75pc
\tabskip \dimen0 plus .5 fil
\halign to \hsize {#\hfil\tabskip \dimen0 plus 1fil\hfil\tabskip
\dimen0 plus .5 fil\hfil\cr
\noalign{\vskip -9pt}
\hfil\bf Format &Minimum Precision &Minimum Exponent Size \cr
\noalign{\vskip 2pt\hrule\vskip 2pt}
Short&13 bits&5 bits\cr
Single&24 bits&8 bits\cr
Double&50 bits&8 bits\cr
Long&50 bits&8 bits\cr
\noalign{\vskip -9pt}
}}
\caption{Recommended Minimum Floating-Point Precision and Exponent Size}
\endfig
%% 2.1.3 10
%% 2.1.3 11
%% 2.1.3 18
There may be fewer than four internal
representations for {\datatype floating-point} numbers.
If there are fewer distinct representations, the following fules apply:
\beginlist
\itemitem{--} If there is only one, it is of
the type {\datatype single-float}.
In this representation, an {\word object} is simultaneously of types
{\datatype single-float, double-float, short-float}, and {\datatype
long-float}.
\itemitem{--} Two internal representations can be arranged in either of the
following ways:
\beginlist
\itemitem{\bull} Two {\word types} are provided: {\datatype single-float} and
{\datatype short-float}. An {\word object} is simultaneously of types
{\datatype single-float, double-float}, and {\datatype long-float}.
\itemitem{\bull} Two {\word types} are provided: {\datatype single-float} and
{\datatype double-float}. An {\word object} is simultaneously of types
{\datatype single-float} and {\datatype short-float}, or
{\datatype double-float} and {\datatype long-float}.
\endlist
\itemitem{--} Three internal representations can be arranged in either
of the following ways:
\beginlist
\itemitem{\bull} Three {\word types} are provided: {\datatype short-float},
{\datatype single-float}, and
{\datatype double-float}. An {\word object} can
simultaneously be of type {\datatype double-float} and {\datatype long-float}.
\itemitem{\bull} Three {\word types} are provided:
{\datatype single-float}, {\datatype double-float},
and {\datatype long-float}. An {\word object} can simultaneously
be of types {\datatype single-float} and {\datatype short-float}.
\endlist
\endlist
Figure {\chapno--\the\capno} contains
examples of printed {\datatype floating-point} numbers:
The following rules apply to floating point computations.
%% 12.1.0 1
%% 12.5.0 3
\beginlist
\itemitem{--}
Computations with {\datatype floating-point} numbers are only approximate,
although they are described as if the results
were mathematically accurate.
Two mathematically identical
expressions may be computationally different because of errors
inherent in the floating-point approximation process.
The precision of a {\datatype floating-point} number is not necessarily
correlated with the accuracy of that number.
For instance, 3.142857142857142857 is a more precise approximation
to $\pi$ than 3.14159, but the latter is more accurate.
The precision refers to the number of bits retained in the representation.
When an operation combines a {\datatype short-float} with a
{\datatype long-float},
the result will be a {\datatype long-float}.
@clisp\ {\word functions} assume that the accuracy of
arguments to them does not exceed their precision. Therefore
when two small {\datatype floating-point} numbers
are combined, the result is a small {\datatype floating-point} number.
@clisp\ {\word functions}
never convert automatically from a larger size to a smaller one.
%% 12.1.0 2
\itemitem{--} An error of type {\datatype floating-point-overflow}
or {\datatype floating-point-underflow} should be signalled if a
floating-point computation causes exponent overflow or underflow.
%% 12.1.0 5
\itemitem{--}
The result of a numerical function
is a {\datatype floating-point} number of the largest format among all the
floating-point arguments to the {\word function}.
\endlist
\boxfig
{\dimen0=.75pc
\tabskip \dimen0 plus .5 fil
\halign to \hsize {#\hfil\tabskip
\dimen0 plus .5 fil\hfil\cr
\noalign{\vskip -9pt}
{\tt 0.0} & ;Floating-point zero in default format
\cr
{\tt 0E0 } & ;Also floating-point zero in default format
\cr
{\tt -.0 } & ;This may be a zero or a minus zero, \cr
& ; depending on the implementation \cr
{\tt 0.} & ;The integer zero, not a floating-point
number! \cr
{\tt 0.0s0 } & ;A floating-point zero in short format
\cr
{\tt 0s0 } & ;Also a floating-point zero in short format
\cr
{\tt 6.02E+23} & ;Avogadro's number, in default format
\cr
{\tt 602E+21} & ;Also Avogadro's number, in default format
\cr
%3.010299957f-1 & ;$log_10$2, in single format \cr
}}
\caption{Examples of Floating-point numbers}
\endfig
%% 2.1.4 1
%% 2.1.4 4
\beginsubsubsection{\datatype Complex}
An {\word object} of type {\datatype complex\/} (a {\datatype complex\/} number)
is represented in Cartesian form, with a real part and an imaginary
part each of which is not a
{\datatype complex\/} number
(i.e. an {\datatype integer}, {\datatype ratio}, or {\datatype floating-point}
number). The parts of a {\datatype complex\/} number
are not necessarily {\datatype floating-point} numbers
but both parts must
be of the same {\word type}: either both are
{\datatype rationals}, or both are
of the same {\datatype floating-point} number {\word subtype}.
When constructing
a {\datatype complex\/} number, if the specified parts are not the same
{\word type}, the parts will be converted to be the same {\word type}
internally (i.e. the {\datatype rational} part
will be converted to
a {\datatype floating-point} number).
An {\word object} of type
{\tt (complex rational)}
will be converted internally and represented thereafter as
a {\datatype rational}
if its imaginary part is an
{\datatype integer} whose value is 0.
%% 12.1.0 6
The following rules apply to {\datatype complex\/} computations:
\beginlist
\itemitem{--}
Except during the execution of irrational and
transcendental {\word forms}, {\datatype complex\/}
numbers never result from a numerical {\word form}
unless one or more of the
arguments is {\datatype complex\/}.
\itemitem{--}
When a non-{\datatype complex\/} number and
a {\datatype complex\/} number are both part of a computation,
the non-{\datatype complex\/}
number is first converted to a {\datatype complex\/} number by providing an
imaginary part of @f[0]\rm.
%% 12.1.0 8
\itemitem{--}
If the result of any computation would be a {\datatype complex\/}
number whose real part is of type {\datatype rational} and whose imaginary
part is zero, the result is
converted to a non-{\datatype complex\/} number
of type {\datatype rational} composed of the
real part.
This rule does not apply to {\datatype complex\/} numbers whose parts
are {\datatype floating-point} numbers.
For example, @f[\#C(5 0)] and @f[5] are not
distinct values in @clisp\ (they are always {\function eql});
@f[\#C(5.0 0.0)] and @f[5.0] are always distinct values in @clisp\
(they are never {\function eql}, although they are {\function equalp}).
\endlist
%% 12.5.3 17
Figure {\chapno--\the\capno} lists
the identities that are obeyed
throughout the applicable portion of the complex domain, even on
the branch cuts:
\boxfig
{\dimen0=.75pc
\tabskip \dimen0 plus .5 fil
\halign to \hsize {#\hfil\tabskip \dimen0 plus 1fil\hfil\tabskip \dimen0
plus 1fil\hfil\cr
\noalign{\vskip -9pt}
sin i z = i sinh z & sinh i z = i sin z& arctan i z = i arctanh z \cr
cos i z = cosh z & cosh i z = cos z & arcsinhi z = i arcsin z \cr
tan i z = i tanh z & arcsin i z = i arcsinh z & arctanh i z = i arctan z \cr
\noalign{\vskip -9pt}
}}
\caption{Trigonometric Identities for Complex Domain}
\endfig
%% 2.2.4 1
\beginsubsubsection{\datatype Character}
The type {\datatype character} has a
{\word subtype}
of {\datatype string-char}.
An {\word object} of type {\datatype character} (a {\datatype character})
has three non-negative attributes: code, bits, and font.
%% 13.0.0 3
%% 13.0.0 4
The following rules apply to {\datatype characters}:
\beginlist
\itemitem{--} Two {\datatype characters}
that are {\function eql}, {\function char=}, or {\function char-equal}
are not necessarily {\function eq}.
%% 13.1.0 1
\itemitem{--} Every {\datatype character}
has three attributes: code, bits, and font.
The code attribute is intended to distinguish among the printed glyphs
and formatting functions for {\datatype characters}.
The bits attribute allows extra
flags to be associated with a {\datatype character}. The font attribute permits
a specification of the style of the glyphs (such as italics).
Each of these attributes is a non-negative
{\datatype integer}.
%% 13.5.0 1
\itemitem{--} Four bits of the bits attribute are defined:
Control, Meta, Hyper, and Super.
Each @clisp\ implementation provides these bit definitions for compatibility,
even if it does not support the bits.
\itemitem{--} The total ordering on
{\datatype characters} is guaranteed to have the following
properties:
\beginlist
%% 13.2.0 27
\itemitem{\bull} If two {\datatype characters}
have the same bits and font attributes,
then their ordering by {\function char<} is consistent with the numerical
ordering by the predicate {\function <} on their code attributes.
%% 13.2.0 28
\itemitem{\bull} If two {\datatype characters}
differ in any attribute (code, bits, or font), then they
are different.
%% 13.2.0 29
\itemitem{\bull} The total ordering is not necessarily the same as the total
ordering on the {\datatype integers}
produced by applying @Funref[char-int] to the
{\datatype characters}.
%% 13.2.0 30
\itemitem{\bull}
While alphabetic {\datatype characters} of a given case must be
properly ordered, they need not be contiguous; it is permitted for
uppercase and lowercase letters to be interleaved.
Thus @f[(char<= \#{\char '134}a x
\#{\char '134}z)] is not
a valid way of determining whether or not @f[x] is a
lowercase letter.
%% 13.2.0 34
\itemitem{\bull}
The ordering may depend on the font information. For example, an implementation
might decree that {\tt (char-equal \#{\char '134}p \#{\char '134}{\it p})}
be true, but that
{\tt (char-equal \#{\char '134}p \#{\char '134}$\pi$)}
be false (where {\tt \#{\char '134}$\pi$} is a
lowercase @f[p] in some font). Assuming italics to be in font 1
and the Greek alphabet in font 2, this is the same as saying that
{\tt (char-equal \#0{\char '134}p \#1{\char '134}p)}
may be true and at the same time
{\tt (char-equal \#0{\char '134}p \#2{\char '134}p)} may be false.
\endlist
%% 13.2.0 25
%% 13.2.0 26
The standard alphanumeric characters obey the following partial ordering:
@Lisp
A<B<C<D<E<F<G<H<I<J<K<L<M<N<O<P<Q<R<S<T<U<V<W<X<Y<Z
a<b<c<d<e<f<g<h<i<j<k<l<m<n<o<p<q<r<s<t<u<v<w<x<y<z
0<1<2<3<4<5<6<7<8<9
either 9<A or Z<0
either 9<a or z<0
@Endlisp
This implies that alphabetic ordering holds within each case (upper and
lower), and that the digits as a group
are not interleaved with letters. However, the ordering
or possible interleaving of
uppercase letters and lowercase letters is unspecified.
The following figures contain lists of {\word tools} applicable to {\datatype
characters}.
Figure {\chapno--\the\capno} lists the {\datatype character}
attribute and predicate {\word tools}.
\boxfig
{\dimen0=.75pc
\tabskip \dimen0 plus .5 fil
\halign to \hsize {#\hfil\tabskip \dimen0 plus 1fil\hfil\tabskip \dimen0 plus
1fil\hfil\cr
\noalign{\vskip -9pt}
{\tt char-code-limit }&{\tt char-font-limit }&{\tt char-bits-limit }\cr
{\tt standard-char-p }&{\tt graphic-char-p }&{\tt string-char-p }\cr
{\tt alpha-char-p }&{\tt upper-case-p }&{\tt lower-case-p }\cr
{\tt both-case-p }&{\tt digit-char-p }&{\tt alphanumericp }\cr
{\tt char= }&{\tt char/= }&{\tt char< }\cr
{\tt char> }&{\tt char<= }&{\tt char>= }\cr
{\tt char-equal }&{\tt char-not-equal }&{\tt char-lessp }\cr
{\tt char-greaterp }&{\tt char-not-greaterp }&{\tt char-not-lessp }\cr
\noalign{\vskip -9pt} }}
\caption{Character tools - 1}
\endfig
Figure {\chapno--\the\capno} lists the
{\datatype character} construction, conversion, and control-bit {\word tools}.
\boxfig
{\dimen0=.75pc
\tabskip \dimen0 plus .5 fil
\halign to \hsize {#\hfil\tabskip \dimen0 plus 1fil\hfil\tabskip \dimen0 plus
1fil\hfil\cr
\noalign{\vskip -9pt}
{\tt char-code }&{\tt char-bits }&{\tt char-font }\cr
{\tt code-char }&{\tt make-char }&{\tt character }\cr
{\tt char-upcase }&{\tt char-downcase }&{\tt digit-char }\cr
{\tt char-int }&{\tt int-char }&{\tt char-name }\cr
{\tt name-char }&{\tt char-control-bit }&{\tt char-meta-bit }\cr
{\tt char-super-bit }&{\tt char-hyper-bit }&{\tt char-bit }\cr
{\tt set-char-bit }& & \cr
\noalign{\vskip -9pt} }}
\caption{Character tools - 2}
\endfig
%% 2.2.5 1
\beginsubsubsection{\datatype String-char}
The type {\datatype string-char} has a {\word subtype} of {\datatype
standard-char}.
An {\word object} of type {\datatype string-char} (a {\datatype string-char})
is a {\datatype character\/} whose bit and font
attributes are {\datatype integers}
whose values are 0.
\beginsubsubsection{\datatype Standard-char}
{\word Objects} of type {\datatype standard-char} ({\datatype standard-chars})
are listed
in ``Object Syntax''.
%% 2.3.0 1
%% 2.3.0 2
\beginsubsubsection{\datatype Symbol}
An {\word object} of type {\datatype symbol} (a {\datatype symbol})
is a data structure
composed of a print namestring,
a package name, and a
property list. A {\datatype symbol} may be retrieved from
a {\datatype package} given a print name.
{\datatype Symbols} can be interned or uninterned in a {\datatype package}.
%% 11.0.0 11
To intern a {\datatype symbol} in a {\datatype package} means to cause the
{\datatype symbol}
to be accessible in the {\datatype package} if it were not already.
See {\function intern}.
If the {\datatype symbol} were previously unowned, then the
{\datatype package} it is being
interned in becomes its owner (home package); but
if the {\datatype symbol}
was previously owned by another {\datatype package}, that other {\datatype
package}
continues to own the {\datatype symbol}.
%% 10.3.0 2
%% 10.3.0 3
Interned symbols are created automatically by {\function intern};
If a given print name does not have a corresponding
{\datatype symbol} in the specified or
inherited {\datatype packages}, a {\datatype symbol} is
created for that print name.
the first time
something (such as {\function read})
asks the package system for a {\datatype symbol} with a given print name,
that {\datatype symbol} is automatically created.
%% 11.0.0 12
To unintern a {\datatype symbol} from a
{\datatype package} means to cause it to be not
present and, additionally, to make the {\datatype symbol} uninterned if the
{\datatype package} is the {\datatype symbol's} home package.
See @Funref[unintern]\rm.
%% 10.3.0 1
{\datatype Symbols} have the following
components, the first three of which are user-visible.
%% 10.0.0 3
%% 10.0.0 4
%% 10.1.0 1
%% 10.1.0 2
%% 10.1.0 3
\beginlist
\itemitem{\bf Property list}
The property list is an even-length
{\datatype list} of zero or more
elements
whose even-numbered components (calling the first component zero)
are indicators (no duplicates on the same
property list are allowed)
and whose odd-numbered components are {\word objects}.
The property list of a {\datatype symbol}
may be destructively replaced.
A property-value pair in the property list may be added or updated.
%% 10.1.0 4
When a {\datatype symbol} is created, its property list is initially empty.
Properties are created by using {\function setf} of @Macref[get]\rm.
Any form acceptable to {\function setf\/}
as a {\word
generalized reference} can be used to store the property list.
%% 10.0.0 5
%% 10.2.0 1
\itemitem{\bf Print name}
The print name is a {\datatype string},
used to identify the {\datatype symbol}.
Every
{\datatype symbol} has a print name, and that
name can not be altered.
The print name is used as the external representation of the
{\datatype symbol}.
If the {\datatype characters} in the {\datatype string}
of the print name are typed in to {\function read}
(with suitable escape conventions for certain characters),
it is interpreted as a reference to that {\datatype symbol}
(if it is {\word interned}); and if the {\datatype symbol}
is printed, {\function print} outputs the
print name.
Given the print name of a {\datatype symbol}
as a {\datatype string} the
{\datatype symbol} can be obtained.
Every time a {\datatype symbol} with a certain print name is referenced,
the same ({\function eq}) {\datatype symbol } is returned.
{\datatype Symbols} are organized into
{\datatype packages}, and all the {\datatype symbols}
in a {\datatype package} are uniquely
identified by print name.
A {\datatype symbol\/}'s print name can be composed
of any {\datatype string-char}. Space and parenthesis characters
must be preceded by an
escape character in order to be a part of a {\datatype symbol\/}'s print name.
A {\datatype symbol\/}'s print name must contain escape characters if
\beginlist
\itemitem{\bull} It would be composed of only periods
(.).
\itemitem{\bull} It would be syntactically identical to a
{\datatype number}.
\endlist
Any double quote in the name
of a {\datatype symbol} written using vertical-bar notation need not be
preceded by a @bsl.
%% 10.0.0 4
%% 10.3.0 4
%% 11.0.0 8
%% 11.0.0 10
%% 11.0.0 28
\itemitem{Package cell}
The package cell
contains a pointer to the {\datatype symbol's}
home {\datatype package}, if
it is interned in and owned by any {\datatype package},
or @false\ if it is uninterned (not owned by a {\datatype package}).
The package cell
may be accessed by @Funref[symbol-package]\rm.
A {\datatype symbol} may
appear in many {\datatype packages}, but it can have at most
one home {\datatype package}.
The same print name may refer to different {\datatype symbols} in
different {\datatype packages}.
%% 10.0.0 8
\itemitem{Other components}
A {\datatype symbol} may have other components for use by the
implementation.
\endlist
Following is the list of
{\word tools} that are applicable to the property list of
{\datatype symbols}: {\tt get}, {\tt remprop},
{\tt symbol-plist}, {\tt getf}, {\tt remf}, and
{\tt get-properties}.
The function {\tt symbol-name} is used to access the print name of
a symbol.
Following is the list of
{\word tools} that are applicable to creating
{\datatype symbols}: {\tt make-symbol}, {\tt copy-symbol},
{\tt gensym}, {\tt gentemp}, {\tt symbol-package}, and
{\tt keywordp}.
∂02-Mar-89 0008 X3J13-mailer Section 2.2 - part 3
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 2 Mar 89 00:08:35 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
id AA09450; Thu, 2 Mar 89 00:06:40 PST
Message-Id: <8903020806.AA09450@decwrl.dec.com>
Received: by decwrl.dec.com (5.54.5/4.7.34)
for x3j13@sail.stanford.edu; id AA09450; Thu, 2 Mar 89 00:06:40 PST
From: chapman%aitg.DEC@decwrl.dec.com
Date: 2 Mar 89 03:05
To: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
Subject: Section 2.2 - part 3
%%Types - part 3
\beginsubsubsection{\datatype Null}
The only {\word object} of type {\datatype null\/} is @nil\rm.
\beginsubsubsection{\datatype Sequence}
The type {\datatype sequence} has
{\datatype vector} and {\datatype list}
as {\word disjoint subtypes}.
An {\word object} of type {\datatype sequence\/} is called a {\datatype
sequence}.
Figure {\chapno--\the\capno} lists the {\datatype sequence} {\word tools}.
\boxfig
{\dimen0=.75pc
\tabskip \dimen0 plus .5 fil
\halign to \hsize {#\hfil\tabskip \dimen0 plus 1fil\hfil\tabskip \dimen0 plus
1fil\hfil\cr
\noalign{\vskip -9pt}
{\tt elt }&{\tt subseq }&{\tt copy-seq }\cr
{\tt length }&{\tt reverse }&{\tt nreverse }\cr
{\tt make-sequence }&{\tt concatenate }&{\tt map }\cr
{\tt some }&{\tt every }&{\tt notany }\cr
{\tt notevery }&{\tt reduce }&{\tt fill }\cr
{\tt replace }&{\tt remove }&{\tt remove-if }\cr
{\tt remove-if-not }&{\tt delete }&{\tt delete-if }\cr
{\tt delete-if-not }&{\tt remove-duplicates }&{\tt delete-duplicates }\cr
{\tt substitute }&{\tt substitute-if }&{\tt substitute-if-not }\cr
{\tt nsubstitute }&{\tt nsubstitute-if }&{\tt nsubstitute-if-not }\cr
{\tt find }&{\tt find-if }&{\tt find-if-not }\cr
{\tt position }&{\tt position-if }&{\tt position-if-not }\cr
{\tt count }&{\tt count-if }&{\tt count-if-not }\cr
{\tt mismatch }&{\tt search }&{\tt sort }\cr
{\tt stable-sort }&{\tt merge }&\cr
\noalign{\vskip -9pt} }}
\caption{Sequence tools}
\endfig
%% 14.0.0 19
Whenever a {\datatype sequence} function must construct and return
a new {\datatype vector}, it always returns a {\datatype simple-vector}.
In particular, any {\datatype strings} constructed
will be {\datatype simple-strings}.
%% 2.5.1 1
\beginsubsubsection{\datatype Vector}
The type {\datatype vector} has {\word subtypes} {\datatype simple-vector,
string}, and {\datatype bit-vector}.
An {\word object} of type {\datatype vector}
(a {\datatype vector}) is a
one-dimensional {\datatype array\/}.
\beginsubsubsection{\datatype Simple-vector}
An {\word object} of type {\datatype simple-vector}
(a {\datatype simple-vector}) is
a {\datatype vector}
that is not displaced to another {\datatype vector},
has no
{\word fill pointer},
is able to hold elements of any {\word type},
and is not to have its size adjusted dynamically after
creation.
\beginsubsubsection{\datatype Bit-vector}
An {\word object} of type {\datatype bit-vector}
(a {\datatype bit-vector})
is a
{\datatype vector} composed of bits.
The type {\datatype bit-vector} has the type {\datatype simple-bit-vector}
as its {\word subtype}.
\beginsubsubsection{\datatype Simple-bit-vector}
An {\word object} of type {\datatype simple-bit-vector}
(a {\datatype simple-bit-vector}) is
a {\datatype bit-vector} that is not displaced to another
{\datatype bit-vector},
has no {\word fill pointer},
and is not to have its size adjusted dynamically after
creation.
%% 2.5.2 1
%% 18.0.0 3
\beginsubsubsection{\datatype String}
An {\word object} of type {\datatype string}
(a {\datatype string}) is
a {\datatype vector} whose
elements are {\datatype string-chars\/}.
{\datatype Simple-string} is a {\word subtype} of {\datatype string}.
Figure {\chapno--\the\capno}
lists the {\word tools} that are applicable to {\datatype strings}.
The following rules apply to {\datatype strings} and {\datatype string}
operations:
\beginlist
%% 18.0.0 7
\itemitem{--}
{\datatype Strings} may have {\word fill pointers}.
%% 18.0.0 4
\itemitem{--}
An {\word operator}
that uses the print name of an argument provided as a
{\datatype symbol} (most of
the operators in Figure {\chapno--\the\capno})
is not allowed to modify that {\datatype
symbol}.
%% 18.0.0 5
%% paragraph duplicated in descriptions of string-equal and string=
%% 18.0.0 6
%% paragraph duplicated in description of stringp
\endlist
\boxfig
{\dimen0=.75pc
\tabskip \dimen0 plus .5 fil
\halign to \hsize {#\hfil\tabskip \dimen0 plus 1fil\hfil\tabskip \dimen0 plus
1fil\hfil\cr
\noalign{\vskip -9pt}
{\tt char }&{\tt schar }&{\tt string= }\cr
{\tt string-equal }&{\tt string< }&{\tt string> }\cr
{\tt string<= }&{\tt string>= }&{\tt string/= }\cr
{\tt string-lessp }&{\tt string-greaterp }&{\tt string-not-greaterp }\cr
{\tt string-not-lessp }&{\tt string-not-equal }&{\tt make-string }\cr
{\tt string-trim }&{\tt string-left-trim }&{\tt string-right-trim }\cr
{\tt string-upcase }&{\tt string-downcase }&{\tt string-capitalize }\cr
{\tt nstring-upcase }&{\tt nstring-downcase }&{\tt nstring-capitalize }\cr
{\tt string }& & \cr
\noalign{\vskip -9pt} }}
\caption{String tools}
\endfig
\beginsubsubsection{\datatype Simple-string}
An {\word object} of type {\datatype simple-string}
(a {\datatype simple-string}) is
a {\datatype string} that is not displaced to another {\datatype string},
has no {\word fill pointer}, and is not to have its size adjusted
dynamically after
creation.
%% 2.4.0 2
%% 2.4.0 7
\beginsubsubsection{\datatype List}
The type {\datatype list} is
composed of {\word subtypes}
{\datatype cons} and {\datatype null}, which form an
{\word exhaustive partition}
of {\datatype list}.
An {\word object} of type {\datatype list}
(a {\datatype list})
is a chain of {\datatype conses}
linked by their {\word cdr} components
and terminated by @nil, the empty {\datatype list}.
The {\word car} components of the {\datatype conses}
are called the elements of the {\datatype list}.
For each element of the {\datatype list}
there is a {\datatype cons}. The empty {\datatype list}
has no elements at all.
A {\word dotted list}
is a chain of {\datatype conses}
linked by their {\word cdr} components
and not terminated by @nil.
Unless otherwise specified in this
standard, it is an error to pass a {\word dotted
list} to a {\word function}
that is specified to require a {\datatype list} as an argument.
The following figures contain lists of {\word tools} that are applicable to {\datatype
lists}.
Figure {\chapno--\the\capno} lists the {\datatype cons}
and {\datatype list} operation {\word tools}.
\boxfig
{\dimen0=.75pc
\tabskip \dimen0 plus .5 fil
\halign to \hsize {#\hfil\tabskip \dimen0 plus 1fil\hfil\tabskip \dimen0 plus
1fil\hfil\cr
\noalign{\vskip -9pt}
{\tt car }&{\tt cdr }&{\tt caar }\cr
{\tt cadr }&{\tt cdar }&{\tt cddr }\cr
{\tt caaar }&{\tt caadr }&{\tt cadar }\cr
{\tt caddr }&{\tt cdaar }&{\tt cdadr }\cr
{\tt cddar }&{\tt cdddr }&{\tt caaaar }\cr
{\tt caaadr }&{\tt caadar }&{\tt caaddr }\cr
{\tt cadaar }&{\tt cadadr }&{\tt caddar }\cr
{\tt cadddr }&{\tt cdaaar }&{\tt cdaadr }\cr
{\tt cdadar }&{\tt cdaddr }&{\tt cddaar }\cr
{\tt cddadr }&{\tt cdddar }&{\tt cddddr }\cr
{\tt cons }&{\tt tree-equal }&{\tt endp }\cr
{\tt list-length }&{\tt nth }&{\tt first }\cr
{\tt second }&{\tt third }&{\tt fourth }\cr
{\tt fifth }&{\tt sixth }&{\tt seventh }\cr
{\tt eighth }&{\tt ninth }&{\tt tenth }\cr
{\tt rest }&{\tt nthcdr }&{\tt last }\cr
{\tt list }&{\tt list* } & {\tt make-list }\cr
{\tt append } & {\tt copy-list }&{\tt copy-alist }\cr
{\tt copy-tree }& {\tt revappend }&{\tt nconc }\cr
{\tt nreconc }& {\tt push }&{\tt pushnew }\cr
{\tt pop }& {\tt butlast }&{\tt nbutlast }\cr
{\tt ldiff } & &\cr
\noalign{\vskip -9pt} }}
\caption{List tools - 1}
\endfig
Figure {\chapno--\the\capno} lists the
{\datatype list} structure alteration and expression substitution {\word
tools}.
\boxfig
{\dimen0=.75pc
\tabskip \dimen0 plus .5 fil
\halign to \hsize {#\hfil\tabskip \dimen0 plus 1fil\hfil\tabskip \dimen0 plus
1fil\hfil\cr
\noalign{\vskip -9pt}
{\tt rplaca }&{\tt rplacd }&{\tt subst }\cr
{\tt subst-if }&{\tt subst-if-not }&{\tt nsubst }\cr
{\tt nsubst-if }&{\tt nsubst-if-not }&{\tt sublis }\cr
{\tt nsublis }& & \cr
\noalign{\vskip -9pt} }}
\caption{List tools - 2}
\endfig
Figure {\chapno--\the\capno} lists the set
operation and association list {\word tools}.
\boxfig
{\dimen0=.75pc
\tabskip \dimen0 plus .5 fil
\halign to \hsize {#\hfil\tabskip \dimen0 plus 1fil\hfil\tabskip \dimen0 plus
1fil\hfil\cr
\noalign{\vskip -9pt}
{\tt member }&{\tt member-if } & {\tt member-if-not }\cr
{\tt tailp }&{\tt adjoin }& {\tt union }\cr
{\tt nunion }&{\tt intersection }& {\tt nintersection }\cr
{\tt set-difference }&{\tt nset-difference }& {\tt set-exclusive-or }\cr
{\tt nset-exclusive-or }&{\tt subsetp }& {\tt acons }\cr
{\tt pairlis }&{\tt assoc }& {\tt assoc-if }\cr
{\tt assoc-if-not }&{\tt rassoc }& {\tt rassoc-if }\cr
{\tt rassoc-if-not }&&\cr
\noalign{\vskip -9pt} }}
\caption{List tools - 3}
\endfig
\goodbreak
Following are examples of printed representations of {\datatype lists}:
\screen!
(a . b) ;A dotted pair of a and b
(a.b) ;A list of one element, the symbol named a.b
(a. b) ;A list of two elements a. and b
(a .b) ;A list of two elements a and .b
(a b . c) ;A dotted list of a and b with c at the end; two conses
.iot ;The symbol whose name is .iot
(. b) ;Illegal -- an error is signalled if an attempt is made to read
;this syntax.
(a .) ;Illegal -- an error is signalled.
(a .. b) ;Illegal -- an error is signalled.
(a . . b) ;Illegal -- an error is signalled.
(a b c ...);Illegal -- an error is signalled.
(a @bsl\ . b) ;A list of three elements a, ., and b
(a @vert\ .@vert b) ;A list of three elements a, ., and b
(a @bsl\ ... b) ;A list of three elements a, ..., and b
(a @vert\ ...@vert b) ;A list of three elements a, ..., and b
\endscreen!
∂02-Mar-89 0731 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Cryptography textbook
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 2 Mar 89 07:31:22 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA05766; Thu, 2 Mar 89 07:29:05 -0800
Message-Id: <8903021529.AA05766@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Thu, 2 Mar 89 07:29:25 PST
Received: by BYUADMIN (Mailer R2.01A) id 6990; Thu, 02 Mar 89 08:28:20 MST
Date: Thu, 2 Mar 89 08:31:54 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
beigel@CS.JHU.EDU
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: beigel@CS.JHU.EDU
Subject: Cryptography textbook
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
Can anyone recommend a textbook for a senior/1st-year-grad level
course on cryptography?
-- Richard Beigel
∂02-Mar-89 0834 X3J13-mailer Section 2.2 - part 4
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 2 Mar 89 08:33:46 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
id AA02028; Thu, 2 Mar 89 08:31:42 PST
Message-Id: <8903021631.AA02028@decwrl.dec.com>
Received: by decwrl.dec.com (5.54.5/4.7.34)
for x3j13@sail.stanford.edu; id AA02028; Thu, 2 Mar 89 08:31:42 PST
From: chapman%aitg.DEC@decwrl.dec.com
Date: 2 Mar 89 07:40
To: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
Subject: Section 2.2 - part 4
%%Types - part 4
\beginsubsubsection{\datatype Cons}
An {\word object} of type {\datatype cons}
is called a {\word cons}.
%% 2.5.0 1
\beginsubsubsection{\datatype Array\/}
The type {\datatype array\/} has {\word subtypes} {\datatype vector}
and {\datatype simple-array}.
An {\word object} of type {\datatype array\/}
(an {\datatype array\/})
contains {\word objects} arranged according
to a Cartesian coordinate system.
%% 17.0.0 3
The following rules apply to {\datatype arrays\/}.
\beginlist
\itemitem{--} An {\datatype array\/} contains components arranged according
to a rectilinear coordinate system.
%% 17.0.0 4
An {\datatype array\/}
may be a general {\datatype array\/}, meaning each element may be any @xlisp\
{\word object}, or it may be a specialized {\datatype array\/},
meaning that each element
must be of a restricted {\word type}.
%% 2.5.0 3
%% 2.5.0 4
\itemitem{--}
In principle, an
{\datatype array\/} in @clisp\ may have any number of dimensions, including zero.
It is permissible for a dimension to be zero, in which case
the {\datatype array\/}
has no elements, and any attempt to access an element
is an error. However, other properties of the {\datatype array\/},
such as the
dimensions themselves, may be used.
If the rank is zero, then there are no dimensions, and the
product of the dimensions is then by definition 1.
A zero-rank {\datatype array\/} therefore has a single element.
\itemitem{--} An implementation of may impose a limit on the rank of an
{\datatype array\/},
but this limit may not be smaller than 7.
The value of @conref[array-rank-limit] is the implementation's limit on
{\datatype array\/} rank.
\itemitem{--}Each dimension is a non-negative
{\datatype integer}; if any dimension of an {\datatype array\/} is zero,
the {\datatype array\/} has no elements.
%% 17.0.0 5
\itemitem{--}
General {\datatype vectors} may contain
any @xlisp\ {\word object}. {\datatype Vectors}
whose elements are restricted to type
{\datatype string-char} are called {\datatype strings}.
{\datatype Vectors} whose elements are
restricted to type {\datatype bit} are called {\datatype bit-vectors}.
%% 17.5.0 4
\itemitem{--}
Only {\datatype vectors} may have {\word fill pointers};
multidimensional {\datatype arrays\/} may not.
A multidimensional {\datatype array\/}
that is displaced to a {\datatype vector} that has
a {\word fill pointer} can be created.
%% 2.5.0 8
\itemitem{--}
Multidimensional {\datatype arrays\/}
store their components in row-major order;
that is, internally a multidimensional {\datatype array\/}
is stored as a one-dimensional
{\datatype array\/},
with the multidimensional index sets ordered lexicographically,
last index varying fastest.
%% 2.5.0 5
\itemitem{--}
An {\datatype array\/} element is specified by a series of indices.
The length of the series must equal the rank of the {\datatype array\/}.
Each index must be a non-negative {\datatype integer} strictly less than
the corresponding {\datatype array\/} dimension. {\datatype Array\/}
indexing is zero-origin.
\itemitem{--}
%% 17.1.0 13
When an array A is given as
the @Kwd[displaced-to] argument to {\function make-array}
when creating array B,
then array B is said to be displaced to array A. The
total number of elements in an {\datatype array\/},
called the total size of the {\datatype array\/},
is calculated as the product of all the dimensions.
It is required that the total size of A be no smaller than the sum
of the total size of B plus the offset @f[n] supplied by
the @Kwd[displaced-index-offset]
argument. The effect of displacing is that array B does not have any
elements of its own, but instead maps accesses to itself into
accesses to array A. The mapping treats both {\datatype arrays\/} as if they
were one-dimensional by taking the elements in row-major order,
and then maps an access to element @f[k] of array B to an access to element
@f[k]+@f[n] of array A.
\itemitem{--}
When {\keyword displaced-to} is supplied to {\function make-array},
{\keyword displaced-index-offset} is made to be the
index offset of the \array.
If {\keyword displaced-index-offset} is not supplied,
the index offset is zero.
\endlist
The following figures contain lists of {\word tools} that are applicable to {\datatype
arrays}.
Figure {\chapno--\the\capno} lists the {\datatype array\/}
creation, access, and information {\word tools}.
\boxfig
{\dimen0=.75pc
\tabskip \dimen0 plus .5 fil
\halign to \hsize {#\hfil\tabskip \dimen0 plus 1fil\hfil\tabskip \dimen0 plus
1fil\hfil\cr
\noalign{\vskip -9pt}
{\tt make-array }&{\tt array-rank-limit }&{\tt array-dimension-limit }\cr
{\tt array-total-size-limit }&{\tt vector }&{\tt aref }\cr
{\tt svref }&{\tt array-element-type }&{\tt array-rank }\cr
{\tt array-dimension }&{\tt array-dimensions }&{\tt array-total-size }\cr
{\tt array-in-bounds-p }&{\tt array-row-major-index }&{\tt adjustable-array-p }\cr
{\tt upgraded-array-element-type} & {\tt upgraded-complex-part-type} & \cr
\noalign{\vskip -9pt} }}
\caption{Array tools - 1}
\endfig
Figure {\chapno--\the\capno} lists the {\word tools}
for operations on {\datatype arrays} of bits.
\boxfig
{\dimen0=.75pc
\tabskip \dimen0 plus .5 fil
\halign to \hsize {#\hfil\tabskip \dimen0 plus 1fil\hfil\tabskip \dimen0 plus
1fil\hfil\cr
\noalign{\vskip -9pt}
{\tt bit }&{\tt sbit }&{\tt bit-and }\cr
{\tt bit-ior }&{\tt bit-xor }&{\tt bit-eqv }\cr
{\tt bit-nand }&{\tt bit-nor }&{\tt bit-andc1 }\cr
{\tt bit-andc2 }&{\tt bit-orc1 }&{\tt bit-orc2 }\cr
{\tt bit-not }&&\cr
\noalign{\vskip -9pt} }}
\caption{Array tools - 2}
\endfig
Figure {\chapno--\the\capno} lists
the {\datatype array\/} {\word fill pointer}
and dimension modification {\word tools}.
\boxfig
{\dimen0=.75pc
\tabskip \dimen0 plus .5 fil
\halign to \hsize {#\hfil\tabskip \dimen0 plus 1fil\hfil\tabskip \dimen0 plus
1fil\hfil\cr
\noalign{\vskip -9pt}
{\tt array-has-fill-pointer-p }&{\tt fill-pointer }&{\tt vector-push}\cr
{\tt vector-push-extend }&{\tt vector-pop }&{\tt adjust-array }\cr
\noalign{\vskip -9pt} }}
\caption{Array tools - 3}
\endfig
%% 2.5.0 9
\beginsubsubsection{\datatype Simple-array}
The type {\datatype simple-array\/}
has {\word subtypes} {\datatype
simple-vector}, {\datatype simple-string}, and {\datatype simple-bit-vector}.
An {\word object} of type {\datatype simple-array\/}
(a {\datatype simple-array\/}) is
an {\datatype array\/}
that is not displaced to another {\datatype array\/},
has no {\word fill pointer}, and
is not to have its size adjusted dynamically after
creation.
%% 2.5.1 4
Implementations may provide certain specialized representations of
{\datatype arrays\/}
for efficiency in the case where all the components are of
the same specialized type.
All implementations are required to provide specialized {\datatype arrays\/}
of bits, that is, {\datatype objects} of type {\tt (array bit)};
the one-dimensional instances of
this specialization are called {\datatype bit-vectors}.
All implementations
provide specialized {\datatype arrays\/}
for the cases when the components
are {\datatype characters} (or rather,
a special subset of the {\datatype characters});
the one-dimensional instances of
this specialization are called {\datatype strings}.
%% 2.10.0 1
\beginsubsubsection{\datatype Stream}
An {\word object} of type {\datatype stream} (a {\datatype stream})
is a source or sink of data.
%% 21.0.0 3
%% 21.0.0 4
For example, character {\datatype streams}
produce or absorb {\datatype characters};
binary {\datatype streams} produce or absorb {\datatype integers}.
%% 21.0.0 3
A {\datatype stream}, whether a character stream or a binary
stream, may be input-only, output-only, or bidirectional.
What operations may be performed on a {\datatype stream} depends on which
type of {\datatype stream} it is.
%% 22.0.0 3
%All input/output operations are performed on {\datatype streams}
%of various kinds.
The following figures contain lists of {\word tools} that are applicable to {\datatype
streams}.
Figure {\chapno--\the\capno} lists the standard {\datatype streams}.
\boxfig
{\dimen0=.75pc
\tabskip \dimen0 plus .5 fil
\halign to \hsize {#\hfil\tabskip \dimen0 plus 1fil\hfil\tabskip \dimen0 plus
1fil\hfil\cr
\noalign{\vskip -9pt}
@var[standard-input] & @var[standard-output] & @var[error-output] \cr
@var[query-io] & @var[debug-io] & @var[terminal-io] \cr
@var[trace-output] & &\cr
\noalign{\vskip -9pt} }}
\caption{Stream tools - 1}
\endfig
Figure {\chapno--\the\capno} lists the {\datatype stream}
creation and manipulation {\word tools}.
\boxfig
{\dimen0=.75pc
\tabskip \dimen0 plus .5 fil
\halign to \hsize {#\hfil\tabskip \dimen0 plus
1fil\hfil\cr
\noalign{\vskip -9pt}
{\tt make-synonym-stream }&{\tt make-broadcast-stream }\cr
{\tt make-concatenated-stream} & {\tt make-two-way-stream }\cr
{\tt make-echo-stream }&{\tt make-string-input-stream }\cr
{\tt make-string-output-stream }&{\tt get-output-stream-string }\cr
{\tt with-open-stream } & {\tt with-input-from-string }\cr
{\tt with-output-to-string }& {\tt streamp } \cr
{\tt input-stream-p }&{\tt output-stream-p }\cr
{\tt stream-element-type } & {\tt close } \cr
\noalign{\vskip -9pt} }}
\caption{Stream tools - 2}
\endfig
\beginsubsubsection{\datatype Hash-table}
An {\word object} of type {\datatype hash-table} (a {\datatype hash-table})
contains keys and values.
%% 16.0.0 3
A {\datatype hash-table} maps a given
@xlisp\ {\word object} to another @xlisp\ {\word object} via a hash
mechanism.
Each {\datatype hash-table}
has a set of entries, each of which associates a
key with a value.
Figure {\chapno--\the\capno} lists the
{\word tools} that are applicable to {\datatype hash-tables}.
The following rules apply to {\datatype hash-tables}.
%% 16.0.0 4
\beginlist
\itemitem{--}
A {\datatype hash-table} can only associate one value with a given
key. Adding a value to a {\datatype hash-table} is a destructive operation;
the {\datatype hash-table} is modified.
%% 16.0.0 5
\itemitem{--}
There are three kinds of {\datatype hash-tables} -- those whose keys
are compared with {\function eq}, those whose keys
are compared with {\function eql}, and those whose keys
are compared with {\function equal}.
%% 16.0.0 6
\itemitem{--}
{\datatype Hash-tables} are created by
{\function make-hash-table}.
{\function gethash} is used to look up a key and find
the associated value.
New entries are added
to {\datatype hash-tables} using @Macref[setf] with {\function gethash}.
{\function remhash} is used to remove an entry.
For example:
@Lisp
(setq a (make-hash-table)) @EV #<Hash Table...>
(setf (gethash 'color a) 'brown) @EV BROWN
(setf (gethash 'name a) 'fred) @EV FRED
(gethash 'color a) @EV BROWN T
(gethash 'name a) @EV FRED T
(gethash 'pointy a) @EV @false @false
@Endlisp
%% 16.0.0 7
In this example, the {\word symbols} @f[color] and @f[name] are being used as
keys, and the {\word symbols} @f[brown] and @f[fred] are being used as the
associated values. The {\datatype hash-table}
has two items in it, one of which
associates from @f[color] to @f[brown]\rm, and the other of which
associates from @f[name] to @f[fred]\rm.
%% 16.0.0 8
\itemitem{--}
A key or a value may be any {\word object}.
%% 16.0.0 9
\itemitem{--}
When a {\datatype hash-table}
is first created, it has a size, which is the
maximum number of entries it can hold. Usually the actual capacity of
the table is somewhat less, since the hashing is not perfectly
collision-free. If so many entries are
added that the capacity is exceeded, the {\datatype hash-table}
will automatically
grow, and the entries will be rehashed (new hash values will be
recomputed, and everything will be rearranged so that the fast hash
lookup still works). This is transparent to the caller; it all happens
automatically.
%% 16.0.0 10
\itemitem{--}
The cases
of @f[nil] as a value and no entry in the {\datatype hash-table}
can be distinguished by the second value returned by {\function gethash}.
\endlist
\boxfig
{\dimen0=.75pc
\tabskip \dimen0 plus .5 fil
\halign to \hsize {#\hfil\tabskip \dimen0 plus 1fil\hfil\tabskip \dimen0 plus
1fil\hfil\cr
\noalign{\vskip -9pt}
{\tt make-hash-table }&{\tt hash-table-p }&{\tt gethash }\cr
{\tt remhash }&{\tt maphash }&{\tt clrhash }\cr
{\tt hash-table-count }&{\tt sxhash }&\cr
\noalign{\vskip -9pt} }}
\caption{Hash-table tools}
\endfig
%% 2.7.0 1
%% 22.1.5 2
\beginsubsubsection{\datatype Readtable}
An {\word object} of type {\datatype readtable} (a {\datatype readtable})
maps {\datatype
characters\/} into syntax
types for the {\word Lisp reader} (see ``Character Reader'').
A {\datatype readtable}
contains a macro
definition for
each {\datatype character} with macro character syntax.
Figure {\chapno--\the\capno} lists the
{\word tools} that are applicable to {\datatype readtables}.
See ``Object Syntax''.
\boxfig
{\dimen0=.75pc
\tabskip \dimen0 plus .5 fil
\halign to \hsize {#\hfil\tabskip \dimen0 plus
1fil\hfil\cr
\noalign{\vskip -9pt}
@var[readtable] & {\tt copy-readtable} \cr
{\tt readtablep } & {\tt set-syntax-from-char }\cr
{\tt set-macro-character }&{\tt get-macro-character }\cr
{\tt make-dispatch-macro-character }&{\tt set-dispatch-macro-character }\cr
{\tt get-dispatch-macro-character} & \cr
\noalign{\vskip -9pt} }}
\caption{Readtable tools}
\endfig
∂02-Mar-89 0905 X3J13-mailer Section 2.2 - part 5
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 2 Mar 89 09:05:12 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
id AA05377; Thu, 2 Mar 89 09:03:02 PST
Message-Id: <8903021703.AA05377@decwrl.dec.com>
Received: by decwrl.dec.com (5.54.5/4.7.34)
for x3j13@sail.stanford.edu; id AA05377; Thu, 2 Mar 89 09:03:02 PST
From: chapman%aitg.DEC@decwrl.dec.com
Date: 2 Mar 89 07:42
To: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
Subject: Section 2.2 - part 5
%% 2.8.0 1
\beginsubsubsection{\datatype Package}
An {\word object} of type {\datatype package} (a {\datatype package})
is a namespace that holds collections
of {\datatype symbols\/}.
%% 10.0.0 7
%% 11.0.0 4
A {\datatype package} is a data structure
that establishes a mapping from print
names to {\datatype symbols}.
At any given time one
{\datatype package}
is current. The current {\datatype package} is
the one that is the
value of @var[package]\rm. It is possible to refer to
{\datatype symbols} in
{\datatype packages}
other than the current one through the use of
package qualifiers in the representation of the {\datatype symbol}.
%% 11.0.0 5
The mappings in a {\datatype package} are divided
into two classes, external and internal. The
{\datatype symbols} accessible via these different mappings are
called external and
internal {\datatype symbols}
of the {\datatype package}. Within a
{\datatype package},
a print name refers to one {\datatype symbol} or to none; if it does refer
to a {\datatype symbol}, then it is either external or internal in that
{\datatype package}, but not both.
%% 11.0.0 6
External {\datatype symbols} are part of the package's public interface to other
{\datatype packages}.
{\datatype Symbols} become external
if they appear in {\function export}.
%% 11.0.0 7
A {\datatype symbol}
will always have the same
print name no matter what {\datatype package}
it appears in, but it may be external in some {\datatype
packages}
and internal in others.
A {\datatype symbol}
will not necessarily always have the same
printed representation because of the presence of package qualifiers ({\tt
:} and {\tt ::}).
%% 11.0.0 9
{\datatype Packages}
may be built up in layers. From the point of view of a
{\datatype package's} user,
the {\datatype package} is a single collection of mappings from
{\datatype strings} into internal and external {\datatype symbols}.
However, some of these
mappings may be established within the package itself, while other
mappings are inherited from other packages via {\function use-package}.
A {\datatype symbol} is
accessible in a {\datatype package} if it can be referred to
without a package qualifier when that {\datatype package} is current,
regardless of whether the mapping occurs within
that {\datatype package}
or via inheritance. A {\datatype symbol} is
present in a {\datatype package}
if the mapping is in the {\datatype package} itself and is
not inherited from somewhere else.
%% 5.1.2 6
%% 11.3.0 5
The {\datatype package}
named @f[keyword] contains all keyword {\datatype symbols}
used by the
@clisp\ system and by user-written code. Such {\datatype symbols} must be
easily accessible from any {\datatype package};
name conflicts are not an issue
because these {\datatype symbols\/}
are used only as labels, not to carry package-specific
attributes.
When a {\datatype symbol} is added to the @f[keyword] package, it
is made external, declared to be a constant, and is
made to
have itself as its value.
%% 11.0.0 19
Each {\datatype package} has a name (a {\datatype string})
and perhaps some nicknames. These
are assigned when the {\datatype package} is created
and can be changed
later.
%% 11.0.0 20
There is a single namespace for {\datatype packages}.
The function @Funref[find-package] translates a package
name or nickname into the
associated {\datatype package}.
The function @Funref[package-name] returns the name of a
{\datatype package}.
The function @Funref[package-nicknames] returns a {\datatype list} of all
nicknames for a {\datatype package}.
@Funref[rename-package] removes a
{\datatype package's}
current name and nicknames and replaces them with new ones
specified by the caller.
%% 11.0.0 35
{\datatype Symbols} from one {\datatype package}
may be made accessible in another {\datatype package} in
two ways.
%% 11.0.0 36
\beginlist
\itemitem{--}
Any individual {\datatype symbol}
may be added to a {\datatype package} by use
of @Funref[import]\rm. After the call to
{\function import}
it is possible to refer to the {\datatype symbols}
in the importing package
without any qualifier. The status of the {\datatype symbol}
in the {\datatype package}
it came from
is unchanged, and home package
for
this {\datatype symbol } is unchanged.
Once imported, a {\datatype symbol} is present in the
importing package
and can be removed only by calling {\function unintern}.
%% 11.4.0 4
A {\datatype symbol} is shadowed by another {\datatype symbol} in
some {\datatype package}
if the first {\datatype symbol} would be accessible by inheritance
if not for the presence of the second {\datatype symbol}.
The function @Funref[shadowing-import] causes the first {\datatype symbol}
to be imported without error
even if the second {\datatype symbol} is accessible.
%% 11.4.0 39
%% 11.4.0 40
\itemitem{--}
The second mechanism for making symbols from one package accessible in another
is provided by @Funref[use-package]\rm.
The function {\function unuse-package}
undoes the effects of a previous {\function use-package}.
\endlist
%% 11.4.0
There is no way to inherit the internal {\datatype symbols}
of another {\datatype package};
to refer to an internal {\datatype symbol},
the {\datatype symbol's} home
package must be made current,
a qualifier must be used, or the {\datatype symbol}
must be imported into the current
{\datatype package}.
%% 11.4.0 8
When a {\datatype symbol} is to be located in a
given {\datatype package}
the following occurs:
\beginlist
\itemitem{--} The {\datatype symbol} is looked for among the external and
internal {\datatype symbols} of the
{\datatype package} itself.
\itemitem{--} The
external {\datatype symbols} of the used {\datatype packages} are looked through
in some unspecified order. The
order does not matter; see the rules for handling name
conflicts listed below.
\endlist
%% 11.0.0 46
Within one {\datatype package}
any particular print name can refer to at most
one {\datatype symbol}. A name conflict
is said to occur when there is more than one candidate {\datatype symbol}.
Any time
a name conflict is about to occur,
a continuable error is signalled.
The following rules apply to name conflicts:
%% 11.0.0 47
\beginlist
%% 11.0.0 49
\itemitem{--}
Name conflicts are detected when they become possible, that is, when the
package structure is altered. Name
conflicts are not checked for during every name lookup.
\itemitem{--}
If the same {\datatype symbol}
is accessible to a {\datatype package} through more than
one path, there is no name conflict.
The same identical {\datatype symbol} cannot conflict with itself.
Name conflicts occur only between distinct {\datatype symbols} with
the same print name.
%% 11.0.0 48
\itemitem{--} Every {\datatype package} has a
list of shadowing {\datatype symbols}.
A shadowing {\datatype symbol} takes precedence over any
other {\datatype symbol} of the same print name
that would otherwise be accessible in the
{\datatype package}.
A name conflict involving a shadowing symbol is always
resolved in favor of the shadowing {\datatype symbol},
without signalling an error
(except for one exception involving {\function import}).
See @Funref[shadow] and @Funref[shadowing-import]\rm.
%% 11.0.0 50
\itemitem{--}
The functions {\function use-package}, {\function import}, and {\function export}
check for name
conflicts.
%% 11.0.0 52
\itemitem{--}
{\function shadow} and {\function shadowing-import}
never signal a name-conflict error.
%% 11.0.0 53
\itemitem{--}
{\function unuse-package}, {\function unexport}, and {\function unintern}
(when the {\datatype symbol}
being
uninterned is not a shadowing symbol) do not need to do any
name-conflict checking.
%% 11.0.0 54
\itemitem{--}
Giving a shadowing symbol to {\function unintern}
can uncover a name conflict that had
previously been resolved by the shadowing.
%% 11.0.0 55
\itemitem{--}
Aborting from a name-conflict error leaves the original {\datatype symbol}
accessible.
\itemitem{--}
Package functions signal name-conflict errors before making any
change to the package structure. When multiple changes are to be made,
it is
permissible for the implementation to process each change separately,
so that aborting from a name
conflict caused by the second {\datatype symbol}
in the {\datatype list} will not unexport the
first {\datatype symbol} in the {\datatype list}.
Multiple changes could be made with {\function export}.
%% 11.0.0 56
\itemitem{--}
Continuing from a name-conflict error should offer the user a chance to
resolve the name conflict in favor of either of the candidates. The
{\datatype package}
structure should be altered to reflect the resolution of the
name conflict, via {\function shadowing-import},
{\function unintern}, or {\function unexport}.
%% 11.0.0 57
\itemitem{--}
A name conflict in {\function use-package}
between a {\datatype symbol} directly present in the
using {\datatype package}
and an external {\datatype symbol} of the used
{\datatype package} is resolved
in favor of the first {\datatype symbol}
by making it a shadowing {\datatype symbol}, or in favor
of the second {\datatype symbol}
by uninterning the first {\datatype symbol} from the using
{\datatype package}.
%% 11.0.0 60
\itemitem{--}
A name conflict in {\function export} or {\function unintern}
due to a {\datatype package's}
inheriting two distinct {\datatype symbols}
with the same print name from two other
{\datatype packages}
may be resolved in favor of either {\datatype symbol} by importing it into
the using {\datatype package}
and making it a shadowing symbol, just as with
{\function use-package}.
\endlist
%% 11.2.0 5
Figure {\chapno--\the\capno}
lists the {\word tools} that are applicable
to {\datatype packages}.
For the {\word operators} listed here, all optional arguments named
{\arg package} default to the current value of @var[package]\rm. Where an
{\word operator}
takes an argument that is either a {\datatype symbol} or a {\datatype list}
of {\datatype symbols},
an argument of @false\ is treated as an empty {\datatype list} of
{\datatype symbols}. Any {\arg package}
argument may be either a {\datatype string}, a {\datatype symbol}, or
a {\datatype package}.
If a {\datatype symbol}
is supplied, its print name will be used as the {\datatype package}
name.
\boxfig
{\dimen0=.75pc
\tabskip \dimen0 plus .5 fil
\halign to \hsize {#\hfil\tabskip \dimen0 plus 1fil\hfil\tabskip \dimen0 plus
1fil\hfil\cr
\noalign{\vskip -9pt}
@var[package] & {\tt make-package} & {\tt in-package} \cr
{\tt find-package }&{\tt package-name }&{\tt package-nicknames }\cr
{\tt rename-package }&{\tt package-use-list }&{\tt package-used-by-list }\cr
{\tt package-shadowing-symbols }&{\tt list-all-packages }&{\tt intern }\cr
{\tt find-symbol }&{\tt unintern }&{\tt export }\cr
{\tt unexport }&{\tt import }&{\tt shadowing-import }\cr
{\tt shadow }&{\tt use-package }&{\tt unuse-package }\cr
{\tt find-all-symbols }&{\tt do-symbols }&{\tt do-external-symbols }\cr
{\tt do-all-symbols }&{\tt modules }&{\tt provide }\cr
{\tt require }& & \cr
\noalign{\vskip -9pt}
}}
\caption{Package tools}
\endfig
%% 11.6.0 1
The following packages, at least, are built into every @clisp\ system:
%% 11.6.0 2
\beginlist
\itemitem{\tt lisp}
%% clean-up issue `contains all and only'
The package named @f[lisp] contains the primitives of the
@clisp\ system. Its external symbols include all of the
user-visible functions and global variables that are present in the
@clisp\ system, such as {\function car}, {\function cdr}, @var[package]\rm, etc.
%% 11.6.0 3
\itemitem{\tt user}
%% clean-up issue `lisp package and may use other packages as well'
The @f[user] package is the value of @var[package] when
a @clisp\ system starts up. This package uses the @f[lisp] package.
%% 11.6.0 4
\itemitem{\tt keyword}
This package contains all of the keywords used by built-in
or user-defined @xlisp\ functions. Printed symbol representations
that start with a colon are interpreted as referring to symbols
in this package, which are always external symbols. All symbols in this
package are treated as constants that evaluate to themselves.
The function {\function symbol-value} may be used to retrieve these values.
%% 11.6.0 5
\itemitem{\tt system}
This package name is reserved to the implementation,
uses the @f[lisp] package, and has the
nickname @f[sys]\rm.
\endlist
\beginsubsubsection{\datatype Pathname}
%% 23.1.1 1
All file systems dealt with by @clisp\ are forced into a common framework
in which files are named by an object of type {\datatype pathname},
a {\datatype pathname},
that can be translated by the underlying operating system to a file
name.
%% 23.1.1 3
A {\datatype pathname} always has six components, described below.
These components
are the common interface that allows programs to work the same way with
different file systems; the mapping of the pathname components into the
concepts peculiar to each file system is
implementation-dependent.
%% 23.1.1 4
\beginlist
%% 23.1.1 5
%% 23.1.1 17
\itemitem{\bf Host}
The name of the file system on which the file resides.
The host may be a
{\datatype string}, indicating a file system, or a
{\datatype list}
of {\datatype strings},
of which the first names the file system and the rest
may be used for inter-network routing.
\itemitem{\bf Device}
Corresponds to the ``device'' or ``file structure'' concept in many
host file systems: the name of a (logical or physical) device containing files.
%% 23.1.1 6
\itemitem{\bf Directory}
Corresponds to the ``directory'' concept in many host file systems:
the name of a group of related files.
%% 23.1.1 7
\itemitem{\bf Name}
The name of a group of files that can be thought of as
conceptually the ``same'' file.
%% 23.1.1 8
%% 23.1.1 15
\itemitem{\bf Type}
Corresponds to the ``filetype'' or ``extension'' concept in many host
file systems. This says what kind of file this is.
The type is always a {\datatype string}, @nil\ or {\keyword :wild}.
When the type is not supplied, its value is implementation-dependent.
%% 23.1.1 9
%% 23.1.1 16
\itemitem{\bf Version}
Corresponds to the ``version number'' concept in many host file systems.
The version is either a positive {\datatype integer}
or a {\datatype symbol } from the following list:
{\function nil}, {\keyword :wild}, or
{\keyword :newest} (refers to the largest version number
that already exists in the file system when reading a file, or to
a version number
greater than any already existing in the file system
when writing a new file). Implementations
may define other special version {\datatype symbols}.
\endlist
The following rules apply to the components of a {\datatype pathname}.
%% 23.1.1 12
\beginlist
\itemitem{--}
Not all of the components of a {\datatype pathname}
need to be supplied. If a
component of a {\datatype pathname}
is missing, its value is @nil\rm. Before the file
system interface can do anything with a file, such as opening the
file, all the missing components of a {\datatype pathname} must be filled in
from a set of defaults.
Parsing a namestring
that does not contain certain components will result in a
{\datatype pathname} with
missing components.
%% 23.1.1 13
\itemitem{--}
A component of a {\datatype pathname} can also be the keyword {\keyword
:wild},
which means that the {\datatype pathname}
component matches anything.
%% 23.1.1 14
\itemitem{--}
Except where otherwise specified, the values
for components of a {\datatype pathname} are
implementation-dependent.
%% 23.1.1 18
\itemitem{--}
The device, directory, and name components can each be a {\datatype string}
(with
implementation-dependent rules on allowed characters and length) or possibly
some other @clisp\ {\word object}
which has an implementation-dependent format.
Supplying a {\datatype string}
as a pathname component for a host that requires an {\word object} as a
component will cause conversion of the {\datatype string} to the appropriate
{\word object}.
\endlist
%% 23.1.1 10
A {\datatype pathname}
is not necessarily the name of a specific file.
Rather, it is a specification (possibly only a partial specification) of
how to access a file.
A {\datatype pathname}
need not correspond to any file that
actually exists, and more than one {\datatype pathname}
can refer to the same file.
For example, the {\datatype pathname}
with a version of {\keyword :newest} may refer to the
same file as a {\datatype pathname}
with the same components except a certain number
as the version. Indeed, a {\datatype pathname}
with version {\keyword :newest} may refer to
different files as time passes, because the meaning of such a {\datatype
pathname}
depends on the state of the file system.
%% 23.1.1 11
{\datatype Pathnames} that are specified by {\datatype strings}
(called namestrings) are parsed and
merged. Parsing is the conversion of a namestring
into a {\datatype pathname}. This operation is
implementation-dependent, because the format of namestrings
is implementation-dependent.
Merging takes a {\datatype pathname} with missing components
and supplies values for those components from a source of defaults.
%% 23.1.1 20
An implementation is free to accommodate other file system features in its
{\datatype pathname} representation and provide a parser that can process such
specifications in namestrings. A program that
depends explicitly on any such features will not be portable.
The following figures contain lists of {\word tools} that are applicable to the
file system interface.
Figure {\chapno--\the\capno} lists the {\datatype pathname} {\word tools}.
\boxfig
{\dimen0=.75pc
\tabskip \dimen0 plus .5 fil
\halign to \hsize {#\hfil\tabskip \dimen0 plus 1fil\hfil\tabskip \dimen0 plus
1fil\hfil\cr
\noalign{\vskip -9pt}
{\tt pathname }&{\tt truename }&{\tt parse-namestring }\cr
{\tt merge-pathnames }& @var[default-pathname-defaults]&{\tt make-pathname }\cr
{\tt pathnamep }&{\tt pathname-host }&{\tt pathname-device }\cr
{\tt pathname-directory }&{\tt pathname-name }&{\tt pathname-type }\cr
{\tt pathname-version }&{\tt namestring }&{\tt file-namestring }\cr
{\tt directory-namestring }&{\tt host-namestring }&{\tt enough-namestring }\cr
{\tt user-homedir-pathname } & & \cr
\noalign{\vskip -9pt} }}
\caption{File System Interface tools - 1}
\endfig
Figure {\chapno--\the\capno} lists the file and directory {\word tools}.
\boxfig
{\dimen0=.75pc
\tabskip \dimen0 plus .5 fil
\halign to \hsize {#\hfil\tabskip \dimen0 plus 1fil\hfil\tabskip \dimen0 plus
1fil\hfil\cr
\noalign{\vskip -9pt}
{\tt directory} &{\tt open }&{\tt with-open-file }\cr
{\tt rename-file }&{\tt delete-file }&{\tt probe-file }\cr
{\tt file-write-date }&{\tt file-author }&{\tt file-position }\cr
{\tt file-length} & {\tt load} & @var[load-verbose] \cr
\noalign{\vskip -9pt} }}
\caption{File System Interface tools - 2}
\endfig
%% 2.11.0 1
\beginsubsubsection{\datatype Random-state}
An {\word object} of type {\datatype random-state} (a {\datatype random-state}
object)
contains state information used by the pseudo-random number generator.
%% 12.9.0 1
The pseudo-random numbers
in a random number series are implementation-dependent,
but the distribution of the numbers should
be machine-independent.
Figure {\chapno--\the\capno} lists
the {\word tools} that are applicable to {\datatype random-state}.
\boxfig
{\dimen0=.75pc
\tabskip \dimen0 plus .5 fil
\halign to \hsize {#\hfil\tabskip \dimen0 plus 1fil\hfil\tabskip \dimen0 plus
1fil\hfil\cr
\noalign{\vskip -9pt}
{\tt random} & @var[random-state] & \cr
{\tt make-random-state} & {\tt random-state-p} & \cr
\noalign{\vskip -9pt}
}}
\caption{Random-state tools}
\endfig
\issue{FUNCTION-TYPE:X3J13-MARCH-88}
\beginsubsubsection{\datatype Function}
An {\word object} of type {\datatype function\/} is called a {\datatype
function}.
A {\datatype function}
may be supplied as an argument without error to @Funref[funcall]
or @Funref[apply]\rm, and is
to be executed as code when arguments are supplied.
The functional computation produces one or more values, produces no
values, or
takes a non-local exit.
The type {\datatype function} has at least one {\word subtype} called
{\datatype compiled-function}.
Implementations are free to define other {\word subtypes} of
the type {\datatype function}.
\beginsubsubsection{\datatype Compiled-function}
An object of type {\datatype compiled-function} is a called a {\datatype
compiled-function}.
%% 2.13.0 2
A {\datatype compiled-function} is a compiled code {\word object}
that has been produced by the
compiler.
\endissue{FUNCTION-TYPE:X3J13-MARCH-88}
\beginsubsubsection{\datatype Nil}
The empty data type, which contains no {\word objects}, is
denoted by @nil\rm.
\beginsubsubsection{\datatype Common}
The type {\datatype common} encompasses all the
{\word objects} required by the @clisp\ language. An implementation
is free to provide other
{\word types} that are not {\word subtypes} of the type {\datatype common}.
\endsubSection%{Data Type Definition}
%% Type Specifiers
\beginsubSection{Type Specifiers}
\issue{ARRAY-TYPE-ELEMENT-TYPE-SEMANTICS:UNIFY-UPGRADING}
The following will be deleted:
%% 4.5.0 5
Type specifiers are used for two different purposes:
declaration and discrimination.
\endissue{ARRAY-TYPE-ELEMENT-TYPE-SEMANTICS:UNIFY-UPGRADING}
There are two reasons that an {\word object}'s type is used:
\beginlist
\itemitem{1.} The consequences are undefined if an
{\word object} is an argument to an {\word operator}
and the argument
is not one of the {\word operator}'s required {\word types}.
\itemitem{2.} If run-time optimizations in compiled code are desired,
it is often necessary to reduce the number of {\word types} of {\word objects}
a variable can hold.
\endlist
%% 4.1.0 1
The type specifiers (they are {\datatype symbols})
defined by the system are those shown in Figure
{\chapno--\the\capno}.
%% 4.3.0 4
\boxfig
{\dimen0=.75pc
\tabskip \dimen0 plus .5 fil
\halign to \hsize {#\hfil\tabskip \dimen0 plus 1fil\hfil\tabskip \dimen0 plus
1fil\hfil\cr
\noalign{\vskip -9pt}
{\tt array}&{\tt integer}&{\tt short-float}\cr
{\tt atom}&{\tt keyword}&{\tt signed-byte}\cr
{\tt bignum}&{\tt list}&{\tt simple-array}\cr
{\tt bit}&{\tt long-float}&{\tt simple-bit-vector}\cr
{\tt bit-vector}&{\tt mod}&{\tt simple-string}\cr
{\tt character}&{\tt nil}&{\tt simple-vector}\cr
{\tt common}&{\tt null}&{\tt single-float}\cr
{\tt compiled-function}&{\tt number}&{\tt standard-char}\cr
{\tt complex}&{\tt package}&{\tt stream}\cr
{\tt cons}&{\tt pathname}&{\tt string}\cr
{\tt double-float}&{\tt random-state}&{\tt string-char}\cr
{\tt fixnum}&{\tt ratio}&{\tt symbol}\cr
{\tt float}&{\tt rational}&{\tt t}\cr
{\tt function}&{\tt readtable}&{\tt unsigned-byte}\cr
{\tt hash-table}&{\tt sequence}&{\tt vector}\cr
\noalign{\vskip -9pt} }}
\caption{Table of Atomic Type Specifiers}
\endfig
The syntax for type specifiers is illustrated in Figure {\chapno--\the\capno}.
\boxfig
{\advance\baselineskip by 2.5pt
\halign{\hskip\leftskip\hfil#\hfil\cr
{\it typespec\/}::$=\;$&{\it atomic-type-specifier\/}\cr
$\vert\;$& \paren {{\tt satisfies} predicate-name\/}\cr
$\vert\;$& \paren {{\tt member} \star{\curly{object}}}\cr
$\vert\;$& \paren {{\tt not} typespec\/}\cr
$\vert\;$& \paren {{\tt and} \star{\curly{typespec}}}\cr
$\vert\;$& \paren {{\tt or} \star{\curly{typespec}}}\cr
$\vert\;$& \paren {{\tt array} {\ttbrac{\curly{typespec $\vert$ {\tt *} } \brac{dimensions}}}}\cr
$\vert\;$& \paren {{\tt simple-array} {\ttbrac{\curly{typespec $\vert$ {\tt *} } \brac{dimensions}}}}\cr
$\vert\;$& \paren {{\tt vector} {\ttbrac{\curly{typespec $\vert$ {\tt *} } \brac{\curly{size $\vert$ {\tt *}}}}}}\cr
$\vert\;$& \paren {{\tt simple-vector} \ttbrac{\it size\/}}\cr
$\vert\;$& \paren {{\tt string} \ttbrac{\it size\/ $\vert$ {\tt *}}}\cr
$\vert\;$& \paren {{\tt simple-string} \ttbrac{\it size\/ $\vert$ {\tt *}}}\cr
$\vert\;$& \paren {{\tt bit-vector} \ttbrac{\it size\/ $\vert$ {\tt *}}}\cr
$\vert\;$& \paren {{\tt simple-bit-vector} \ttbrac{\it size\/ $\vert$ {\tt *}}}\cr
$\vert\;$& \paren {{\tt integer} \ttbrac{integer-limit \brac{integer-limit}}}\cr
$\vert\;$& \paren {{\tt fixnum} \ttbrac{fixnum-limit \brac{fixnum-limit}}}\cr
$\vert\;$& \paren {{\tt mod} \ttbrac{\it integer\/ $\vert$ {\tt *}}}\cr
$\vert\;$& \paren {{\tt signed-byte} \ttbrac{\it size\/ $\vert$ {\tt *}}}\cr
$\vert\;$& \paren {{\tt unsigned-byte} \ttbrac{\it size\/ $\vert$ {\tt *}}}\cr
$\vert\;$& \paren {{\tt rational} \ttbrac{rational-limit \brac{rational-limit}}}\cr
$\vert\;$& \paren {{\tt float} \ttbrac{float-limit \brac{float-limit}}}\cr
$\vert\;$& \paren {{\tt short-float} \ttbrac{short-float-limit \brac{short-float-limit}}}\cr
$\vert\;$& \paren {{\tt single-float} \ttbrac{single-float-limit \brac{single-float-limit}}}\cr
$\vert\;$& \paren {{\tt double-float} \ttbrac{double-float-limit \brac{double-float-limit}}}\cr
$\vert\;$& \paren {{\tt long-float} \ttbrac{long-float-limit \brac{long-float-limit}}}\cr
$\vert\;$& \paren {{\tt complex} \ttbrac{typespec $\vert$ {\tt *}}}\cr
$\vert\;$& \paren {{\tt function} \ttbrac{arg-typespec-list \brac{value-typespec}}}\cr
}}
\caption{Syntax for Type Specifiers}
\endfig
Figure {\chapno--\the\capno} gives the definitions
applicable to the syntax for type specifiers.
\boxfig
{\advance\baselineskip by 2.5pt
\halign{#\hfil\hfil\cr
{\it arg-typespec-list\/}::$=$ \vtop{\hbox{\star{(\curly{typespec}}
\ttbrac{{\opt} {\star{\curly{typespec\/}}}}
\ttbrac{{\rest} {\it typespec\/}}
\hbox{\quad\ttbrac{{\key{}} \star{\curly{\it typespec\/}}}{\rm )}}}} & \cr
{\it value-typespec\/}::$=$ {\it typespec\/} $\vert$ \paren{{\tt values} . {\it arg-typespec-list\/}} & \cr
{\it dimensions\/}::$=$ {\it integer\/} $\vert$ {\tt *} $\vert$
\paren{\star{\curly{integer $\vert$ {\tt *} }}} & \cr
{\it size\/}::$=$ {\it integer\/} & \cr
{\it integer-limit\/}::$=$ {\it integer\/} $\vert$ {\tt *}
$\vert$ ({\it integer\/}) & \cr
{\it fixnum-limit\/}::$=$ {\it fixnum\/} $\vert$ {\tt *}
$\vert$ ({\it fixnum\/}) &\cr
{\it rational-limit\/}::$=$ {\it rational\/} $\vert$ {\tt *} $\vert$ ({\it rational\/})\cr
{\it float-limit\/}::$=$ {\it float\/} $\vert$ {\tt *} $\vert$ ({\it float\/})\cr
{\it short-float-limit\/}::$=$ {\it short-float\/} $\vert$ {\tt *} $\vert$ ({\it short-float\/})\cr
{\it single-float-limit\/}::$=$ {\it single-float\/} $\vert$ {\tt *} $\vert$ ({\it single-float\/})\cr
{\it double-float-limit\/}::$=$ {\it double-float\/} $\vert$ {\tt *} $\vert$ ({\it double-float\/})\cr
{\it long-float-limit\/}::$=$ {\it long-float\/} $\vert$ {\tt *} $\vert$ ({\it long-float\/})\cr
}}
\caption{Definitions for Syntax for Type Specifiers}
\endfig
%% 4.2.0 1
If a type specifier is a {\datatype list}, the {\word car}
of the {\datatype list}
is a {\datatype symbol}, and the rest of the {\datatype list}
is subsidiary
{\word type} information. The subsidiary items may be
unspecified. The unspecified subsidiary items are indicated
by writing @f[*]\rm. For example, to completely specify
a {\datatype vector}, the {\word type} of the elements
and the length of the {\datatype vector}, must be present.
@lisp
(vector double-float 100)
@endlisp
To leave the length unspecified:
@lisp
(vector double-float *)
@endlisp
To leave the element type unspecified:
@lisp
(vector * 100)
@endlisp
Suppose that two type specifiers are the same except that the first
has a @f[*] where the second has a more explicit specification.
Then the second denotes a {\word subtype}
of the {\word type} denoted by the first.
%% 4.2.0 2
If a {\datatype list}
has one or more unspecified items at the end, those items
may be dropped.
If dropping all occurrences of @f[*] results in a singleton {\datatype list},
then the parentheses may be dropped as well (the list may be replaced
by the {\datatype symbol} in its {\word car}).
For example,
{\tt (vector double-float *)}
may be abbreviated to {\tt (vector double-float)},
and {\tt (vector * *)} may be abbreviated to {\tt (vector)}
and then to
{\tt vector}.
A list of possible type specifier {\datatype lists} follows:
\beginlist
%% 4.3.0 1
\itemitem
{\tt (satisfies {\arg predicate-name})}
This denotes
the set of all {\word objects}
that satisfy the predicate {\arg predicate-name},
which must be a {\datatype symbol}
whose global {\word function} definition is a one-argument
predicate.
A name is required for {\arg predicate-name}; {\word lambda-expressions}
are not allowed.
For example, the type {\tt (satisfies numberp)} is the
same as the type {\datatype number}.
The call {\tt (typep x '(satisfies p))}
results in applying @f[p] to @f[x]
and returning @f[t] if the result is true and @nil\ if the result is false.
%% 4.3.0 2
For example, the type {\datatype string-char} could be defined as
@lisp
(deftype string-char () '(and character (satisfies string-char-p)))
@endlisp
%% 4.4.0 3
\itemitem
{\tt (member {\arg object1} {\arg object2} ...)}
This denotes the set
containing the named {\arg objects}. An {\word object} is of
this {\word type}
if and only if it is @Funref[eql] to one of the specified {\arg objects}.
%% 4.4.0 4
\itemitem
{\tt (not {\arg type})}
This denotes the set of all {\word objects} that
are not of the type {\arg type}.
%% 4.4.0 5
\itemitem{\tt (and {\arg type1} {\arg type2} ...)}
This denotes the set of all {\word objects} of the
{\word type} determined by the intersection of
{\arg type1}, {\arg type2},....
%% 4.4.0 7
\itemitem{\tt (or {\arg type1} {\arg type2} ...)}
This denotes the set of all {\word objects} of the
{\word type} determined the union of {\arg type1}, {\arg type2},....
For example, the type {\datatype list}
by definition is the same as
{\tt (or null cons)}. Also, the value
returned by
@Funref[position] is of type {\tt (or null (integer 0 *))}
(either @nil\ or a non-negative {\datatype integer}).
%% 4.6.0 3
\itemitem{\tt (integer {\arg low} {\arg high})}
This denotes the {\datatype integers} between
{\arg low} and {\arg high}. {\arg Low} and {\arg high}
must each be {\datatype integers}, a {\datatype list}
of an {\datatype integer}, or unspecified.
An {\datatype integer} is an inclusive limit,
a {\datatype list} of an {\datatype integer} is an exclusive limit, and
@f[*] means that a limit does not exist
and so effectively denotes minus or plus infinity, respectively.
{\datatype Fixnum} is a name
for {\tt (integer {\arg smallest} {\arg largest})}
for implementation-dependent
values of {\arg smallest} and {\arg largest}.
The type {\tt (integer 0 1)}
has the name {\datatype bit}.
%% 4.6.0 4
\itemitem{\tt (mod {\arg n})}
This denotes the set of non-negative {\datatype integers} less than {\arg
n}.
This is equivalent to {\tt (integer 0 {\it n}-1)}
or to {\tt (integer 0 ({\it n}))}.
%% 4.6.0 5
\itemitem{\tt (signed-byte {\arg s})}
This denotes the set of {\datatype integers} that can be represented
in two's-complement form in a byte of {\arg s} bits. This is
equivalent to
{\tt (integer $-2↑{s-1} 2↑{s-1}-$1)}.
The type {\datatype signed-byte} or the type {\tt (signed-byte *)}
is the same as the type {\datatype integer}.
%% 4.6.0 6
\itemitem{\tt (unsigned-byte {\arg s})}
This denotes the set of non-negative {\datatype integers} that can be
represented in a byte of {\arg s} bits. This is equivalent to
{\tt (mod $2↑s$)},
that is, {\tt (integer 0 $2↑s-$1)}.
The type {\datatype unsigned-byte} or
the type {\tt (unsigned-byte *)} is the same as
the type {\tt (integer 0 *)}, the set of non-negative {\datatype integers}.
%% 4.6.0 7
\itemitem{\tt (rational {\arg low} {\arg high})}
This denotes the {\datatype rationals} between
{\arg low} and {\arg high}. {\arg Low} and {\arg high}
must each be a {\datatype rational}, a {\datatype list} of a {\datatype
rational}, or unspecified.
A {\datatype rational} is an inclusive limit,
a {\datatype list} of a {\datatype rational} is an exclusive limit, and
@f[*] means that a limit does not exist
and so denotes minus and plus infinity, respectively.
%% 4.6.0 8
%% 4.6.0 9
\itemitem{\tt (float {\arg low} {\arg high})}
\itemitem{\tt (short-float {\arg low} {\arg high})}
\itemitem{\tt (single-float {\arg low} {\arg high})}
\itemitem{\tt (double-float {\arg low} {\arg high})}
\itemitem{\tt (long-float {\arg low} {\arg high})}
These denote the set of {\datatype floating}-point numbers between
{\arg low} and {\arg high}. {\arg Low} and {\arg high}
must each be a {\datatype floating}-point number,
a {\datatype list} of a {\datatype floating}-point number,
or unspecified. A {\datatype floating}-point number
is an inclusive limit, a {\datatype list} of a
{\datatype floating}-point number is an exclusive limit, and
@f[*] means that a limit does not exist
and so denotes minus and plus infinity, respectively.
In the case of the types {\tt short-float}, {\tt single-float},
{\tt double-float}, or {\tt long-float},
if a limit is a {\datatype floating}-point
number (or a {\datatype list} of one),
it must be one of the appropriate format.
%% 4.6.0 10
\itemitem{\tt (string {\arg size})}
This denotes the same type as
the type {\tt (array string-char ({\arg size}))}:
the set of {\datatype strings} of size {\arg size}.
%% 4.6.0 11
\itemitem{\tt (simple-string size {\arg size})}
This denotes the same type
as the type {\tt (simple-array string-char ({\arg size}))}: the set of
{\datatype simple-strings} of size {\arg size}.
%% 4.6.0 12
\itemitem{\tt (bit-vector {\arg size})}
This denotes the same type as the type {\tt (array bit ({\arg size}))}:
the set of {\datatype bit-vectors} of size {\arg size}.
%% 4.6.0 13
\itemitem{\tt (simple-bit-vector {\arg size})}
This denotes the same type as the type
{\tt (simple-array bit ({\arg size}))}: the set of
{\datatype simple-bit-vectors} of size {\arg size}.
%% 4.5.0 6
%% 4.5.0 7
\itemitem{\tt (array {\arg element-type dimensions})}
This denotes the set
of {\datatype arrays\/}
whose elements are all of type {\arg element-type}
and whose dimensions are {\arg dimensions}.
{\arg Element-type} must be a valid type specifier or unsupplied.
{\arg Dimensions} must be a non-negative {\datatype integer},
which is the number
of dimensions, or a {\datatype list} of non-negative {\datatype integers}
representing the length of each dimension (any dimension
may be unsupplied instead), or it may be unsupplied.
\issue{ARRAY-TYPE-ELEMENT-TYPE-SEMANTICS:UNIFY-UPGRADING}
The following will be left out:
For declaration purposes, this {\word type} encompasses those
{\datatype arrays\/}
that can result by supplying {\arg element-type} as the element type
to the function @Funref[make-array]\rm; this may be different
from what the {\word type} means for discrimination purposes.
For example:
@lisp
(array integer 3) ;Three-dimensional arrays of integers
(array integer (* * *)) ;Three-dimensional arrays of integers
(array * (4 5 6)) ;4-by-5-by-6 arrays
(array character (3 *)) ;Two-dimensional arrays of characters that have
;three rows
(array short-float @empty) ;Zero-rank arrays of short-floats
@Endlisp
\endissue{ARRAY-TYPE-ELEMENT-TYPE-SEMANTICS:UNIFY-UPGRADING}
\issue{ARRAY-TYPE-ELEMENT-TYPE-SEMANTICS:UNIFY-UPGRADING}
{\tt (array *)} refers to all {\datatype arrays\/}
regardless of element type, {\tt (array {\arg type-specifier})}
refers only to those {\datatype arrays\/}
that can result from giving {\arg type-specifier} as the
{\tt :element-type} argument to {\function make-array}.
\endissue{ARRAY-TYPE-ELEMENT-TYPE-SEMANTICS:UNIFY-UPGRADING}
Note that the type {\tt (array t)}
is a subset of the type {\tt (array *)}.
The reason is that the type {\tt (array t)} is the set of {\datatype arrays\/}
that can
hold any {\word object} (the elements are of type
{\datatype t},
which includes all {\word objects}).
On the other hand, the type {\tt (array *)}
is the set of all {\datatype arrays\/} whatsoever, including for example
{\datatype arrays\/} that can hold only {\datatype characters}.
Now
the type {\tt (array character)} is not a subset of the type {\tt (array t)};
the two sets
are {\word disjoint} because the type {\tt (array character)} is not the
set of all {\datatype arrays\/} that can hold
{\datatype characters}, but rather the set of
{\datatype arrays\/}
that are specialized to hold precisely {\datatype characters} and no
other {\word objects}.
\issue{ARRAY-TYPE-ELEMENT-TYPE-SEMANTICS:UNIFY-UPGRADING}
The following will be deleted:
The following expression cannot be used to determine if
array @f[foo] can hold a {\datatype character}:
@lisp
(typep foo '(array character))
@endlisp
The following expression can be used to determine if
array @f[foo] can hold a {\datatype character}:
@lisp
(subtypep 'character (array-element-type foo))
@endlisp
\endissue{ARRAY-TYPE-ELEMENT-TYPE-SEMANTICS:UNIFY-UPGRADING}
%% 4.5.0 8
\itemitem{\tt (simple-array {\arg element-type dimensions})}
This is equivalent
to the type {\tt (array {\arg element-type} {\arg dimensions})}
except that it additionally
specifies that the {\datatype array\/}
{\word objects} are {\datatype simple-arrays}.
\issue{ARRAY-TYPE-ELEMENT-TYPE-SEMANTICS:UNIFY-UPGRADING}
{\tt (simple-array *)} refers to all {\datatype simple-arrays\/}
regardless of element type, {\tt (simple-array {\arg type-specifier})}
refers only to those {\datatype simple-arrays\/}
that can result from giving {\arg type-specifier} as the
{\tt :element-type} argument to {\function make-array}.
\endissue{ARRAY-TYPE-ELEMENT-TYPE-SEMANTICS:UNIFY-UPGRADING}
%% 4.5.0 9
\itemitem{\tt (vector {\arg element-type} {\arg size})}
This denotes the set of specialized
one-dimensional {\datatype arrays\/}
whose elements are all of type {\arg element-type}
and whose lengths are size {\arg size}. This is equivalent to
the type {\tt (array {\arg element-type} ({\arg size}))}.
For example:
@lisp
(vector double-float) ;Vectors of double-format floating-point numbers
(vector * 5) ;Vectors of length 5
(vector t 5) ;General vectors of length 5
(vector (mod 32) *) ;Vectors of integers between 0 and 31
@Endlisp
The types {\tt (vector string-char)} and {\tt (vector bit)}
have the names {\datatype string} and {\datatype bit-vector}.
Every implementation of @clisp\ must provide distinct representations for
these as distinct specialized {\word types}.
\issue{ARRAY-TYPE-ELEMENT-TYPE-SEMANTICS:UNIFY-UPGRADING}
{\tt (vector *)} refers to all {\datatype vectors\/}
regardless of element type, {\tt (vector {\arg type-specifier})}
refers only to those {\datatype vectors\/}
that can result from giving {\arg type-specifier} as the
{\tt :element-type} argument to {\function make-array}.
\endissue{ARRAY-TYPE-ELEMENT-TYPE-SEMANTICS:UNIFY-UPGRADING}
%% 4.5.0 10
\itemitem{\tt (simple-vector {\arg size})}
This is the same
as the type {\tt (vector t {\arg
size})} except that it additionally specifies
that its elements are {\datatype simple-vectors}.
%% 4.5.0 11
\itemitem{\tt (complex {\arg type})}
Every element of this {\word type} is a
{\datatype complex\/} number whose real part
and imaginary part are each of type {\arg type}.
This {\word type} encompasses those
{\datatype complex\/} numbers
that can result by giving numbers of the specified {\word type}
to @Funref[complex]\rm.
\issue{ARRAY-TYPE-ELEMENT-TYPE-SEMANTICS:UNIFY-UPGRADING}
The following will be deleted:
This may be different
from what the {\word type} means for discrimination purposes.
For example, Gaussian integers might be
described as the type {\tt (complex integer)}, even in implementations
where giving two {\datatype integers} to {\function complex\/} results
in an {\word object} of type {\tt (complex rational)}.
\endissue{ARRAY-TYPE-ELEMENT-TYPE-SEMANTICS:UNIFY-UPGRADING}
%% 2.1.4 3
The type of a specific {\datatype complex\/} number is indicated by a list
of the word @f[complex] and the type of the components; for example,
a specialized representation for {\datatype complex\/}
numbers with {\datatype short-float}
parts would be of type {\tt (complex short-float)}. The type
{\datatype complex\/}
encompasses all complex representations.
\issue{ARRAY-TYPE-ELEMENT-TYPE-SEMANTICS:UNIFY-UPGRADING}
{\tt (typep {\arg object} '(complex {\arg type-specifier}))}
refers to all {\datatype complex\/} numbers that can result from
giving {\datatype numbers} of type {\arg type-specifier}
to the function {\function complex\/}, plus all other
{\datatype complex\/} numbers
of the same specialized representation.
Both the real and the imaginary parts of any such
{\datatype complex\/} number must
satisfy:
{\tt (typep {\arg realpart}|{\arg imagpart} '{\arg type-specifier})}
\endissue{ARRAY-TYPE-ELEMENT-TYPE-SEMANTICS:UNIFY-UPGRADING}
%% 4.5.0 12
\itemitem{\tt (function ({\arg arg1-type} {\arg arg2-type} ...)
{\arg value-type})}
\issue{FUNCTION-TYPE}
The list form of the type {\datatype function}
may be used only for declaration and not for discrimination.
\endissue{FUNCTION-TYPE}
Every element of this {\word type} is
a {\word function} that accepts arguments at least of the
types
specified by the {\arg argj-type} forms and returns a value that is a
member of the types specified by the {\arg value-type} form. The
@optional, @rest, @key,
\issue{FUNCTION-TYPE-KEY-NAME}
and @allowotherkeys\
\endissue{FUNCTION-TYPE-KEY-NAME}
markers may appear in the list of argument
types.
\issue{FUNCTION-TYPE-KEY-NAME}
The @key\ parameters
should be supplied as lists of the form {\tt (keyword type)}.
The {\tt keyword} must
be a valid keyword-name
symbol and must be supplied in the actual arguments of a
call. This is usually a {\datatype symbol} in the {\tt keyword} package
but can be any {\datatype symbol}.
The @allowotherkeys\ declarations are interpreted as follows:
when @key\ is given in a
{\tt function} type specifier lambda list,
it is safe to assume that the @key s given
are exhaustive unless @allowotherkeys\ is present.
@allowotherkeys\ is an indication
that other keyword arguments may actually be
supplied and, if supplied, may be used.
For example,
the type of the function {\function make-list} could be declared as:
@lisp
(function make-list ((integer 0) &key (:initial-element t)) list)
@endlisp
\endissue{FUNCTION-TYPE-KEY-NAME}
The {\arg value-type} may be a {\tt values}
type specifier in order to indicate the
{\word types} of multiple values.
%% 4.5.0 13
For example, the function @Funref[cons] is of type
{\tt (function (t t) cons)},
because it can accept any two arguments and always returns a {\word
cons}.
{\function cons} is
also of type {\tt (function (float string) list)},
because it can
accept a {\datatype floating}-point number
and a {\datatype string} (among other things), and its
result is always of type {\datatype list}
(in fact a {\word cons} is never {\datatype null},
but that does not matter for this type declaration).
@Funref[truncate] is of type
{\tt (function (number number) (values number number))},
as well as of type
{\tt (function (integer (mod 8)) integer)}.
%% 4.5.0 14
\itemitem{\tt (values {\arg value1-type} {\arg value2-type} ...)}
This type specifier may be used only
as the {\arg value-type} in a {\tt function} type specifier or in
@Specref[the]\rm. It is used to specify individual {\word types} when
multiple values are involved.
The
@optional, @rest, and @key\ markers may appear in the {\arg value-type} list;
they indicate the parameter list of a
{\word function} that,
when given to @Specref[multiple-value-call] along with
the values, would be suitable for receiving those values.
\endlist
%% 4.7.0 1
New type specifiers can come into existence in two ways.
\beginlist
\itemitem{\bull} Defining a structure or class
with @Macref[defstruct] or {\function defclass} automatically
causes the name of the structure or class to be a new type specifier
{\datatype symbol}.
\itemitem{\bull} {\function deftype} can be used to define new type specifier
abbreviations.
\endlist
Figure {\chapno--\the\capno}
lists the {\word tools} that are applicable to types and declarations.
\boxfig
{\dimen0=.75pc
\tabskip \dimen0 plus .5 fil
\halign to \hsize {#\hfil\tabskip \dimen0 plus 1fil\hfil\tabskip \dimen0 plus
1fil\hfil\cr
\noalign{\vskip -9pt}
{\tt deftype }&{\tt coerce }&{\tt type-of }\cr
{\tt declare }&{\tt locally }&{\tt proclaim }\cr
{\tt the }&{\tt defstruct }&\cr
\noalign{\vskip -9pt} }}
\caption{Type and declaration tools}
\endfig
\beginsubsubsection{Type Upgrading}
\issue{ARRAY-TYPE-ELEMENT-TYPE-SEMANTICS:UNIFY-UPGRADING}
When type specifiers are used to declare {\word objects} to be of a certain
{\word type}, they are said to be used
for declaration. A type specifier used for declaration
can be the
{\tt :element-type} argument to
{\function make-array}, the {\arg result-type}
argument to {\function coerce},
an argument to the special form {\function the},
or an argument to {\function declare}.
An {\word object} declared to be of a certain
{\word type} may not satisfy
{\function typep} with that type specifier.
This is permissible because an implementation
is required only to construct the
result out of the most specialized {\word type} that can
accommodate elements of the {\word type} supplied as the argument
to the {\tt :element-type} named argument to {\function make-array}.
That is, an implementation may only provide a
very small number of {\word types} for storing
{\datatype arrays\/},
and it is permitted to upgrade any {\word type} request into
one of its built-in repertoire.
One type specifier with
this property is {\tt (array {\arg type-specifier})}
for various implementation-dependent values of {\arg type-specifier}.
Another type specifier with this property is
{\tt (complex {\arg type-specifier})}.
{\word Type} upgrading implies a movement upwards in the type
hierarchy lattice. In the case of {\datatype arrays\/}
the {\arg type-specifier} must be
a {\word subtype} of
{\tt (upgraded-array-element-type '{\arg type-specifier})}.
In the case of {\datatype complex\/} numbers, the
{\arg type-specifier} must be a {\word subtype} of
{\tt (upgraded-complex-part-type {\arg type-specifier})}.
If {\arg type-specifier1} is a {\word subtype} of {\arg type-specifier2}, then
{\tt (upgraded-array-element-type '{\arg type-specifier1})}
must also be a {\word subtype} of
{\tt (upgraded-array-element-type '{\arg type-specifier2})}.
Two {\word disjoint types} can be upgraded into
the same thing.
See {\function array-element-type}.
Upgrading an {\datatype array\/} element {\word type} is independent of any
other property of {\datatype arrays\/},
such as {\word rank}, adjustability, {\word fill-pointers}, or
displacement.
The reason {\word rank} is included is because
it would not be consistently possible to displace {\datatype arrays\/}
to those of
differing {\word rank} if {\word rank} were not included.
\endissue{ARRAY-TYPE-ELEMENT-TYPE-SEMANTICS:UNIFY-UPGRADING}
\endsubsubsection%{Type Upgrading}
\endsubSection%{Type Specifiers}
∂02-Mar-89 0928 X3J13-mailer forwarding note from gregor from larry
Received: from IBM.COM by SAIL.Stanford.EDU with TCP; 2 Mar 89 09:27:42 PST
Date: Wed, 01 Mar 89 13:15:48 PST
From: Thom Linden <baggins@IBM.com>
To: Common Lisp mailing <x3j13@sail.stanford.edu>
Message-ID: <890301.131548.baggins@almvma>
Subject: forwarding note from gregor from larry
=========================================================================
Received: from Xerox.COM by ibm.COM on 02/23/89 at 10:00:35 PST
Received: from Semillon.ms by ArpaGateway.ms ; 23 FEB 89 09:56:23 PST
Date: Thu, 23 Feb 89 09:56 PST
From: Gregor.pa@Xerox.COM
Subject: [masinter.pa: Re: cs proposal straw vote]
To: baggins@IBM.com
Fcc: BD:>Gregor>mail>outgoing-mail-5.text.newest
Included-msgs: The message of 22 Feb 89 20:59 PST from masinter.pa
Included-References: The message of 22 Feb 89 12:08 PST from
baggins@IBM.com
Message-ID: <19890223175611.1.GREGOR@SPIFF.parc.xerox.com>
Line-fold: no
Larry asked me to forward this to you as the official Xerox position on
the straw ballot.
Date: Wed, 22 Feb 89 20:59 PST
From: masinter.pa
My personal opinion:
CHAR-FONT-UNUSED-CHAR-BITS-NONPORTABLE:
Eliminate of font and bit attributes.
**** Yes
Add rules for an implementation supporting attributes.
**** No. Attributes can be done as
attributes of subclass of CHARACTER.
Remove any description of
implementation-supported attributes.
Remove CHAR-FONT-LIMIT
Remove CHAR-BITS-LIMIT
Remove INT-CHAR
Remove CHAR-BITS
Remove CHAR-FONT
Remove MAKE-CHAR
Remove CHAR-CONTROL-BIT
Remove CHAR-META-BIT
Remove CHAR-SUPER-BIT
Remove CHAR-HYPER-BIT
Remove CHAR-BIT
Remove SET-CHAR-BIT
**** Yes.
Issue: CHAR-INT-ONLY-USEFUL-WHEN-ATTRIBUTES-SUPPORTED
Proposal:
Remove CHAR-INT
**** YES
Issue: CHARACTER-TYPE-RESTRICTIVE
Define BASE-CHARACTER as a subtype of STRING.
Standard characters are a subset of the base
characters.
STANDARD-CHAR type is replaced by (CHARACTER :STANDARD)
Remove the semi-standard characters.
**** NO.
Define (CHARACTER :STANDARD) in the same
way that STANDARD-CHAR used to be.
Define BASE-CHARACTER as
(upgraded-array-element-type '(CHARACTER :STANDARD)).
Remove the semi-standard characters.
<<You might argue that this has the same effect, but
it doesn't.>>
Issue: STRING-TYPE-RESTRICTIVE
Proposal:
Define STRING as a union type
*** YES
STRING used as a type specifier for object creation
means (VECTOR CHARACTER)
*** YES
All string functions operate as specified on any
string object except it is an error to insert
an extended character into a base string.
*** NO. It is an error to insert an object in an
array where the object is not of the element type
of the array.
<<You might argue this has the same effect, but
my wording here is more general.>>
Extend the COERCE function to allow coercion from
base string to extended string.
*** NO. This is unnecesarry. COERCE already
coerces from one vector type to another.
Issue: STRING-TYPE-ABBREVIATIONS
Proposal:
Add BASE-STRING
Add GENERAL-STRING
*** NO. Unnecessary, confusing, clutter.
Issue: SIMPLE-STRING-TYPE-RESTRICTIVE
Proposal:
Define SIMPLE-STRING as a union type
Define SIMPLE-STRING as a type specifier for object
creation means (SIMPLE-ARRAY CHARACTER (size))
*** NO. Confusing. Poor performance model.
SIMPLE isn't simple.
Issue: SIMPLE-STRING-TYPE-ABBREVIATIONS
Proposal:
Add SIMPLE-BASE-STRING
Add SIMPLE-GENERAL-STRING
*** NO, even if SIMPLE-STRING-TYPE-RESTRICTIVE adopted.
Unnecessary. Useless clutter.
Issue: FILE-EXTERNAL-REPRESENTATION
Proposal:
Add :EXTERNAL-CODED-CHARACTER-FORMAT keyword to OPEN
*** NO, wrong name. Unspecified. Better to omit than to
add with unspecified or poorly specified behavior.
Better to add as "future direction" in standard than in current
state.
Issue: STRING-BINARY-WIDTH
Proposal:
Add :EXTERNAL-CODED-STRING-LENGTH function
*** NO, even if you meant to omit the :. CL currently doesn't
admit that text and binary can be intermixed. No standard
way to use information returned. No relation to
FILE-POSITION defined.
Issue: CHAR-CODE-NON-PORTABLE
Proposal:
Add CHAR-CCS-VALUE function
*** NO. Requires lots of implementation mechanism.
Of limited use in nearly all situations.
Issue: CHARACTER-IDENTIFICATION-NONPORTABLE
Proposal:
Introduce the concept of Registries
*** IF modified; should only suggest names of
character repertoires, and name at least
STANDARD HIRAGANA KATAKANA
GREEK. Standardization of repertoire elements
to be specified in future.
Standardize on #\registry:id
*** YES, as suggestion
add all-implemented-registries
*** NO
Add *ALL-CHARACTER-REGISTRY-NAMES* variable
*** NO
Add FIND-CHAR function
*** NO, NAME-CHAR will do
Add CHAR-LABEL function
*** NO, CHAR-NAME will do
Add CHAR-REGISTRY-NAME function
*** NO, string processing on CHAR-NAME will do
New syntax for CHARACTER type specifier
*** YES
New #\label:registry character name syntax
*** ??? This was already mentioned
New argument to CHARACTERP
*** YES.
-------
∂02-Mar-89 0928 X3J13-mailer forwarding mail from gray
Received: from IBM.COM by SAIL.Stanford.EDU with TCP; 2 Mar 89 09:28:08 PST
Date: Wed, 01 Mar 89 15:59:07 PST
From: Thom Linden <baggins@IBM.com>
To: Common Lisp mailing <x3j13@sail.stanford.edu>
Message-ID: <890301.155907.baggins@almvma>
Subject: forwarding mail from gray
=========================================================================
Received: from dsg.csc.ti.com by ibm.COM on 03/01/89 at 10:29:25 PST
Received: from ti.com by RELAY.CS.NET id aa05395; 28 Feb 89 23:18 EST
Received: by ti.com id AA00500; Tue, 28 Feb 89 22:18:18 CST
Received: from Kelvin by tilde id AA21544; Tue, 28 Feb 89 22:08:43 CST
Message-Id: <2813717283-5615057@Kelvin>
Sender: GRAY%kelvin.csc.ti.com@RELAY.CS.NET
Date: Tue, 28 Feb 89 22:08:03 CST
From: David N Gray <Gray%dsg.csc.ti.com@RELAY.CS.NET>
To: Thom Linden <baggins@IBM.COM>
Cc: CL-Characters@SAIL.STANFORD.EDU, Bartley%mips.csc.ti.com@RELAY.CS.NET,
Waldrum%tilde.csc.ti.com@RELAY.CS.NET
Subject: Re: cs proposal straw vote
In-Reply-To: Msg of Wed, 22 Feb 89 12:08:15 PST from Thom Linden <baggins@IBM.com>
> I would like to take a straw vote on various components of
> the Characters proposal. The primary intent is to resolve the
> actual list of items to be voted upon at the March meeting.
> Let me know if you think some items should be separated or
> combined
...
> Issue: CHAR-FONT-UNUSED-CHAR-BITS-NONPORTABLE
> Problem: CHAR-FONT isn't used, CHAR-BITS isn't portable.
> Proposal:
> Eliminate of font and bit attributes.
> Add rules for an implementation supporting attributes.
> Redefine STRING-CHAR as implementation defined.
> Remove CHAR-FONT-LIMIT
> Remove CHAR-BITS-LIMIT
> Remove INT-CHAR
> Remove CHAR-BITS
> Remove CHAR-FONT
> Remove MAKE-CHAR
> Remove CHAR-CONTROL-BIT
> Remove CHAR-META-BIT
> Remove CHAR-SUPER-BIT
> Remove CHAR-HYPER-BIT
> Remove CHAR-BIT
> Remove SET-CHAR-BIT
Yes, I can accept this.
---
> Issue: CHAR-INT-ONLY-USEFUL-WHEN-ATTRIBUTES-SUPPORTED
> Problem: CHAR-INT behavior is CHAR-CODE unless implementation
> defined attributes are supported.
> Proposal:
> Remove CHAR-INT
I had to stop and think about why this wasn't part of the previous issue.
Perhaps the thought was that a portable way to turn all of a character into
a number (e.g. for a hash code) would be desirable even if only some
implementations support attributes? That sounds like a legitimate
concern, so I vote No.
--
> Issue: CHARACTER-TYPE-RESTRICTIVEC
> Problem: CHARACTER type doesn't allow thin & fat characters.
> Proposal: a
> Define BASE-CHARACTER as a subtype of STRING. a
> Standard characters are a subset of the base
> characters.
> STANDARD-CHAR type is replaced by (CHARACTER :STANDARD)
> Remove the semi-standard characters.
I have been unable to imagine the reason for linking semi-standard
characters with fat characters; these should be separate issues.
Yes to fat characters.
---
No to removing the semi-standard characters. I still have yet to hear a
-- plausible rationale for doing this.
> Issue: STRING-TYPE-RESTRICTIVE
> Problem: STRING type doesn't allow thin & fat strings.
> Proposal: a
> Define STRING as a union type a
> STRING used as a type specifier for object creation
> means (VECTOR CHARACTER)
> All string functions operate as specified on any a
> string object except it is an error to insert
> an extended character into a base string.
> Extend the COERCE function to allow coercion from a
> base string to extended string.
Yes.
---
> Issue: STRING-TYPE-ABBREVIATIONS
> Problem: new types are awkward to name, want abbreviations.
> Proposal: ne
> Add BASE-STRING
> Add GENERAL-STRING
Yes.
---
> Issue: SIMPLE-STRING-TYPE-RESTRICTIVE
> Problem: SIMPLE STRING type doesn't allow thin & fat strings.
> Proposal: a
> Define SIMPLE-STRING as a union type a
> Define SIMPLE-STRING as a type specifier for object
> creation means (SIMPLE-ARRAY CHARACTER (size))
Yes.
---
> Issue: SIMPLE-STRING-TYPE-ABBREVIATIONS
> Problem: new types are awkward to name, want abbreviations.
> Proposal: ne
> Add SIMPLE-BASE-STRING
> Add SIMPLE-GENERAL-STRING
Yes.
---
> Issue: FILE-EXTERNAL-REPRESENTATION
> Problem: can't specify external encoding even when there are lots
> Proposal:
> Add :EXTERNAL-CODED-CHARACTER-FORMAT keyword to OPEN
Yes.
---
> Issue: STRING-BINARY-WIDTH
> Problem: Can't find out how many bytes a string will take when written as
> text
> Proposal:
> Add :EXTERNAL-CODED-STRING-LENGTH function
No; I'm not sure that this has been adequately thought out.
--
> Issue: CHAR-CODE-NON-PORTABLE
> Problem: no way to talk about well-known external coding methods, only
> internal codes
> Proposal:
> Add CHAR-CCS-VALUE function
Yes, although I'm not too happy about the name; "value" doesn't really say
--- much. Why not CHAR-CCS-INDEX ? Or CHAR-EXTERNAL-CODE ? Yes also to
the inverse function.
> Issue: CHARACTER-IDENTIFICATION-NONPORTABLE
> Problem: Can't portably talk about non-standard characters
> Proposal:
> Introduce the concept of Registries
> Standardize on #\registry:id, add all-implemented-registries
> Add *ALL-CHARACTER-REGISTRY-NAMES* variable
> Add FIND-CHAR function
> Add CHAR-LABEL function
> Add CHAR-REGISTRY-NAME function
> New syntax for CHARACTER type specifier
> New #\label:registry character name syntax
> New argument to CHARACTERP
No. I'm not convinced that this approach is feasible or even necessary.
--- There appears to be a great deal of machinery being created solely to
support the premise stated in section 2.2 that all characters need to
be decomposable into one and only one name. I don't see the need for
that.
∂02-Mar-89 0930 X3J13-mailer cs proposal comments
Received: from IBM.COM by SAIL.Stanford.EDU with TCP; 2 Mar 89 09:30:00 PST
Date: Thu, 02 Mar 89 02:27:38 PST
From: Thom Linden <baggins@IBM.com>
To: Common Lisp mailing <x3j13@sail.stanford.edu>
Message-ID: <890302.022738.baggins@almvma>
Subject: cs proposal comments
Just a reminder, please send comments/straw ballots to x3j13 and
not the characters mailing list.
Regards,
Thom
∂02-Mar-89 0929 X3J13-mailer cs proposal comments
Received: from IBM.COM by SAIL.Stanford.EDU with TCP; 2 Mar 89 09:29:33 PST
Date: Thu, 02 Mar 89 02:20:21 PST
From: Thom Linden <baggins@IBM.com>
To: Common Lisp mailing <x3j13@sail.stanford.edu>
Message-ID: <890302.022021.baggins@almvma>
Subject: cs proposal comments
>> But if we decide that "my alpha" _is_ the same as "your alpha", then which
>> of our languages' registry gets to include it? I can see a lot of
>> confusion over characters that are used the same in more than one
>> language.
I don't see the confusion. German, English, Italian, etc. have a large
overlap of characters. One would expect these to all be in a single
registry, eg. Latin. Again, the important factor is that a character
is uniquely named. There is no advantage of one registry over another.
>>
>> I'm not so much concerned with who decides this as with whether this
>> approach is even feasible. The lack of even a "for example" scenario of
>> how this might work leaves me with a lot of doubts about whether it _can_
>> work. Also, it is not apparent why anyone outside the Common Lisp
>> community would have any interest in participating in such a standards
>> effort.
I believe other languages have the same problems as Lisp. For example,
COBOL has standardized names for coded character sets in
their I/O interface. In particular, SC22 wants to address the
international character handling issues across all (prog.)languages.
I'm attending an SC22 ad hoc committee meeting on characters next
week (and will let this forum know what interest I find).
>>
>>
>> Page 7 of the draft dated February 21 says that
>>
>> "The proposed ISO Character Registry Standard is fixed; an
>> implementation may not extend a standard registry's constituent
>> set of characters beyond the standard definition."
>>
>> That says to me that if an implementation is going to add a character,
>> then it can only be added to an implementation-defined registry. What
>> happens then if a new edition of the registry standard includes that
>> character in one of the standard registries? Since a character is not
>> permitted to be a member of more than one registry, that immediately
>> becomes an incompatible change for anyone who has been using that
>> character. Consequently, even extensions by standards revision will be
>> discouraged. That seems quite non-extensible to me.
Nothing prevents the implementation from providing a warning message
and behaving properly for some period of time. Users are encouraged
to use a 'new' standardized name since that name has a portable
meaning.
But, what the statement says to me is that if I use a name in the
standard registry, I have a guarentee that it does not have an
implementation unique meaning. Also, it is impossible for an
implementation to add character names which conflict with any
'new' standardized character.
>>
>>
>> So CHAR< etc. have no portable meaning unless both arguments are standard
>> characters in one of the partial ordering groups on page 237 of CLtL?
>> If you are going to have a Greek alphabet that is required to be disjoint
>> from the Latin alphabet anyway, wouldn't you want to know that the Greek
>> letters could be sorted in the expected order?
Well, I don't know the 'expected' order for Greek. In general, the
expected order is culturally dependent and using CHAR< as a sorting
mechanism is not sufficient. If we take the Latin registry
as including accented characters, there are different orderings
depending on whether you are in a Spanish, German, Danish, etc.
context. For Common Lisp to impose a single one is certainly
be wrong. In general, I don't think the ordering of individual
characters by CHAR< is as important as standardized definitions
of ordering strings for culturally expected results (such as, dictionary
ordering).
>>
>> > >> Page 25 section A.4.5 doesn't specify the syntax of a registry name; did
>> > >> you intend it to be a string?
>> >
>> > These have been changed to be symbols.
>>
>> Fine, but it appears that the new draft still doesn't say that.
>>
>> > >> Page 29 - *ALL-REGISTER-NAMES* -- a list of strings?
>> >
>> > Now a list of symbols.
>>
>> Again, the document doesn't say that.
p24,26,28,33: Right. I actually said they are 'names'. This may be
too general and can be changed to 'keyword symbols' without any
difficulty.
>>
>> That sounds good, but don't we also need the inverse function, to
>> construct a character object given a CCS and index?
>>
>> >
>> > That really depends on the definition of a conforming program. Is
>> > this defined yet?
>>
>> Never mind that; the real question is why do you want the standard to not
>> specify the meaning of tabs and form-feeds in source files?
>>
I don't have my CLtL with me but I don't think a meaning is given
to the semi-standard characters (unless we consider them self defining?)
>>
>> In the character table on page 17, do the "graphic labels" have any
>> significance? I don't see that the document uses them or requires them to
>> be used in any way. If not, that column should be deleted. I hope that
>> this is _not_ an example of what character names in a registry would look
>> like.
It is simply an assist in uniquely identifing each standard character
since glyphs can be ambigious.
>>
>> Your message of January 24 said you were going to:
>>
>> -- modify char-name, name-char, and #\name to accept character
>> names of the form 'registry:label'
>>
>> but I can't see that this draft does that. In particular, it is not at
>> all apparent how this is supposed to affect CHAR-NAME. Should I expect
>> (CHAR-NAME #\NEWLINE) to return "NEWLINE" or something like
>> "CONTROL:NEWLINE"? Are #\SPACE and #\NEWLINE to be the only characters
>> that can be referenced by a name that does not included a registry prefix?
>> Since all characters will have a label in some registry, does that mean
>> that CHAR-NAME will never return NIL anymore?
The form label:registry is given on p38 where for #\, "In particular,
an implementation may support names of the form label:registry."
It could do with repeating on p35 (name-char, char-name).
If a 'control' registry is standardized, I would expect these names
to replace (eventually) the various names now used. Some revision
of the Common Lisp standard might deprecate the current forms once
(if) a Character Registry standard is adopted.
∂02-Mar-89 1000 X3J13-mailer Re: cs proposal and straw vote
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 2 Mar 89 09:59:49 PST
Received: from defun.utah.edu by cs.utah.edu (5.61/utah-2.1-cs)
id AA03605; Thu, 2 Mar 89 10:57:45 -0700
Received: by defun.utah.edu (5.61/utah-2.0-leaf)
id AA03241; Thu, 2 Mar 89 10:57:42 -0700
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8903021757.AA03241@defun.utah.edu>
Date: Thu, 2 Mar 89 10:57:40 MST
Subject: Re: cs proposal and straw vote
To: baggins@ibm.com
Cc: x3j13@sail.stanford.edu
In-Reply-To: Dan L. Pierson <pierson@mist.encore.com>, Wed, 01 Mar 89 15:49:59 EST
I pretty much agree with the points Dan raised. I generally support
(with varying degrees of enthusiasm) all of the subissues except the
last one, dealing with character registries.
My major complaints at this point are:
- I also don't feel that I could vote for the document in its current
form. At the very least, there should be some kind of cross-reference
indicating which parts of the document correspond to which of the
subissues you've identified, so that we know exactly what language
we are voting on for each of them. And, I would still like to see
a rationale presented for each of the subissues.
- I really believe it would be premature to standardize on the idea of
character registries at this time. I don't think that the idea is
inherently bad and awful, but given that the specifics of the proposal
do not appear to have stabilized and nobody has implemented it yet, I
think we would be running an unacceptable risk of standardizing the
wrong thing.
A few other nits:
I'm confused about what happens to the STRING-CHAR type. There is a
definition for it on page 22 but on the bottom of page 23 it is
removed from the table of standard type specifiers. And, which
subissue would removing it fall under? It's not mentioned in any of
the ones you list.
On page 28, it says: "There may be unassigned codes between 0 and
char-code-limit which are not legal arguments to code-char." Don't
you really mean to say "... for which code-char returns NIL"?
Why do we need CHAR-CODE-LIMIT, CODE-CHAR, and CHAR-CODE anyway?
While bits and fonts were in the standard, these were useful for
things like creating a character with the same code but different bits
or font attributes, but now that's out. If we want a function to use
for hashing characters, that's what CHAR-INT is for. The only other
use I can think of is supporting iteration over characters, and it
seems like this could be extremely inefficient in implementations that
support user-defined character sets. (In such a case, I would imagine
that one would make CHAR-CODE-LIMIT correspond to the limit imposed by
the representation, perhaps the same as MOST-POSITIVE-FIXNUM, but in
actual practice, very few of those codes would have corresponding
characters.) I agree with Dan that we'd be better off having a
specialized iterator.
Should we consider extending MAKE-STRING-OUTPUT-STREAM to take an
:ELEMENT-TYPE keyword?
-Sandra
-------
∂02-Mar-89 1151 X3J13-mailer Re: cs proposal comments
Received: from ti.com by SAIL.Stanford.EDU with TCP; 2 Mar 89 11:51:39 PST
Received: by ti.com id AA08145; Thu, 2 Mar 89 13:50:34 CST
Received: from Kelvin by tilde id AA05068; Thu, 2 Mar 89 13:39:29 CST
Message-Id: <2813859524-5211323@Kelvin>
Sender: GRAY@Kelvin.csc.ti.com
Date: Thu, 2 Mar 89 13:38:44 CST
From: David N Gray <Gray@DSG.csc.ti.com>
To: Thom Linden <baggins@IBM.com>
Cc: x3j13@sail.stanford.edu
Subject: Re: cs proposal comments
In-Reply-To: Msg of Thu, 02 Mar 89 02:20:21 PST from Thom Linden <baggins@IBM.com>
> >> Never mind that; the real question is why do you want the standard to not
> >> specify the meaning of tabs and form-feeds in source files?
> >>
> I don't have my CLtL with me but I don't think a meaning is given
> to the semi-standard characters (unless we consider them self defining?)
I'm talking about page 336 of CLtL which specifies that the reader treats
#\TAB and #\PAGE as whitespace. Section A.22.1.1 of the February 21 document
specifies deleting the mention of these.
> The form label:registry is given on p38 where for #\, "In particular,
> an implementation may support names of the form label:registry."
> It could do with repeating on p35 (name-char, char-name).
"_may_ support"? It seems like either this should be part of the standard or
not. What does CHAR-NAME return for non-standard characters if the
implementation doesn't support this? If you are going to permit referencing
names that way, then what do we need registries for? Also, the sentence
quoted is in the context of non-graphic characters. What about names for
non-standard graphic characters? Do standard graphic characters have names?
∂02-Mar-89 1421 emma@csli.Stanford.EDU CSLI Calendar, 2 March, 4:18
Received: from csli.Stanford.EDU by SAIL.Stanford.EDU with TCP; 2 Mar 89 14:21:33 PST
Received: by csli.Stanford.EDU (4.0/inc-1.0)
id AA17358; Thu, 2 Mar 89 13:43:21 PST
Date: Thu, 2 Mar 89 13:43:21 PST
From: emma@csli.Stanford.EDU (Emma Pease)
Message-Id: <8903022143.AA17358@csli.Stanford.EDU>
To: friends@csli.Stanford.EDU
Subject: CSLI Calendar, 2 March, 4:18
C S L I C A L E N D A R O F P U B L I C E V E N T S
_____________________________________________________________________________
2 March 1989 Stanford Vol. 4, No. 18
_____________________________________________________________________________
A weekly publication of The Center for the Study of Language and
Information, Ventura Hall, Stanford University, Stanford, CA 94305
____________
SYMBOLIC SYSTEMS FORUM
A Computational Psychology Approach to Commonsense Perception
Jeffry Shrager
Friday, 3 March, 3:15
Room 60:61N
Commonsense Perception is a generalized version of what Dretske has
called "epistemic seeing"---that is, knowledge-based interpretation of
(perceptual) experience. In this talk I will outline a psychological
approach to the study of commonsense perception in incremental concept
learning. My goal is a computational framework and model whose basic
processing cycle is knowledge revision by commonsense perception, and
which subsumes rule-based inference, perceptual reasoning, and most
inductive and instructed learning tasks.
____________
LINGUISTICS DEPARTMENT COLLOQUIUM
Language Acquisition: "A Creolist's View"
Lawrence Carrington
University of the West Indies and Stanford
Friday, 3 March, 3:15
Cordura Conference Room
____________
CSLI SEMINAR
Indexicality and Quantified Modal Logic
Harry Deutsch
Illinois State University
Tuesday, 7 March, 4:00
Cordura Conference Room
Relations between recent philosophy of language and the semantics of
modality (possible worlds semantics) have not been good. I attempt to
mediate the dispute by formulating quantified modal logic (QML) so as
to incorporate some insights of the "new theory of reference" (NTR).
This sheds some new light on both QML and the NTR.
____________
SYMBOLIC SYSTEMS FORUM
Ontology and Computers
Ruben Kleiman
Apple Intelligent Agents Group
Friday, 10 March, 3:15
Room 60:61N
This talk will be about artificial intelligence and knowledge
representation, focusing on how to encode knowledge into a computer.
On one hand, Winograd, Flores, and Putnam have advocated a
phenomenological view that abandons the standard mentalist position.
On the other hand, there are also many people (Hayes, McCarthy,
Dennett, and most AI workers) who keep the mentalist position. Dr.
Kleiman will attempt to reconcile these two philosophical positions.
____________
LINGUISTICS DEPARTMENT COLLOQUIUM
A Union Analysis of Noun Incorporation
Donna Gerdts, SUNY at Buffalo
Friday, 10 March, 3:15
Cordura Conference Room
____________
∂02-Mar-89 1502 chandler@polya.Stanford.EDU Test
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 2 Mar 89 15:02:47 PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA01473; Thu, 2 Mar 89 14:59:17 -0800
Date: Thu, 2 Mar 1989 14:58:18 PST
From: "Joyce R. Chandler" <chandler@polya.stanford.edu>
To: retreat@polya.Stanford.EDU
Subject: Test
Message-Id: <CMM.0.87.604882698.chandler@polya.stanford.edu>
∂02-Mar-89 1510 chandler@polya.Stanford.EDU Another test
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 2 Mar 89 15:10:21 PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA02098; Thu, 2 Mar 89 15:07:44 -0800
Date: Thu, 2 Mar 1989 15:07:06 PST
From: "Joyce R. Chandler" <chandler@polya.stanford.edu>
To: retreat@polya.Stanford.EDU
Subject: Another test
Message-Id: <CMM.0.87.604883226.chandler@polya.stanford.edu>
∂02-Mar-89 1632 X3J13-mailer minor comments on the character proposal
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 2 Mar 89 16:31:53 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 549744; Thu 2-Mar-89 19:29:32 EST
Date: Thu, 2 Mar 89 19:29 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: minor comments on the character proposal
To: Thom Linden <baggins@IBM.com>
cc: x3j13@SAIL.STANFORD.EDU
In-Reply-To: <890222.120815.baggins@almvma>
Message-ID: <19890303002938.9.MOON@EUPHRATES.SCRC.Symbolics.COM>
These comments are not an official response to your request for a vote.
Here are some comments on the character proposal version of 21 Feb 89.
I believe these are all merely editorial, but if they are matters of
disagreement I'd like to know.
p.29, describing character attributes: It needs to be clarified that
these notes apply to all implementation-defined character attributes,
not just to attributes that might be provided for compatibility with
the earlier version of Common Lisp.
Some of these notes have not been consistently reflected elsewhere in
the proposal, for example, page 31 seems to say that the only difference
between char-equal and char-= involves alphabetic case, whereas page 29
says that char-= compares all attributes but char-equal compares an
implementation-defined set of attributes (page 29 is correct).
Similarly, where p.31 says "if the codes of two characters differ, then
they are different", it should instead say "if the codes or
implementation-defined attributes (if any) of two characters differ,
then they are different."
Two of the notes on p.29 refer to char-int and int-char, which you are
proposing to remove, so those notes should be removed.
p.33, 35: Under find-char, char-registry-name, and char-label you
indicate that registry names and labels are strings. In fact they
are symbols now, these places need to be updated.
p.38: Where it says "an implementation may support names of the
form label:registry", I believe this to be a typo for "registry:label".
The colon is evidently being used by analogy to packages, so the
registry name should precede the label, just as the package name
precedes the symbol name.
∂02-Mar-89 1729 @polya.Stanford.EDU:tah@linz MTC Seminar
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 2 Mar 89 17:29:28 PST
Received: from linz.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA11953; Thu, 2 Mar 89 17:25:15 -0800
Received: by linz.stanford.edu (5.59/25-eef) id AA07593; Thu, 2 Mar 89 17:24:36 PDT
Message-Id: <8903030124.AA07593@linz.stanford.edu>
To: lop@polya
Subject: MTC Seminar
Reply-To: tah@cs.stanford.edu
Date: 02 Mar 89 17:24:33 PST (Thu)
From: Tom Henzinger <tah@linz>
There will be no MTC seminar tomorrow (March 3). -t
∂02-Mar-89 1819 @Score.Stanford.EDU:jle@Orange.stanford.edu CS Colloquium
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 2 Mar 89 18:19:37 PST
Received: from Orange.stanford.edu by SCORE.STANFORD.EDU with TCP; Thu 2 Mar 89 18:10:13-PST
Received: by Orange.stanford.edu (5.59/25-eef) id AA04629; Thu, 2 Mar 89 18:10:07 PDT
Date: Thu, 2 Mar 89 18:10:07 PDT
From: Jeffrey Eppinger <jle@Orange.stanford.edu>
Message-Id: <8903030210.AA04629@Orange.stanford.edu>
To: csd-list@score
Subject: CS Colloquium
The next Computer Science Colloquium will be on March 14th:
The Computer Productivity Paradox
Michael L. Dertouzos
Professor and Director
MIT Laboratory for Computer Science
Computer Science Colloquium
Tuesday, March 14, 1989, 4:15pm
Jordan Hall (Building 420), Room 040
Stanford University
(Refreshments will be provided)
Abstract
The first half century of the computer field has been largely supply side
driven by a wondrous new technology that is still evolving and continues
to fuel our imagination. One side of the paradox lies in the apparent
lack of aggregate effect (either up or down) of computers on conventional
measures of human productivity. The other side of the paradox lies in the
indifference of makers and users of computer hardware and software about
the effect of such systems upon human productivity. The talk will examine
how computers might help current productivity weaknesses especially of the
white collar kind, how they might open new productive endeavors, how they
should not be misused and how information might be valued so that we can
develop effective measures of information-processing productivity. The
mission ahead is historic--to apply computer science and information
technology across the world's entire economic front so as to increase
human productivity. The associated question is equally ominous:
Can it be done?
∂02-Mar-89 1831 @Score.Stanford.EDU:jle@Orange.stanford.edu CS Colloquium
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 2 Mar 89 18:19:37 PST
Received: from Orange.stanford.edu by SCORE.STANFORD.EDU with TCP; Thu 2 Mar 89 18:10:13-PST
Received: by Orange.stanford.edu (5.59/25-eef) id AA04629; Thu, 2 Mar 89 18:10:07 PDT
Date: Thu, 2 Mar 89 18:10:07 PDT
From: Jeffrey Eppinger <jle@Orange.stanford.edu>
Message-Id: <8903030210.AA04629@Orange.stanford.edu>
To: csd-list@score
Subject: CS Colloquium
The next Computer Science Colloquium will be on March 14th:
The Computer Productivity Paradox
Michael L. Dertouzos
Professor and Director
MIT Laboratory for Computer Science
Computer Science Colloquium
Tuesday, March 14, 1989, 4:15pm
Jordan Hall (Building 420), Room 040
Stanford University
(Refreshments will be provided)
Abstract
The first half century of the computer field has been largely supply side
driven by a wondrous new technology that is still evolving and continues
to fuel our imagination. One side of the paradox lies in the apparent
lack of aggregate effect (either up or down) of computers on conventional
measures of human productivity. The other side of the paradox lies in the
indifference of makers and users of computer hardware and software about
the effect of such systems upon human productivity. The talk will examine
how computers might help current productivity weaknesses especially of the
white collar kind, how they might open new productive endeavors, how they
should not be misused and how information might be valued so that we can
develop effective measures of information-processing productivity. The
mission ahead is historic--to apply computer science and information
technology across the world's entire economic front so as to increase
human productivity. The associated question is equally ominous:
Can it be done?
∂02-Mar-89 1909 X3J13-mailer cs proposal and straw vote
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 2 Mar 89 19:09:09 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 549840; Thu 2-Mar-89 22:06:27 EST
Date: Thu, 2 Mar 89 22:06 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: cs proposal and straw vote
To: Dan L. Pierson <pierson@mist.encore.com>
cc: baggins@ibm.com, x3j13@SAIL.STANFORD.EDU
In-Reply-To: <8903012050.AA11442@mist.>
Message-ID: <19890303030636.7.MOON@EUPHRATES.SCRC.Symbolics.COM>
Date: Wed, 01 Mar 89 15:49:59 EST
From: Dan L. Pierson <pierson@mist.encore.com>
Issue: CHAR-INT-ONLY-USEFUL-WHEN-ATTRIBUTES-SUPPORTED
Problem: CHAR-INT behavior is CHAR-CODE unless implementation
defined attributes are supported.
Proposal:
Remove CHAR-INT
IF: Moon agrees that this is sufficient for hashing (or I'm convinced that
he's wrong :-)).
This is actually an interesting issue. I was going to say that CHAR-INT
is not needed, because you can use SXHASH. After all, in any reasonable
implementation SXHASH of a character would just return the CHAR-INT, and
the only difference would be the extra cost of a type dispatch, which
might even be compiled out in some cases. Then I tried the most
reasonable implementation I know and found that SXHASH and CHAR-INT did
not return the same value. So then I did what I should have done at the
beginning, and read the documentation of SXHASH. SXHASH doesn't just
return any useful hash code, it returns one that remains constant for
all time, within "the same" implementation. This means that in any
implementation that dynamically assigns numeric encodings of any
character attribute, SXHASH cannot be the same as CHAR-INT. Genera, for
example, allows user-defined character registries and user-defined
character style attributes, and thus dynamically assigns the numeric
encoding of both character code and character style.
There are many applications of hashing for which the perpetual equality
properties of SXHASH are unwanted, and the associated efficiency cost
is undesired.
So now my opinion is that CHAR-INT should be retained, but INT-CHAR
and its shadow in the COERCE function should be removed.
What do STRING-LESSP, etc. mean for non-standard-character strings?
Isn't STRING-LESSP defined in terms of CHAR-LESSP? CHAR-LESSP has "the
results are unspecified" for two characters in different registries, I
assume, which means that STRING-LESSP of two strings of extended
characters in the same registry is perfectly well defined, and of
characters in different registries returns either true or false, but is
harmless.
∂02-Mar-89 1929 X3J13-mailer answer to request for comments on comments on comments on characters
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 2 Mar 89 19:28:57 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 549853; Thu 2-Mar-89 22:26:02 EST
Date: Thu, 2 Mar 89 22:26 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: answer to request for comments on comments on comments on characters
To: Thom Linden <baggins@IBM.com>
cc: Common Lisp mailing <x3j13@SAIL.STANFORD.EDU>
In-Reply-To: <890222.100432.baggins@almvma>
Message-ID: <19890303032620.8.MOON@EUPHRATES.SCRC.Symbolics.COM>
In your comments on my comments on the 1 Jan 89 character proposal,
you asked some questions. Here are my answers. These are personal
answers rather than Symbolics' official position.
Date: Wed, 22 Feb 89 10:04:32 PST
From: Thom Linden <baggins@IBM.com>
>> From: "David A. Moon" <Moon@SCRC-STONY-BROOK.ARPA>
>> Subject: Comments on the Character proposal dated January 1, 1989
>>
>> The default for :ELEMENT-TYPE has two viable choices that I can see
>> both and let people vote:
>>
>> (1) CHARACTER. This matches the behavior of MAKE-STRING and friends,
>> (2) The most natural type for the particular pathname being opened.
>> The relationship of option 2 to :ELEMENT-TYPE :DEFAULT (a feature that
>> already exists in Common Lisp) needs to be clarified. Perhaps they
>> are the same.
The same? I don't understand. For example, I can imagine the
element-type default as base-character and the external format
defaulted to either an ASCII or EBCDIC encoding.
I think you misunderstood. I was suggesting that perhaps the default
value for the :ELEMENT-TYPE option to OPEN should be the symbol
:DEFAULT. This doesn't relate to the external coding format as far as I
can see, except for whatever niceness we see in having the default
value for both :ELEMENT-TYPE and :EXTERNAL-CODED-CHARACTER-FORMAT be the
symbol :DEFAULT.
I see that in the 21 Feb 89 proposal you have made the default value for
the :ELEMENT-TYPE option to OPEN be implementation dependent, but not
:DEFAULT. In fact they are different, because :DEFAULT can open in
either a character type or an integer type, but (the unnamed) default
can only open in a character type. I can live with what you have
proposed, although I still believe that requiring :ELEMENT-TYPE to
default to CHARACTER might be better, and I'm a little concerned about
having a default for which there is no name within the language. I'd
also like to hear opinions on whether we need two different ways to say
"the most natural type for the particular pathname being opened", with
one of them restricted to subtypes of CHARACTER and the other
unrestricted.
More importantly, though, I think people should be given the choice
of voting between the two options mentioned above (as well as any other
options that garner some support, if there are any). As it stands
the :ELEMENT-TYPE option to OPEN isn't in the straw ballot at all,
there's just a change in the back of the proposal.
>> Also the following promise from 14 November did not show up in the report:
>>
>> >> There should be a name for the "natural" encoding and there should be a
>> >> specification of the properties of the natural encoding that a programmer
>> >> can rely on. Suggestions for the name include :BASE, :NATURAL, and
>> >> :INTERCHANGE. The definition probably involves the concept of data
>> >> interchange with non-Lisp programs on the same system.
>>
>> This will be added to the revision.
I lied. No one came up with the 'properties' of such an encoding.
Do you have some text to suggest?
I'm not sure if your :DEFAULT for :EXTERNAL-CODED-CHARACTER-FORMAT is
intended to be "natural" as well as "default", or not. I'm afraid
I haven't been able to come up with a good description of what it
means to be "natural", though. Perhaps I'm familiar with too many
oddball systems, which makes me more scared of trying to define the
concept than would be someone who only knew Unix. I think we can
safely drop this issue without much harm to the language.
>> No particular page -- We agree with the deprecation or deletion of the two
>> particular character attributes defined by CLtL, but not with the
>> deprecation of the whole concept of character attributes. In fact on page
>> 20 you say "characters are uniquely distinguished by their codes," which
>> makes it impossible to have character attributes at all. The language must
>> define how conforming programs should be written so that they will work
>> both in implementations with character attributes and in implementations
>> without them. For example, the value of (eql x (code-char (char-code x)))
>> is unspecified. Another thing that needs to be said is that the exact
>> character operations (char=, string=, etc.) respect all character
>> attributes, while the inexact character operations (char-equal,
>> string-equal, etc.) respect or ignore each character attribute in an
>> implementation-defined but consistent fashion.
This has improved in the 21 Feb 89 version, but I think more a explicit
statement is still required. You are welcome to borrow the language
("exact", "inexact") that I used just above.
Some of what you say on
>> page 44 about attributes in general needs to be part of the spec, not
>> deprecated. I would retain everything on that page except for INT-CHAR and
>> the last bullet (referring to bits and fonts), and I would add a remark
>> that FIND-SYMBOL and INTERN respect character attributes. If you want,
>> perhaps I or someone else at Symbolics can provide exact text for what
>> to say about character attributes that you could insert into your report.
I moved the attribute list previously in Appendix B back into the
description of characters. Let me know what text you would like
to see for FIND-SYMBOL and INTERN and I'll add it to the list.
After "It is implementation dependent whether attributes are removed
from symbol names by READ" (and by the way, in this and the preceding
bullet I believe "whether" shoudl be changed to "which", since an
implementation with several character attributes might have good reason
to remove some and retain others), I would add "The functions FIND-SYMBOL
and INTERN do not remove character attributes."
∂02-Mar-89 1941 CL-Characters-mailer Really about TYPEP failures: Comments on the Character proposal dated January 1, 1989
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 2 Mar 89 19:41:42 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via INTERNET with SMTP id 549857; 2 Mar 89 22:39:01 EST
Date: Thu, 2 Mar 89 22:39 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: Really about TYPEP failures: Comments on the Character proposal dated January 1, 1989
To: Robert W. Kerns <RWK@FUJI.ILA.Dialnet.Symbolics.COM>
cc: Jon L White <jonl@lucid.com>, Baggins@IBM.COM, CL-Characters@SAIL.STANFORD.EDU,
X3J13@SAIL.STANFORD.EDU, Common-Lisp-Implementors@Symbolics.COM, KMP@Symbolics.COM,
Palter@Symbolics.COM
In-Reply-To: <19890204142708.2.RWK@CALVARY.ILA.Dialnet.Symbolics.COM>
Supersedes: <19890303023922.6.MOON@EUPHRATES.SCRC.Symbolics.COM>
Comments: Removed % signs
Message-ID: <19890303033902.9.MOON@EUPHRATES.SCRC.Symbolics.COM>
Date: Sat, 4 Feb 89 09:27 EST
From: Robert W. Kerns <RWK@FUJI.ILA.Dialnet.Symbolics.COM>
Legitimate operations on BASE-CHARACTER do not
produce characters in (AND CHARACTER (NOT BASE-CHARACTER)).
I'm not sure which programs written using symbols in the LISP package
are "legitimate operations" and which are not. However, I didn't see
anything in the 21 Feb 89 proposal that says that CHAR-UPCASE of
a BASE-CHARACTER is necessarily a BASE-CHARACTER, for example.
That doesn't sound unreasonable, though; should it be added?
∂02-Mar-89 2119 LOGMTC-mailer Logic seminar
Received: from csli.Stanford.EDU by SAIL.Stanford.EDU with TCP; 2 Mar 89 21:19:12 PST
Received: by csli.Stanford.EDU (4.0/inc-1.0)
id AA01637; Thu, 2 Mar 89 21:17:04 PST
Date: Thu 2 Mar 89 21:17:03-PST
From: Sol Feferman <SF@CSLI.Stanford.EDU>
Subject: Logic seminar
To: Logic@csli.Stanford.EDU
Message-Id: <604905423.0.SF@CSLI.Stanford.EDU>
Mail-System-Version: <SUN-MM(242)+TOPSLIB(128)@CSLI.Stanford.EDU>
Logic Seminar
Speaker: Prof. Yuri Gurevich, Univ. of Michigan, visiting Stanford and IBM
Title: Average case computational complexity
Time: Tuesday, March 7, 4:15-5:30 PM
Place: Room 381-T, Math Corner, Stanford University
Abstract:
One way to cope with an NP hard problem is to consider a randomized
version of the problem, i.e., a problem together with a probability
distribution on instances. Even if the original problem is NP hard,
it may happen that the randomized problem is solvable in expected
polynomial time. In 1984, Leonid Levin generalized NP completeness
theory to the case of randomized NP problems and constructed a fairly
natural problem complete for Randomized NP. Then the speaker found
additional complete problems and caused certain revision of the
theory. We will explain the basic definitions and survey the current
state of the theory.
-------
∂03-Mar-89 0004 X3J13-mailer cs comments
Received: from IBM.COM by SAIL.Stanford.EDU with TCP; 3 Mar 89 00:03:57 PST
Date: Thu, 02 Mar 89 17:19:25 PST
From: Thom Linden <baggins@IBM.com>
To: Common Lisp mailing <x3j13@sail.stanford.edu>
Message-ID: <890302.171925.baggins@almvma>
Subject: cs comments
>> From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
>> Subject: minor comments on the character proposal
>>
>> These comments are not an official response to your request for a vote.
>>
>> Here are some comments on the character proposal version of 21 Feb 89.
>> I believe these are all merely editorial, but if they are matters of
>> disagreement I'd like to know.
>>
>> p.29, describing character attributes: It needs to be clarified that
>> these notes apply to all implementation-defined character attributes,
>> not just to attributes that might be provided for compatibility with
>> the earlier version of Common Lisp.
Ok.
>>
>> Some of these notes have not been consistently reflected elsewhere in
>> the proposal, for example, page 31 seems to say that the only difference
>> between char-equal and char-= involves alphabetic case, whereas page 29
>> says that char-= compares all attributes but char-equal compares an
>> implementation-defined set of attributes (page 29 is correct).
>> Similarly, where p.31 says "if the codes of two characters differ, then
>> they are different", it should instead say "if the codes or
>> implementation-defined attributes (if any) of two characters differ,
>> then they are different."
The intent was that p29 defined all the modified behaviors when
implementation-defined attributes were supported. I could repeat these
notes (through modified text) at each of the referenced locations or
make the intent of p29 stronger. Which do you feel is clearer?
>>
>> Two of the notes on p.29 refer to char-int and int-char, which you are
>> proposing to remove, so those notes should be removed.
Correct.
>>
>> p.33, 35: Under find-char, char-registry-name, and char-label you
>> indicate that registry names and labels are strings. In fact they
>> are symbols now, these places need to be updated.
Right.
>>
>> p.38: Where it says "an implementation may support names of the
>> form label:registry", I believe this to be a typo for "registry:label".
>> The colon is evidently being used by analogy to packages, so the
>> registry name should precede the label, just as the package name
>> precedes the symbol name.
>>
Ok.
∂03-Mar-89 0726 @Score.Stanford.EDU:tom@polya.Stanford.EDU NeXT Machine moving
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 3 Mar 89 07:26:54 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Fri 3 Mar 89 07:24:13-PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA01847; Fri, 3 Mar 89 07:24:14 -0800
Date: Fri, 3 Mar 89 07:24:14 -0800
From: Tom Dienstbier <tom@polya.Stanford.EDU>
Message-Id: <8903031524.AA01847@polya.Stanford.EDU>
To: CSD@polya.Stanford.EDU, Faculty@polya.Stanford.EDU
Subject: NeXT Machine moving
The NeXT machine that was sitting outside James Wilsons old office
has been moved to downstairs. It will be set up in room 030 as soon as we
can figure out how to secure it(not obvious on how to chain it down).
We are planning on hooking it up to the MJH network to make it a more
functional machine.
Tom Dienstbier
∂03-Mar-89 0913 X3J13-mailer cs comments
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 3 Mar 89 09:13:20 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 550140; Fri 3-Mar-89 12:10:42 EST
Date: Fri, 3 Mar 89 12:10 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: cs comments
To: Thom Linden <baggins@IBM.com>
cc: Common Lisp mailing <x3j13@SAIL.STANFORD.EDU>
In-Reply-To: <890302.171925.baggins@almvma>
Message-ID: <19890303171050.3.MOON@EUPHRATES.SCRC.Symbolics.COM>
Date: Thu, 02 Mar 89 17:19:25 PST
From: Thom Linden <baggins@IBM.com>
>> From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
>> Subject: minor comments on the character proposal
>>
>> Some of these notes have not been consistently reflected elsewhere in
>> the proposal, for example, page 31 seems to say that the only difference
>> between char-equal and char-= involves alphabetic case, whereas page 29
>> says that char-= compares all attributes but char-equal compares an
>> implementation-defined set of attributes (page 29 is correct).
>> Similarly, where p.31 says "if the codes of two characters differ, then
>> they are different", it should instead say "if the codes or
>> implementation-defined attributes (if any) of two characters differ,
>> then they are different."
The intent was that p29 defined all the modified behaviors when
implementation-defined attributes were supported. I could repeat these
notes (through modified text) at each of the referenced locations or
make the intent of p29 stronger. Which do you feel is clearer?
I feel strongly that in the eventual language standard, it will not be
acceptable to have two sections that speak inconsistently about the same
thing, with the reader told that one section takes precedence over the
other. Thus in the eventual document, this kind of information must be
repeated (at least by reference) at each occurrence. For example, you
can't say in one place "char-equal is the same as char-= except it ignores
alphabetic case" and then say in another place "the other description
of char-equal was simplified for your comfort and convenience, the real
description is char-equal is the same as char-= except it ignores
alphabetic case and some implementation-defined character attributes."
I'm not sure what this says about your document, which is so far from
being in the form of the eventual language standard. It is very
difficult to know whether we are voting on chapters 1 and 2 of the
document, on appendix A of the document, or on the abbreviated "cleanup
issues" in your straw poll. If we're not voting on Appendix A there
is little advantage in spending time making it self-consistent.
Some observers may be wondering why I want implementation-defined
attributes to be discussed in the standard, instead of merely being
defined by the implementations. The issue is to make it possible to
write programs that are both conforming and portable among
implementations with varying implementation-defined attributes, without
the programmer first having to study and compare the documentation of
all the implementations. In other words, the Common Lisp language
standard should define the framework for implementation-defined
character attributes, and the individual implementations should just
fill in that framework. If the language didn't mention the possible
existence of implementation-defined character attributes, it would
be too easy to write a program that at first seemed conforming, but
in fact would not behave as desired on an implementation with
character attributes.
∂03-Mar-89 1006 X3J13-mailer Issue: ERROR-TERMINOLOGY
Received: from lucid.com by SAIL.Stanford.EDU with TCP; 3 Mar 89 10:06:46 PST
Received: from challenger ([192.9.200.17]) by heavens-gate.lucid.com id AA03990g; Fri, 3 Mar 89 10:00:10 PST
Received: by challenger id AA20493g; Fri, 3 Mar 89 09:55:26 PST
Date: Fri, 3 Mar 89 09:55:26 PST
From: Richard P. Gabriel <rpg@lucid.com>
Message-Id: <8903031755.AA20493@challenger>
To: x3j13@sail.stanford.edu
Subject: Issue: ERROR-TERMINOLOGY
I looked at the error terminology section as if I were the editor of
the specification, and I made some further changes. I had made an
earlier pass over the material that was intended to tighten it up, but
one can almost always continue to improve things. I showed this draft
to Moon and he said ``I am entirely happy with your proposed rewording
of the error terminology.''
The remainder of this message contains the proposed rewording:
Issue: ERROR-TERMINOLOGY
References: Chapter 5, Section 5.1, Working draft of the standard
CLOS Chapter 1
CLtL Chapter 1, Section 1.2.4
Condition System, Version 18
Category: Clarification
Edit history: 27-DEC-88, Version 1 by Chapman
31-JAN-89, Version 2 by Chapman
6-FEB-89, Version 3 by Chapman, RPG and Barmar comments included
8-FEB-89, Version 4 by Chapman, added more to Current Practice
21-FEB-89, Version 5 by Chapman, added van Roggen, RPG comments
3-MAR-89, Version 6 by Gabriel, rewrite prompted by Moon
Problem Description:
In CLtL, CLOS and the Condition System, similar but slightly
different language is used to describe
non-normal actions by CL operators. The X3J13 committee needs to
agree on a standard set of terms and their meanings.
Proposal (ERROR-TERMINOLOGY:STANDARD TERMS)
TERM MEANING
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
CONFORMING CODE (*) Code that adheres to the following requirements:
(1) Conforming code shall not use any constructions
that are prohibited by the standard.
(2) Conforming code shall not depend on extensions
included in an implementation.
SAFE CODE (*) Code processed with the SAFETY optimization at its
highest setting. SAFETY is a lexical property of code.
UNSAFE CODE (*) Code processed with lower safety levels.
Note: Unsafe code is not necesarily code that does
not do error checking: Implementations are
permitted to treat all code as safe code all the time.
IS SIGNALLED An error is signalled in both safe and unsafe code.
Conforming code may rely on the fact that the error
will be signalled in both safe and unsafe code.
Every implementation is required to detect the error
in both safe and unsafe code. For example, "an error
is signalled if UNEXPORT is given a symbol not
accessible in the current package."
SHOULD BE SIGNALLED An error will be signalled in safe code, and an error
might be signalled in unsafe code.
Every implementation is required to detect the error
at least in safe code. When the error is not
signalled, the "consequences are undefined" (see
below). For example, "an error should be signalled
if ENDP is given a non-list argument."
CONSEQUENCES ARE UNSPECIFIED The consequences are unpredictable but harmless.
Implementations are permitted to specify the
consequences of this situation. No conforming code may
depend on the results or effects of this situation,
and all conforming code is required to treat the
results and effects of this situation as unpredictable
but harmless. For example, ``the consequences of the
garbage collector when invoked are unspecified.''
CONSEQUENCES ARE UNDEFINED The consequences are unpredictable. The
consequences may range from harmless to fatal. No
conforming code can depend on the results or
effects. Conforming code must treat the results and
effects as unpredictable. In places where the
words "must", "must not" or "may not" are used,
then "the consequences are undefined" if the stated
requirement is not met, and no specific consequence
is explicitly stated. For example: "Once a name
has been declared by DEFCONSTANT to be constant,
any further assignment or binding of that special
variable has undefined consequences."
RETURN VALUES ARE UNSPECIFIED Only the number and nature of the return values
of a construct are not well specified but any
side-effect and transfer-of-control behavior is well
specified. For example, if the return values of some
function F are unspecified, then an expression such as
(length (list (F))) is still well-specified because it
does not rely on any particular aspect of the value or
values returned by F.
IMPLEMENTATIONS MAY BE EXTENDED An implementation is free to treat the
situation in ANY ONE of the following ways: (1)
When the situation occurs, an error is signalled at
least in safe code, OR (2) When the situation
occurs, the "consequences are undefined", OR (3)
When the situation occurs, the consequences are
defined. Also, no conforming code can depend on
the results or effects of this situation, and all
conforming code must treat the results and effects
of the situation as undefined. For example,
"implementations may be extended to define other
type specifiers to have a corresponding class."
FREE TO EXTEND THE SYNTAX Implementations are permitted to define unambiguous
extensions to the syntax of the construct being
described. No conforming code can depend on this
extension. All conforming code is required to treat
the syntax as meaningless. The standard may disallow
certain extensions while allowing others. For example,
"no implementation is free to extend the syntax of
DEFCLASS."
WARNING IS ISSUED A warning is issued, as described in WARN, in both
safe and unsafe code and when the situation is
detected by the compiler. Conforming code may rely
on the fact that a warning will be issued in both
safe and unsafe code and when the situation is
detected by the compiler. Every implementation is
required to detect this situation in both safe and
unsafe code and when the situation is detected by
the compiler. The presence of a warning will in no
way alter the value returned by the form which
caused the situation to occur. For example, "a
warning is issued by the compiler if a declaration
specifier is not one of those defined in Chapter 9
of CLtL and has not been declared in a DECLARATION
declaration."
WARNING SHOULD BE ISSUED A warning may be issued. Conforming code may not
rely on the fact that a warning will be issued. If
the situation is detected by the compiler, a
warning may or may not be issued, depending on the
implementation. The presence of a warning will in
no way alter the value returned by the form which
caused the situation to occur. For example, "a
warning should be issued by a compiler if a
variable declared to be ignored is referenced
or is also declared special, or if a variable is
lexical, never referenced, and not declared to be
ignored."
(*) means this term is used to define other terms in this proposal,
not explicitly used in the standard.
∂03-Mar-89 1032 @polya.Stanford.EDU:tah@linz Theory Faculty Candidate
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 3 Mar 89 10:32:49 PST
Received: from linz.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA08864; Fri, 3 Mar 89 10:29:34 -0800
Received: by linz.stanford.edu (5.59/25-eef) id AA08029; Fri, 3 Mar 89 10:28:43 PDT
Message-Id: <8903031828.AA08029@linz.stanford.edu>
To: thcom@sail, csd@score, aflb-all@polya
Subject: Theory Faculty Candidate
Date: 03 Mar 89 10:28:40 PST (Fri)
From: Tom Henzinger <tah@linz>
Joe Kilian (M.I.T.) will be visiting on Monday and Tuesday, March 6-7.
Please send me a message if you want to talk with him, and/or join him
for lunch/dinner.
His schedule so far:
Tu 12:00 lunch with students
4:15 AFLB talk
∂03-Mar-89 1127 chandler@polya.Stanford.EDU CSD Retreat
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 3 Mar 89 11:27:27 PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA11653; Fri, 3 Mar 89 11:24:47 -0800
Date: Fri, 3 Mar 1989 11:24:44 PST
From: "Joyce R. Chandler" <chandler@polya.stanford.edu>
To: retreat@polya.Stanford.EDU
Subject: CSD Retreat
Message-Id: <CMM.0.87.604956284.chandler@polya.stanford.edu>
Time is drawing near for me to make confirmed reservations at Chaminade in
Santa Cruz for our up-coming retreat May 5-7. For those of you (and you are
MANY) who have not already done so, PLEASE LET ME KNOW:
1. Will you attend?
2. If so, will you require single or double accommodations?
3. If single accommodations, please provide me with an account number and
name to charge the difference in rates.
To those of you who have already responded, "thank you".
∂03-Mar-89 1130 X3J13-mailer Re: Section 1.7
Received: from Sun.COM by SAIL.Stanford.EDU with TCP; 3 Mar 89 11:30:17 PST
Received: from snail.Sun.COM by Sun.COM (4.1/SMI-4.0)
id AA13011; Fri, 3 Mar 89 11:28:34 PST
Received: from clam.sun.com by snail.Sun.COM (4.1/SMI-4.0)
id AA12864; Fri, 3 Mar 89 11:24:49 PST
Received: by clam.sun.com (4.0/SMI-4.0)
id AA26139; Fri, 3 Mar 89 11:27:58 PST
Date: Fri, 3 Mar 89 11:27:58 PST
From: cperdue@Sun.COM (Cris Perdue)
Message-Id: <8903031927.AA26139@clam.sun.com>
To: barmar@Think.COM, pierson@mist.encore.com
Subject: Re: Section 1.7
Cc: chapman%aitg.DEC@decwrl.dec.com@Multimax.encore.com,
skona%csilvax@hub.ucsb.edu@multimax.encore.com,
x3j13@sail.stanford.edu
I agree with Barry. Packages not named in the standard belong
to software developers. Otherwise every name defined by anyone
becomes an extension to Common Lisp, and I don't think we want
to define "extension" that way.
∂03-Mar-89 1202 X3J13-mailer Common Lisp
Received: from Think.COM by SAIL.Stanford.EDU with TCP; 3 Mar 89 12:02:33 PST
Received: from fafnir.think.com by Think.COM; Fri, 3 Mar 89 14:56:49 EST
Return-Path: <gls@Think.COM>
Received: from verdi.think.com by fafnir.think.com; Fri, 3 Mar 89 14:58:31 EST
Received: by verdi.think.com; Fri, 3 Mar 89 14:55:18 EST
Date: Fri, 3 Mar 89 14:55:18 EST
From: Guy Steele <gls@Think.COM>
Message-Id: <8903031955.AA21691@verdi.think.com>
To: moore@cli.com
Cc: x3j13@sail.stanford.edu
Cc: Steele@Think.COM
In-Reply-To: J Strother Moore's message of Fri, 3 Mar 89 10:44:34 CST <8903031644.AA08035@client13.CLI.COM>
Subject: Common Lisp
Date: Fri, 3 Mar 89 10:44:34 CST
From: J Strother Moore <moore@cli.com>
I just wanted to let you know that I love Common Lisp.
I have used it a lot this past year extending Boyer's and
my theorem prover and the more I've used it the more I
like it. You guys really did a great job.
J
Thank you very much for the compliment. ANSI committee X3J13
is working to clean up the rough spots and fill in the gaps;
I hope you like the revision as much as the current definition.
And of course lots of credit must go to the implementors.
This mail made my day.
--Guy Steele
∂03-Mar-89 1221 X3J13-mailer KMP's personal comments on 22-Feb-89 Character Proposal
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 3 Mar 89 12:21:23 PST
Received: from BOBOLINK.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 550353; Fri 3-Mar-89 15:17:40 EST
Date: Fri, 3 Mar 89 15:17 EST
From: Kent M Pitman <KMP@STONY-BROOK.SCRC.Symbolics.COM>
Subject: KMP's personal comments on 22-Feb-89 Character Proposal
To: Baggins@IBM.COM
cc: X3J13@SAIL.Stanford.EDU
References: <19890303165649.4.KMP@BOBOLINK.SCRC.Symbolics.COM>
Message-ID: <19890303201737.3.KMP@BOBOLINK.SCRC.Symbolics.COM>
Please find below my personal comments on the hardcopy character
proposals of 22-Feb-89 which I received from you by US Mail.
This is not the Symbolics official position. Moon will send that
at a later date.
Note that this will be my only mailing to this large list on this
issue prior to the meeting. If I have anything further to say, I
will bring it up on CL-Characters or some smaller list. I expect,
however, that my attention will be focused on other issues.
By the way, you still have my old address (11 Cambridge Center).
The correct new address for me, Moon, and Symbolics R&D is:
8 New England Executive Park, East
Cambridge, MA 01803-5007
----- Comments on the Isolated Proposals (hardcopy of 22-Feb-89) -----
Presentational Comments
- This doesn't follow the normal proposal format being used by
other groups. As a consequence...
- there are no examples to make certain sticky points clearer
- there is no impact analysis
- there is no rationale for some of the questionable changes
I think it is unreasonable to expect people to just infer this
kind of thing. Reasoning about these things takes a lot of time.
Writing down your thoughts once you've reasoned about something
takes much less time than asking someone to repeat your entire
process in order to decide if they approve.
Also, there is precedent for making decisions in language design
that later are suggested to be mistakes. Often it is hard to
distinguish `changing goals' from `poor communication' from
`oversight' from `typo.' Our normal proposal format is designed
to avoid some of these symptoms by making explicit some things
that would not be explicit in the final document, and by adding
redundancy that helps catch typos, miscommunication, etc.
- The proposal descriptions are far too brief. They are prone to
misinterpretation. Worse, an `expansion' does not occur elsewhere.
Often to disambiguate you have to do a lot of digging around and
assembling things from pieces here and there.
At the very least, there should be index information from these
short punchy phrases to something less ambiguous. Better still
would be to really spell out the details in the proposal so that
they can be examined in the abstract.
Breaking this big proposal up into little ones should have
accomplished two things: it should have allowed us to understand
the parts of the proposal in isolation, and it should have allowed
independent voting. I think it currently allows neither, because
you can't understand the individual proposals without understanding
the whole and if you vote No on any particular part, you aren't left
with a document that Kathy can usefully work with.
Technical Comments
- Regarding defining that STRING-CHAR must be either BASE-CHAR or
CHARACTER -- This seems unmotivated and I am suspicious of it.
It seems, somehow, unnecessarily restrictive.
- I don't mind if INT-CHAR is removed, but I don't think CHAR-INT
should be removed. It may be useful in some hashing applications.
- Regarding the problem description in CHARACTER-TYPE-RESTRICTIVE,
I don't think that I believe that CHARACTER doesn't allow both fat
and thin characters. Is this claim motivated somewhere.
- The proposal CHARACTER-TYPE-RESTRICTIVE suggests replacing
STANDARD-CHAR by (CHARACTER :STANDARD), but since STANDARD-CHAR
is not really going away, this wording is misleading.
- Proposals STRING-TYPE-RESTRICTIVE and SIMPLE-STRING-TYPE-RESTRICTIVE
refer to making STRING and SIMPLE-STRING (respectively) union types.
The details of this are never spelled out. The consequences are not,
I think, appropriately analyzed. I would like to better understand the
relationship between this and the new array TYPEP situation to make
sure there are no bad interactions.
- I do not understand from the description of
SIMPLE-STRING-TYPE-ABBREVIATIONS why adding SIMPLE-BASE-STRING
and SIMPLE-GENERAL-STRING is an answer to the problem that new types
are awkward to name.
Aesthetic Comments
- I think the terms `coded character format' and `coded character set'
are ok for a concept description, but inappropriate for a language spec.
They are too long for convenient lunch table discussion, note taking,
etc. If you want something to be part of a language that people use in
a serious way, you have to either truncate the terms to manageable
size or expect people to do it for you. If you do it, at least that
visitors from other companies will be able to participate in lunch
table discussions. If you let your users do it, there will be lots of
gratuitous variation. The impact of this is that...
- In FILE-EXTERNAL-REPRESENTATION, :EXTERNAL-CODED-CHARACTER-FORMAT
is far too long. In any situation, such as with OPEN, where the
space of keywords is not user-extensible, the need for
extraordinarily long names is very low because short names can
adequately disambiguate. I see no reason why some much shorter
keyword cannot be devised. (Just for your reference, even
:IF-DOES-NOT-EXIST tries my patience.)
I suggest :EXTERNAL-ENCODING as a straw man, but all I really care
about is that it be a minimal number of words, and I don't think
the proposed choice is short enough.
- In STRING-BINARY-WIDTH, I think the name EXTERNAL-CODED-STRING-LENGTH
is again too long. It's not like people will ever add symbols to
the LISP package, so it's not like a shorter name would be ambiguous.
I suggest STRING-ENCODED-LENGTH (to match my :EXTERNAL-ENCODING above).
- In CHAR-CODE-NON-PORTABLE, I very strongly dislike abbreviations except
in extraordinary circumstances like `char' where the abbreviation is
nearly ripe for adoption as an English word due to its extremely wide,
or where the word is used so often that spelling it out would be too
awful.
However, if you spell it out, I'll complain that it is too long a term.
I propose you call the thing CHAR-ENCODING.
- In CHARACTER-IDENTIFICATION-NONPORTABLE, I don't think you've necessarily
solved anything if you say that (a) all characters must come from some
registry and (b) all registries must be dicated by an ISO group that doesn't
exist. It necessarily follows that there can be no correct implementation
until that working group finishes. What are people to do in the interim?
It either needs to be spelled out, or it needs to be explained why what they
do doesn't matter. [And, indeed, if it doesn't matter, then it's going to be
hard to make the case that a lot of the existing rules are really necessary.]
Typos
- In CHARACTER-TYPE-RESTRICTIVE, defining BASE-CHARACTER as a subtype
of STRING seems like an extraordinarily bad idea. :-)
- In STRING-BINARY-WIDTH, presumably the function name does not want
to be in the KEYWORD package.
----- Comments on the Concept Part (hardcopy of 22-Feb-89) -----
Presentational Comments
- The proposal uses the term "removed" a lot but that sometimes seems to
mean "gets totally rid of", sometimes means "deprecates", sometimes
means "adds something that's really better". Maybe I'm just misreading,
but it would be helpful in terms of being a proposal that people have to
vote on, to clearly define these terms.
- I am actually offended by the use of these tags like ISO8859/2-1987
with no exposition. This gives a `snobby' look to the paper and amounts
to jargon because it is not intelligible by people who are on in on
ISO affairs. I feel forced to write to ISO to get these documents just
to know what you're talking about. I have no sense for whether you are
talking about something I'm familiar with under another name, or
something totally irrelevant to me. I made annotations all over the
document about this. It was really starting to bug me.
- p9, last two paragraphs before 2.3 should be a single paragraph.
- I found it hard to read about REGION-SPECIALIZED-STRING, GENERAL-STRING,
etc. and then to think that you weren't in fact proposing it. Someone
skimming would probably miss the word `hypothetical' ... Especially since
my vague recollection is that this stuff was really in a previous proposal,
I think this stuff either be much more clearly set off as an example.
Technical Comments
- From a human interface standpoint, I think it would be desirable for
character repertoires to have more than one possible name. My guess
is -- though I have no way of proving it since no hint is given about
what names these things refer to -- that these things have more common
nicknames that would be more programmer-friendly if allowed. Names made
up of mostly digits are not appealing to me.
- If people can add non-stanard registries, there is a potential for
confusion. If I add a private registry named FOO and then at a later
time ISO votes in a registry named FOO, mine will suddenly appear to
be the official one. If there a way to tell official ones from unofficial
ones, that might avoid some problems down the road. Alternatively, if
a portion of the registry namespace were allocated for ISO (or,
conversely, reserved for private use), that would solve the problem.
- The fact that character labels must be uniquely named using only
standard-char-p characters strikes me as having funny bootstrap
implications. I don't know what if anything to do about that, but I
thought I'd mention it.
- The issue of character labels also makes me wonder about uses of
special chars like colon, backslash, semicolon, dollarsign which often
have special meaning to Lisp and other languages. Further, the use
potential to use underscore and hyphen seems like a bad idea, too,
because some systems prefer underscore to hyphen -- and vice versa.
Personally, I think we ought to say that character labels have to be
made of A to Z, a to z, and 0 to 9 (with preference for alphabetics
over numerics -- i.e., they should try to be actual words).
- Also, who will assign character labels? Will they not be standard
across implementations? This is a place where examples of sample uses
would help a lot.
- I couldn't make sense of the cryptic phrase `Reader Canonicalization'
in a bullet item at bottom of chap 2, page 8. I think this should
be elaborated.
- I've wrestled with this business of (and character (not base-character))
a lot and come to the conclusion that you should give this a name
in the language itself. e.g., you should deftype the name
extended-character. The reasons are these:
- so it can be used in discussions, bug reports, etc.
- so that there is a term that could be common between lisp and some
other language -- where the other language was non-lispy and a lisp
AND expression would not be welcome.
- When the external encoding is not reliably using a single-byte format,
you need to specify the consequences for the functions FILE-POSITION
and FILE-LENGTH.
- Is $ really what is replaced by the British pound sign on British
displays? I had always thought that # was what was replaced. My point,
though, is that there may be more than one axis on which to view
`equivalent functionality.'
I don't think I'm disagreeing with you on the details here, but I am
saying that I don't think it's as pretty a picture as you paint it,
and that (like the `pathnames' section in CLtL) you risk making people
think they're getting a more comfortable solution than they're really
getting.
I think the real point here should be that this is a thing which
gratuitously varies in the marketplace and in the world, that we don't
have a prayer of standardizing it, and we're leaving it up to vendors
to do the best they can.
I have a couple of specific questions, though:
- What if a program that on American terminals types out:
That will cost $4.00
types out
That will cost L4.00
on a british screen. I'm not so sure I'm happy with that.
- What about _ vs -. Some computer systems seem to take languages
that are defined to distinguish case (and be all uppercase) and
invert the case (make it all lowercase), often flipping hyphen
and underscore, and single and doublequote in the process. Are
these valid transformations?
- top of p13, you say that the COERCE function is extended to allow
for coercion from base string to extended string. Be explicit about
how this is done.
- Regarding footnote 18 on p13, my personal feeling is that either all
conventions should be itemized or none should. If none are, you can
pick obviously hypothetical names. However, I think that to mention
one or two encodings and not others amounts at best to advertising
and at worst can either pin an implementation unnecessarily (by having
an external document such as CLtL or the ANSI CL spec define something
which might want to vary over time) or can cause a market bias toward
implementations which have their convention mentioned over implementations
which do not have their conventions mentioned.
- The whole issue of non-graphic characters is almost totally omitted
from the discussion. I think more should have been said. A parenthetical
remark about #\Newline at top of p14 of chap 2 is about all there seemed
to be.
- I think the reason that EXTERNAL-CODED-STRING-LENGTH does not address
the problem of screen width in proportional fonts should be addressed.
Is an implication also that Huffman coding (is that how you spell it)
in stream output is also not addressed (or possibly illegal) because
it is context sensitive?
Typos
- You've put some function names in italic where you meant code-font.
e.g., in Section 2.1
-----
Due to time constraints, I only skimmed the editorial modifications to
CLtL in trying to get answers to specific questions I ran into in the
other parts. The absence of remarks about those changes shouldn't
necessarily be construed at this time as approval on my part.
∂03-Mar-89 1226 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Final Program-Complexity Symposium
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 3 Mar 89 12:26:01 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA15677; Fri, 3 Mar 89 12:23:17 -0800
Message-Id: <8903032023.AA15677@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Fri, 3 Mar 89 12:23:38 PST
Received: by BYUADMIN (Mailer R2.01A) id 8955; Fri, 03 Mar 89 06:45:58 MST
Date: Thu, 2 Mar 89 23:19:48 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Joe Traub <traub@CS.COLUMBIA.EDU>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Joe Traub <traub@CS.COLUMBIA.EDU>
Subject: Final Program-Complexity Symposium
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
THIRD SYMPOSIUM ON COMPLEXITY OF APPROXIMATELY SOLVED PROBLEMS
COMPUTER SCIENCE DEPARTMENT
COLUMBIA UNIVERSITY
April 3-5, 1989
SUPPORT: This Symposium is supported by a grant from the National
Science Foundation.
REGISTRATION: The symposium will be held at the Kellogg Conference
Center, on the fifteenth floor of the International Affairs Building,
Columbia University, 118th Street and Amsterdam Avenue. Registration
will start at 9:00 a.m. THERE IS NO REGISTRATION CHARGE.
PUBLICATION: Invited papers will be published in the Journal of Complexity.
FOR FURTHER INFORMATION: If you have any questions, contact Kerny
McLaughlin, Computer Science Department, Columbia University, (212)
854-2736.
SYMPOSIUM SCHEDULE
There will be two hour-long plenary lectures and thirty-four invited
papers as well as contributed papers.
PLENARY LECTURES
MONDAY, APRIL 3, 1989
9:40-10:40 Steven Smale, University of California, Berkeley
"Godel, undecidability, chaos"
2:20- 3:20 Leon N. Cooper, Brown University
"Neural networks in real world applications:
approximate solutions to complex problems"
MONDAY, APRIL 3, 1989
9:00- 9:30 Registration and Coffee
9:30- 9:40 J.F. Traub, Columbia University
Opening Remarks
9:40-10:40 S. Smale, University of California, Berkeley
"Godel, undecidability, chaos"
10:40-11:00 Z. Galil, Columbia University
(with M. Chaimovich & G. Freiman, Tel-Aviv University, Israel)
"Solving the subset-sum problem using analytic number theory"
11:00-11:20 J. Tsitsiklis, Massachusetts Institute of Technology
"The analytic complexity of dynamic programming and
related fixed-point problems"
11:20-11:40 Coffee
11:40-12:00 H. Wozniakowski, Columbia University
(with J. Kuczynski, Polish Academy of Sciences, Poland)
"Estimating the largest eigenvalue by the power and
Lanczos algorithms with a random start"
12:00-12:20 D. Lee, AT&T Bell Laboratories
"Detecting discontinuities"
12:20-12:40 G. Wahba, University of Wisconsin
"Multivariate function estimation and model building
with interaction splines"
12:40- 1:00 D. Donoho, University of California, Berkeley
"A controversy in inverse theory and a solution
via optimal recovery"
1:00- 2:20 Lunch
2:20- 3:20 L. Cooper, Brown University
"Neural networks in real world applications:
approximate solutions to complex problems"
3:20- 3:40 Y. Abu-Mostafa, California Institute of Technology
"Learning from hints in neural networks"
3:40- 4:00 E. Baum, Princeton University
"On learning a union of half spaces"
4:00- 4:20 Tea
4:20- 4:40 G.W. Wasilkowski, University of Kentucky
(with F. Gao, University of British Columbia, Canada)
"On the power of adaptive information for functions
with singularities"
4:40- 5:00 D. Saari, Northwestern University
"On the design of organizations and of distributed
computing algorithms"
5:00- 5:20 A. Werschulz, Columbia University
"Are finite elements optimal on the average?"
TUESDAY, APRIL 4, 1989
9:00- 9:40 Coffee
9:40-10:00 S. Heinrich, Akademie der Wissenschaften der DDR
TBA
10:00-10:20 K. Sikorski, University of Utah
(with H. Wozniakowski, Columbia University)
"An ellipsoid algorithm for fixed point computation"
10:20-10:40 L. Blum, International Computer Science Institute, Berkeley
"NP-completeness over the reals"
10:40-11:00 L. Levin, Boston University
"Almost no linear predicates of witnesses of hard NP
problems have feasible approximations"
11:00-11:20 Coffee
11:20-11:40 B. Kacewicz, University of Warsaw, Poland
(with L. Plaskota, University of Warsaw, Poland)
"Asymptotic optimality of algorithms with noisy information"
11:40-12:00 J.M. Steele, Princeton University
"Complexity of statistical models of images"
12:00-12:20 I. Johnstone, Stanford University
"Speeds of estimation in positron emission tomography
and related inverse problems"
12:20-12:40 J. Kuczynski, Polish Academy of Sciences, Poland
TBA
12:40- 2:00 Lunch
2:00- 3:40 CONTRIBUTED PAPERS
Session 1 Session 2
2:00- 2:20 A.Papageorgiou R.A. Levinson
Columbia University UC Santa Cruz
"Improved sampling "Finding vertex covers
for multivariate of cubic graphs"
integration on the
average"
2:20- 2:40 H. Nakano V. Sarkar
Osaka University, Japan IBM, T.J.Watson Research Center
(with Y. Nakanishi, "Efficient representation
Osaka University, Japan) of a transitive relation
"Statistical estimation by partitioning into complete
of local neighborhood bipartite subgraphs"
search method"
2:40- 3:00 X. Xuan W. Szpankowski
UC Berkeley Purdue University
"On solving a class "Stochastic approximations
of nonlinear BVP's for some combinatorial
with global convergence" problems and their
algorithmic implications"
3:00- 3:20 J. Rolim M. Hatzitheodorou
Odense University, Denmark Columbia University
"Towards a complexity (with T.Jackowski and
theory for approximation A. Papageorgiou, Columbia Univ.)
languages" "A smoothing spline approach
to the shape from shadows
problem"
3:20- 3:40 T. Jackowski V. Rego
Columbia University Purdue University
"Complexity of "On average time bounds for
multilinear problems" some simple random algorithms"
3:40- 4:00 Tea
4:00- 4:20 T. Boult, Columbia University
"On computation of topological degree"
4:20- 4:40 Y. Yomdin, Institute for Advanced Study, Princeton
"Approximative and topological complexity of functions"
4:40- 5:00 L. Plaskota, University of Warsaw, Poland
"On average case complexity of linear problems with
noisy information"
WEDNESDAY, APRIL 5, 1989
9:00- 9:40 Coffee
9:40-10:00 F. Gao, University of British Columbia, Canada
"Probabilistic analysis for numerical algorithms"
10:00-10:20 M. Milanese, Politecnico di Torino, Italy
(with A. Vicino, Politecnico di Torino, Italy)
"Computation of optimal algorithms for polynomial
solution and information operators"
10:20-10:40 M. Kowalski, University of Warsaw, Poland
"On approximation of band-limited signals"
10:40-11:00 U. Vazirani, University of California, Berkeley
"X(G**2)and approximations for chromatic number"
11:00-11:20 Coffee
11:20-11:40 M. Shub, T.J. Watson Research Center, IBM
"Machines for the solution of systems of polynomial equations"
11:40-12:00 E. Kalai, Northwestern University
"Complexity in game theory"
12:00-12:20 M. Kon, Boston University
(with E. Novak, University of Erlangen, West Germany)
"On the adaptive and continuous information problems"
12:20-12:40 E. Novak, University of Erlangen, West Germany
"Average case results for zero finding"
12:40- 2:00 Lunch
2:00- 2:20 P. Tiwari, T.J. Watson Research Center, IBM
(with M. Ben-Or, Hebrew University)
"Simple algorithms for approximating all roots
of a polynomial that has only real roots"
2:20- 2:40 A. Sukharev, Moscow State University, U.S.S.R.
"On adaptive and nonadaptive stochastic algorithms
for optimization and approximation"
2:40- 3:00 J. Renegar, Cornell University
"On the complexity of algebraic non-linear programming"
3:00- 3:20 A. Bojanczyk, Cornell University
"Some complexity results in parallel numerical
matrix-based computation"
∂03-Mar-89 1333 @polya.Stanford.EDU:hayes@arisia.xerox.com CSD Retreat
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 3 Mar 89 13:32:58 PST
Received: from arisia.Xerox.COM by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA20510; Fri, 3 Mar 89 13:30:23 -0800
Received: by arisia.Xerox.COM
(5.59++/IDA-1.2.6) id AA03143; Fri, 3 Mar 89 13:29:22 PST
Date: Fri, 3 Mar 89 13:29:22 PST
From: Pat Hayes <hayes@arisia.xerox.com>
Message-Id: <8903032129.AA03143@arisia.Xerox.COM>
To: chandler@polya.stanford.edu
Cc: retreat@polya.Stanford.EDU
In-Reply-To: "Joyce R. Chandler"'s message of Fri, 3 Mar 89 11:24:44 PST <CMM.0.87.604956284.chandler@polya.stanford.edu>
Subject: CSD Retreat
Thanks for the reminder. Unfortunately I will be out of town that
weekend, at a workshop in Florida, so I cant come.
Pat
∂03-Mar-89 1427 X3J13-mailer Re: Issue: ERROR-TERMINOLOGY
Received: from Sun.COM by SAIL.Stanford.EDU with TCP; 3 Mar 89 14:27:24 PST
Received: from snail.Sun.COM by Sun.COM (4.1/SMI-4.0)
id AA19379; Fri, 3 Mar 89 14:27:47 PST
Received: from clam.sun.com by snail.Sun.COM (4.1/SMI-4.0)
id AA21544; Fri, 3 Mar 89 14:23:46 PST
Received: by clam.sun.com (4.0/SMI-4.0)
id AA26314; Fri, 3 Mar 89 14:27:06 PST
Date: Fri, 3 Mar 89 14:27:06 PST
From: cperdue@Sun.COM (Cris Perdue)
Message-Id: <8903032227.AA26314@clam.sun.com>
To: rpg@lucid.com, x3j13@sail.stanford.edu
Subject: Re: Issue: ERROR-TERMINOLOGY
The terminology "CONSEQUENCES ARE UNSPECIFIED" is still a
trap in my opinion. The example, ``the consequences of the
garbage collector when invoked are unspecified'', is not
as appropriate as it might be, because there is no explicit
way to invoke the garbage collector in Common Lisp and the
example is not taken from the specification of the language
as far as I know.
But, what the heck, let's look at this example. Are the
results and effects of this situation "unpredictable but
harmless"? Not in my book. Running the garbage collector
is supposed to have (essentially) *no* visible effects.
It can't change the value of any variable or data structure
in any observable way. It can issue messages, I guess, and
change the report from "ROOM", but that is likely to change
with every call anyway.
Let's pick a few actual examples where the language definition is
proposed to say "consequences are unspecified". (Go ahead, I challenge
you.) I think we will find that the description will have to be more
specific than that. It can make sense to say that "effect X may or may
not occur". It can make sense to say that "data structure Y may be
modified arbitrarily". If we can define a set of effects that we
consider harmless, and change "unpredictable but harmless" to just
"harmless", or some such, that could also make sense, but not the current
language.
∂03-Mar-89 1539 X3J13-mailer What is a FUNCTION?
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 3 Mar 89 15:39:21 PST
Received: from defun.utah.edu by cs.utah.edu (5.61/utah-2.1-cs)
id AA07284; Fri, 3 Mar 89 16:37:18 -0700
Received: by defun.utah.edu (5.61/utah-2.0-leaf)
id AA04478; Fri, 3 Mar 89 16:37:16 -0700
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8903032337.AA04478@defun.utah.edu>
Date: Fri, 3 Mar 89 16:37:14 MST
Subject: What is a FUNCTION?
To: x3j13@sail.stanford.edu
From section 2.2 of the working draft:
A FUNCTION may be supplied as an argument without error to FUNCALL or
APPLY, and is to be executed as code when arguments are supplied. The
functional computation produces one or more values, produces no
values, or takes a non-local exit.
Is this *really* the best definition of what a FUNCTION is that we can
come up with? I've talked to some other people here and while we are
all having a remarkably hard time coming up with some specific words,
we are all agreed that this definition really misses the boat.
Surprisingly, none of the Lisp texts I have handy have much discussion
on what a function is, and the R**3 Scheme report says almost nothing
about what a procedure object is either. I really had no idea that
there was such a gaping hole in our understanding of such an
apparently fundamental concept....
To me, it seems like the definition of the FUNCTION type ought to
incorporate at least the following four notions:
- encapsulation of process as object
- capture of lexical environment
- generalization via parameters
- evaluation of body delayed until funcall
Also I would expect to see a statement that FUNCTION objects are
created by the evaluation of a (FUNCTION (LAMBDA ...)) form.
Would anybody like to take a stab at putting together a better
definition?
-Sandra
-------
∂03-Mar-89 1548 X3J13-mailer Error Terminology
Received: from lucid.com by SAIL.Stanford.EDU with TCP; 3 Mar 89 15:48:06 PST
Received: from challenger ([192.9.200.17]) by heavens-gate.lucid.com id AA00688g; Fri, 3 Mar 89 15:41:25 PST
Received: by challenger id AA21289g; Fri, 3 Mar 89 15:36:54 PST
Date: Fri, 3 Mar 89 15:36:54 PST
From: Richard P. Gabriel <rpg@lucid.com>
Message-Id: <8903032336.AA21289@challenger>
To: x3j13@sail.stanford.edu
Subject: Error Terminology
Ok Cris, here is the example. It is from CLOS chapter 1.
The description is of the system-supplied method for
SHARED-INITIALIZE. The second argument specifies a list of
slots that will be dealt with in certain cases.
``There is a system-supplied primary method for {\bf
shared-initialize} whose first parameter specializer is the class {\bf
standard-object}. This method behaves as follows on each slot,
whether shared or local:
...
\item{\bull} Any slots indicated by the second argument that are still
unbound at this point are initialized according to their {\bf
:initform} forms. For any such slot that has an {\bf :initform} form,
that form is evaluated in the lexical environment of its defining {\bf
defclass} form and the result is stored into the slot. For example,
if a {\bf :before} method stores a value in the slot, the {\bf
:initform} form will not be used to supply a value for the slot. If
the second argument specifies a name that does not correspond to any
slots accessible in the instance, the results are unspecified.''
Now, should this say that if the second argument specifies a name that
does not correspond to an accessible slot that it is ignored? Well,
that is what it does in some sense, but there may be processing that
goes on to discover the fact that it should be ignored, so supplying
exactly exactly one slot that appears nowhere in the hierarchy might
take an arbitrary amount of time to discover. For example, if there
are 100,000 classes, the CPL might need to be calculated, which could
take up to 40 seconds and involve CONSing 5mbytes, possibly
side-effecting each class object in certain ways. Or while the
programmer is getting coffee, the multitasking system might have
noticed inactivity and woken up the CPL calculation process, computing
the CPL for the right classes, so when the programmer returns and
causes shared-initialize to happen, this effect doesn't happen. Or
the search for the slot might invoke other internal initialization
procedures or protocols that should be harmless. Or maybe some
programming environment structures are altered. Or maybe some other
processes are started.
Right now I don't know even what the odd effects of the CPL
computation will be in any particular Common Lisp, and the CPL
computation might be involved in the effects of shared-initialize.
I wasn't sure what Cris meant by this argument regarding the garbage
collector:
``But, what the heck, let's look at this example. Are the
results and effects of this situation "unpredictable but
harmless"? Not in my book. Running the garbage collector
is supposed to have (essentially) *no* visible effects.
It can't change the value of any variable or data structure
in any observable way. It can issue messages, I guess, and
change the report from "ROOM", but that is likely to change
with every call anyway.''
I might point out that rehashing can happen as a result of GC, and in
parallel processing extensions to Common Lisp, running processes (such
as those behind futures) could be killed. Output in output buffers
might be shipped to their final destinations. Weak pointer arrays
could be altered. Dispatch tables for generic functions could be
recalculated, and instances whose structure had been redefined by
forward-referencing could be re-optimized, and possibly some metaobject
protocol could be triggered.
But, ignoring these, it sounds offhand like he wasn't sure what
effects GC might have or whether they would happen (``essentially'';
``I guess''), but he was certain there would be no visible effects.
Maybe he thought the results were unpredictable but harmless?
Cris suggests:
``If we can define a set of effects that we consider harmless, and
change "unpredictable but harmless" to just "harmless"....''
My point is that it is very hard to enumerate or classify all possible
effects in all possible implementations with all possible legal
extensions on all possible hardware at all future times. And it is
much easier to define terminology that captures our intent and use it.
-rpg-
∂03-Mar-89 1632 X3J13-mailer Re: Issue: ERROR-TERMINOLOGY
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 3 Mar 89 16:32:40 PST
Received: from defun.utah.edu by cs.utah.edu (5.61/utah-2.1-cs)
id AA09474; Fri, 3 Mar 89 17:30:36 -0700
Received: by defun.utah.edu (5.61/utah-2.0-leaf)
id AA04518; Fri, 3 Mar 89 17:30:34 -0700
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8903040030.AA04518@defun.utah.edu>
Date: Fri, 3 Mar 89 17:30:32 MST
Subject: Re: Issue: ERROR-TERMINOLOGY
To: rpg@lucid.com
Cc: x3j13@sail.stanford.edu
I've been bothered by "the consequences are unspecified" too, although
I've kept my mouth shut on the issue up until now in the hopes that
the problem would resolve itself.
First some background. We've had problems deciding on error
terminology for some of the compiler issues because it seems like none
of the standard error terms really say what we want, which is
something to the effect of: You can't depend on being able to compile
code that does this. In any particular implementation, the behavior
will be well-defined, but that behavior may be (for the compiler
and/or loader) to signal an error. Conforming programs cannot rely on
any particular behavior in this situation, but simply compiling code
that does this will not cause a crash-and-burn situation.
Saying "the consequences are undefined" doesn't seem like the right
thing, because it permits the possibility of random crash-and-burn
errors. I am not sure if "the consequences are unspecified" is really
right either, because I'm not sure if "harmless" was intended to
include signalling an error.
So far, in situations where it is reasonable to signal an error (for
example, issue COMPILE-FILE-SYMBOL-HANDLING), I have been using
"unspecified" but explicitly saying that it is OK to signal an error.
I would feel more confortable with this if the definition of the term
"unspecified" said that signalling errors or warnings is permissible,
at least in those situations where the standard explicitly says it is.
A further problem with "the consequences are unspecified" is that I
think the word "consequences" is too unspecific about is being left
unspecified. :-) We ought to be very careful about using this phrase
and instead try to state exactly which "consequences" are unspecified.
-Sandra
-------
∂03-Mar-89 1704 X3J13-mailer Issue: ERROR-TERMINOLOGY
Received: from lucid.com by SAIL.Stanford.EDU with TCP; 3 Mar 89 17:03:58 PST
Received: from pitney-bowes ([192.9.200.50]) by heavens-gate.lucid.com id AA00803g; Fri, 3 Mar 89 16:57:17 PST
Received: by pitney-bowes id AA11422g; Fri, 3 Mar 89 16:55:51 PST
Date: Fri, 3 Mar 89 16:55:51 PST
From: Jim McDonald <jlm@lucid.com>
Message-Id: <8903040055.AA11422@pitney-bowes>
To: sandra%defun@cs.utah.edu
Cc: rpg@lucid.com, x3j13@sail.stanford.edu
In-Reply-To: Sandra J Loosemore's message of Fri, 3 Mar 89 17:30:32 MST <8903040030.AA04518@defun.utah.edu>
Subject: Issue: ERROR-TERMINOLOGY
Why can't we use phrases like:
"the consequences might be fatal"
"the consequences might signal an error"
"the consequences won't signal an error"
For me, saying "the consequences are undefined" is a bit like saying
"slow, construction ahead" when in fact the bridge might be out.
jlm
∂04-Mar-89 1159 X3J13-mailer Error Terminology
To: x3j13@SAIL.Stanford.EDU
From: Dick Gabriel <RPG@SAIL.Stanford.EDU>
The error terminology is useful for explaining general behavior
in various situations where we do not wish to state explicitly what could
happen, but ordinary English description is not forbidden.
That is, if you want to say that something is unspecified but might
signal an error, we don't need special terminology for that since that
phrase itself is perfectly fine. (Note: ``unspecified'' allows implementations
to specify what happens, and signalling an error is a fine specification.)
In addition, if people feel that we should elaborate on the possible
consequences of some action, we should simply spell them out. The fact we
have error terminology doesn't mean that we cannot use our judgement in
particular situations.
-rpg-
∂05-Mar-89 1521 hoffman@csli.Stanford.EDU the Symbolic Systems Forum, March 10th.
Received: from csli.Stanford.EDU by SAIL.Stanford.EDU with TCP; 5 Mar 89 15:21:50 PST
Received: by csli.Stanford.EDU (4.0/inc-1.0)
id AA08839; Sun, 5 Mar 89 15:10:39 PST
Date: Sun 5 Mar 89 15:10:38-PST
From: Reid Hoffman <HOFFMAN@CSLI.Stanford.EDU>
Subject: the Symbolic Systems Forum, March 10th.
To: ForumFriends@csli.Stanford.EDU
Message-Id: <605142638.0.HOFFMAN@CSLI.Stanford.EDU>
Mail-System-Version: <SUN-MM(242)+TOPSLIB(128)@CSLI.Stanford.EDU>
The Symbolic Systems Forum Presents
Dr. Ruben Kleiman
(Apple Intelligent Agents Group)
on
Ontology and Computers
This talk will be about Artificial Intelligence and
Knowledge Representation, focusing on how to encode
knowledge into a computer. On one hand, Winograd, Flores,
and Putnam have advocated a phenomenological view which
abandons the standard mentalist position. On the other hand, there
are also many people (Hayes, McCarthy, Dennett, and most
AI workers) who keep the mentalist position. This talk
will attempt to explicate a perspective which will
reconcile these two philosophical positions.
NOTE: this abstract was briefly communicated over the phone. A more
explicit one may be sent out around Monday or Tues. Also, this will be
the last Symbolic Systems Forum of the quarter. Next quarter`s schedule
will be posted over Spring Break.
Time: 3:15
Place: building 60, room 62n.
The talk is open to the general public and refreshments will be served.
-------
∂06-Mar-89 0838 TAJNAI@Score.Stanford.EDU nominations are closed
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 6 Mar 89 08:38:46 PST
Date: Mon 6 Mar 89 08:33:36-PST
From: Carolyn Tajnai <TAJNAI@Score.Stanford.EDU>
Subject: nominations are closed
To: faculty@Score.Stanford.EDU
Message-ID: <12475875982.16.TAJNAI@Score.Stanford.EDU>
Nominations are closed for the IBM fellowship. We will make a
decision by tomorrow.
Carolyn Tajnai
-------
∂06-Mar-89 0849 @Score.Stanford.EDU:chandler@polya.Stanford.EDU 3-7 Faculty Lunch
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 6 Mar 89 08:49:34 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Mon 6 Mar 89 08:45:24-PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA09349; Mon, 6 Mar 89 07:46:19 -0800
Date: Mon, 6 Mar 1989 7:46:15 PST
From: "Joyce R. Chandler" <chandler@polya.stanford.edu>
To: faculty@score, bureaucrats@score, staff-rep@score
Cc: leventhal@sierra, ct.dnf@forsythe, rosenberg%hplsr@hplabs.hp.com,
chandler@polya.Stanford.EDU
Subject: 3-7 Faculty Lunch
Message-Id: <CMM.0.87.605202375.chandler@polya.stanford.edu>
Just a reminder of tomorrow's faculty lunch - 12:15 in Margaret Jacks Hall,
Room 146. Our guests will be Steven Rosenberg and Frank Carruba from H-P to
talk about "science centers".
∂06-Mar-89 1004 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Re: Cryptography textbook
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 6 Mar 89 10:04:45 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA15225; Mon, 6 Mar 89 10:02:27 -0800
Message-Id: <8903061802.AA15225@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Mon, 6 Mar 89 10:02:47 PST
Received: by BYUADMIN (Mailer R2.01A) id 5428; Mon, 06 Mar 89 11:01:26 MST
Date: Mon, 6 Mar 89 11:56:24 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Alan Sherman <ats@cs.tufts.edu>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Alan Sherman <ats@cs.tufts.edu>
Subject: Re: Cryptography textbook
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
Diffie and Hellman's survey article ``Privacy and Authentication:
An Introduction to Cryptography'' (Proc. IEEE, March 79) is
a good place to start. There is no great textbook available;
two of the better ones are Cipher Systems by Beker and Piper
and Cryptography and Data Security by Denning. The collection
``Tutorial: The Security of data in Networks'' by D. Davies
has several nice papers.
∂06-Mar-89 1008 STAGER@Score.Stanford.EDU Spring TA Appoitments
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 6 Mar 89 10:08:52 PST
Date: Mon 6 Mar 89 10:04:53-PST
From: Claire Stager <STAGER@Score.Stanford.EDU>
Subject: Spring TA Appoitments
To: faculty@Score.Stanford.EDU
cc: stager@Score.Stanford.EDU, jimenez@Score.Stanford.EDU
Office: CS-TAC 29, 723-6094
Message-ID: <12475892600.9.STAGER@Score.Stanford.EDU>
We are currently accepting TA applications for Spring Quarter from interested
students, and this Thursday or Friday will run lists of applicants
and forward them to course instructors. If you would like to interview
any (or all) of the applicants for your course, please take a moment now
to set up a few office hours during Dead Week (March 12-19) for this purpose.
Inform us by NOON, FRIDAY MARCH 10, of the days, times, office location, and
phone number where you will be available, and we will forward this information
to potential TAs.
At the conclusion of your interviews, send your preferences on to Roy Jones
(Jones@Score) and Claire Stager (Stager@Score). Your preferences will be
taken into consideration, as will the preferences of our student applicants,
when TA appointments are being made. We'll then make every effort to inform
you of who has been assigned to your course as soon as the appointment
process has been completed.
Let me know if you have any questions about the appointment process.
Thanks again.
Claire
-------
∂06-Mar-89 1038 edith@polya.Stanford.EDU faculty candidate visit
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 6 Mar 89 10:38:18 PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA17186; Mon, 6 Mar 89 10:35:40 -0800
Date: Mon, 6 Mar 1989 10:35:38 PST
Sender: Edith Cohen <edith@polya.stanford.edu>
From: Edith Cohen <edith@polya.stanford.edu>
To: thcom@sail, csd@score, aflb-all@polya
Subject: faculty candidate visit
Message-Id: <CMM.0.87.605212539.edith@polya.stanford.edu>
To: thcom@sail, csd@score, aflb-all@polya
Subject: Theory Faculty Candidate
Baruch Schieber (currently IBM T.J. Watson) will be visiting on Thursday,
March 9.
Please send me a message if you want to talk with him, and/or join him
for lunch/dinner.
His schedule so far:
Th 12:30 AFLB talk
1:30 Lunch (after AFLB)
∂06-Mar-89 1114 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Bar-Ilan Symposium on Foudations of Artificial Intelligence --
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 6 Mar 89 11:14:30 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA20198; Mon, 6 Mar 89 11:12:11 -0800
Message-Id: <8903061912.AA20198@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Mon, 6 Mar 89 11:12:28 PST
Received: by BYUADMIN (Mailer R2.01A) id 6882; Mon, 06 Mar 89 12:09:19 MST
Date: Mon, 6 Mar 89 11:59:20 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Martin Charles Golumbic <GOLUMBIC%ISRAEARN.BITNET@forsythe.stanford.edu>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Martin Charles Golumbic <GOLUMBIC%ISRAEARN.BITNET@forsythe.stanford.edu>
Subject: Bar-Ilan Symposium on Foudations of Artificial Intelligence --
Second A
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
*** Second Announcement ***
Bar-Ilan Symposium on the
Foundations of Artificial Intelligence
19-21 June 1989
Sponsored by the Research Institute for the Mathematical Sciences
Bar-Ilan University, Ramat Gan, Israel
Invited speakers:
John McCarthy (Stanford University)
"Formalized Common Sense Knowledge and Reasoning"
Ronald Rivest (M.I.T.)
"Recent Developments in Machine Learning Theory"
Joseph Halpern (IBM Research)
"Reasoning about Knowledge and Probability"
...............................................................
The Annals of Mathematics and Artificial Intelligence will publish a
special issue, containing selected refereed full length papers, as a
permanent record of the Symposium. These should be submitted shortly
after the conclusion of the Symposium and be at the standard of the
best professional journals.
High quality research papers are solicited for consideration by the
program committee to be presented at the Symposium. Submission of
extended abstracts should be sent by 31 March 1989 in triplicate to:
Prof. Martin Golumbic
BISFAI-89 Program Chair
IBM Israel Scientific Center
Technion City
Haifa, Israel
or by electronic mail to: golumbic@israearn.bitnet
Decisions on talks will be made within one month of receipt.
...............................................................
The Bar-Ilan Symposium on the Foundations of Artificial Intelligence is
intended to become a biennial event which will focus on a range of
topics of concern to scholars applying quantitative, combinatorial,
logical, algebraic and algorithmic methods to AI areas as diverse as
decision support, automatic reasoning, knowledge-based systems, machine
learning, computer vision, and robotics. These include applied
logicians, algorithms and complexity researchers, AI theorists, and
applications specialists using mathematical methods. By sponsoring such
symposia, we hope to influence the spawning of new areas of applied
mathematics and the strengthening of the scientific underpinnings of
artificial intelligence.
........... REGISTRATION AND HOTEL ACCOMODATIONS ........
We have reserved a block of hotel accommodations at the
Kfar Hamaccabia Hotel in Ramat Gan, a first-class hotel which also
has sports facilities available gratis for the Symposium participants.
The Symposium will take place at the University, which is a short ride,
or a half-hour walk, from the hotel. The room rate is $44 single or
$54 double (including breakfast). Reservations must be made DIRECTLY
WITH THE AGENT
Sharon Tours, Attn: Ms. Dennis, P.O.Box 2605, Ramat Gan, Israel
Tel: 972-3-738144 FAX: 972-3-724365
mentioning the Bar-Ilan Symposium.
To allow the organizers to reserve sufficient lecture room space,
please fill in and return this portion of the form to
Dr. Ariel Frank, BISFAI-89 Organizing Chair
Department of Mathematics and Computer Science
Bar-Ilan University, Ramat Gan, ISRAEL
(email: ariel@bimacs.bitnet)
________________________________________________________________
****** PLEASE RETURN THIS FORM *********
Name: ________________________________________________________
Affiliation: _________________________________________________
Address: _____________________________________________________
Electronic mail: ____________________________________________
_____ I will attend the Bar-Ilan Symposium June 19-21, 1989
_____ Please send me the third announcement in May 1989.
I do / do not plan to submit a paper.
∂06-Mar-89 1124 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Crypto '89 -- Final Call for Papers
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 6 Mar 89 11:24:41 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA20810; Mon, 6 Mar 89 11:22:20 -0800
Message-Id: <8903061922.AA20810@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Mon, 6 Mar 89 11:22:26 PST
Received: by BYUADMIN (Mailer R2.01A) id 7165; Mon, 06 Mar 89 12:15:39 MST
Date: Mon, 6 Mar 89 12:10:10 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
"Kevin S. McCurley" <MCCURLEY%ALMVMA.BITNET@forsythe.stanford.edu>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: "Kevin S. McCurley" <MCCURLEY%ALMVMA.BITNET@forsythe.stanford.edu>
Subject: Crypto '89 -- Final Call for Papers
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
CRYPTO '89
FINAL CALL FOR PAPERS
This is the FINAL call for papers for the IACR conference CRYPTO '89.
If you intend to submit a paper, please read carefully the instructions
below. In particular, let me emphasize that the STRICT deadline is
March 17. By that time, I must have your submission(s) ON MY DESK.
For more detail, read the instructions below. If you must use a private
courier (Federal Express or the like), please use the following address,
NOT the one in the call for papers:
Gilles Brassard
Crypto '89 Program Chairperson
Departement IRO (computer science)
Pavillon principal, V-240
Universite de Montreal
2900 Edouard-Montpetit
Montreal, Quebec
Canada H3C 3J7
telephone: (514)343-6807
Please take account of the cover page for facilitating blind refereeing
and of the length limit on submissions (although there is no limit on the
length of a clearly marked appendix). If you have questions, it is best
to ask them via electronic mail.
I am looking forward to receiving your best work.
--------------------------------------------------------------------
CRYPTO '89
CALL FOR PAPERS
The Ninth Annual Crypto Conference sponsored by the International
Association for Cryptologic Research (IACR) in cooperation with the
IEEE Computer Society Technical Committee on Security and Privacy, and
the Computer Science Department of the University of California, Santa
Barbara, will be held on the campus of the University of California,
Santa Barbara, on August 20-24, 1989. Original research papers and
technical expository talks are solicited on all practical and
theoretical aspects of cryptology. It is anticipated that some talks
may also be presented by special invitation of the Program Committee.
In particular, I am very pleased to announce that David Kahn has
accepted to give an invited talk.
INSTRUCTIONS FOR AUTHORS: Authors are requested to send ten copies of
a detailed abstract (not a full paper) by March 17, 1989, to the
Program Chairperson at the address given below. Abstracts should
contain sufficient detail, as well as references to and comparisons
with relevant extant work, to enable Program Committee members to
appreciate their merits. It is recommended that abstracts start with a
succinct statement of the problem and discussion of its significance
and relevance to cryptology, appropriate for a non-specialist reader.
In order to facilitate blind refereeing, the names of authors and
their affiliations should only appear on the cover page of the paper;
it should be possible to remove this page and send the papers to
Program Committee members. Limits of 10 double-spaced pages and 2500
words (not counting the bibliography and the cover page) are placed on
all abstracts. If the authors believe that more details are essential
to substantiate the main claims of the paper, they are asked to
include a clearly marked appendix that will be read at the discretion
of the Program Committee. Abstracts that significantly deviate from
these guidelines risk rejection without consideration of their merits.
Abstracts received after the March 17 deadline WILL NOT BE
CONSIDERED, unless they are postmarked not later than March 13 and
arrive a reasonable time thereafter. Authors will be informed of
acceptance or rejection in a letter mailed not later than May 26.
A compilation of all abstracts accepted will be available at the
conference. Authors of accepted papers will be given until July 14,
1989 to submit revised abstracts for this compilation. Complete
conference proceedings will be published in Springer-Verlag's Lecture
Notes in Computer Science series at a later date. The Program
Committee will consider abstracts that have also been submitted to
other conferences. However, if a submission is accepted for
presentation at more than one conference, the authors may present the
results more than once, but may publish them in at most one
proceedings.
The Program Committee consists of
Josh Benaloh (University of Toronto)
Russell Brand (Special session chairperson, Lawrence Livermore Laboratory)
Gilles Brassard (Committee chairperson, Universite de Montreal)
Claude Crepeau (Massachusetts Institute of Technology)
Whitfield Diffie (Bell Northern Research)
Joan Feigenbaum (AT&T Bell Laboratories)
James Massey (ETH Zentrum, Zurich)
Jim Omura (Cylink Corporation)
Gustavus Simmons (Sandia National Laboratories)
Scott Vanstone (University of Waterloo)
Send abstracts to the For other information,
program chairperson: contact the general chairman:
---------------------------- ---------------------------
Gilles Brassard, Crypto '89 Kevin McCurley
Departement IRO IBM Research, K53/802
Universite de Montreal 650 Harry Road
C.P. 6128, Succursale ``A'' San Jose, CA 95120-6099
Montreal (Quebec) U.S.A.
CANADA H3C 3J7 telephone: (408) 927-1708
telephone: (514) 343-6807 Internet: mccurley@ibm.com
email: brassard@iro.umontreal.ca Bitnet: mccurley@almvma
DO NOT USE THIS ADDRESS WITH
PRIVATE COURIER -- SEE ABOVE
-------------------------------------------------------------------------
∂06-Mar-89 1130 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Re: Cryptography textbook
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 6 Mar 89 11:29:55 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA21439; Mon, 6 Mar 89 11:27:14 -0800
Message-Id: <8903061927.AA21439@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Mon, 6 Mar 89 11:25:38 PST
Received: by BYUADMIN (Mailer R2.01A) id 7285; Mon, 06 Mar 89 12:16:39 MST
Date: Mon, 6 Mar 89 12:31:03 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Lawrie Brown <munnari!cs.adfa.oz.au!lpb@UUNET.UU.NET>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Lawrie Brown <munnari!cs.adfa.oz.au!lpb@UUNET.UU.NET>
Subject: Re: Cryptography textbook
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
beigel@CRABCAKE.CS.JHU.EDU:
> Can anyone recommend a textbook for a senior/1st-year-grad level
> course on cryptography?
The following book has just been published by Prentice-Hall
Australia, US & Europe:
Cryptography: An Introduction to Computer Security
by J. Sebbery & J. Pieprzyk. Prentice-Hall 1989.
To help you gauge your interest in the book, appended below are the
cataloging details and the Table of Contents.
----------------------------------------------------------------
Library of Congress
Cataloguing-in-Publication Data
----------------------------------------------------------------
Seberry, Jennifer, 1944-
Cryptography: an introduction to computer security/by Jennifer
Seberry and Josef Pieprzyk.
p. cm
Bibliography:p.
ISBN 0-13-194986-1
1. Computers - Access control. 2. Cryptography.
I. Pieprzyk, Josef, 1949- .II. Title.
QA76.9.A25S37 1988
005.8 - dc19 87-27026
CIP
----------------------------------------------------------------
CONTENTS
========
Preface
Chapter 1. Introduction
Chapter 2. Background theory
2.1 Mathematical methods
2.2 Complexity theory
2.3 Complexity of selected problems used in cryptology
2.4 Information theory
Chapter 3. Encryption methods of information protection
3.1 Classical ciphers
3.2 Symmetric algorithms and DES
3.3 Asymmetric algorithms or public key cryptosystems
Chapter 4. Authentication methods
4.1 Elementary methods of message authentication
4.2 Subliminal channel
4.3 Digital signatures
4.4 Other authentication techniques
4.5 Summary
Chapter 5. Cryptography in computer network security
5.1 Information protection in computer networks
5.2 Key management issues
5.3 Electronic funds transfer (EFT)
5.4 Summary
Chapter 6. Application of cryptography in databases
6.1 Database model
6.2 Crytographic transformation preserving data structure
6.3 Application of cryptography to protection of information
during processing
6.4 Privacy homomorphisms
6.5 Summary
Chapter 7. Other cryptographic techniques
7.1 Linear feedback shift registers
7.2 One-way ciphers and passwords
7.3 Smart cards and information cards
7.4 Unforgeable ID cards using smart cards
7.5 Summary
Chapter 8. Security in operating systems
8.1 Access control in computer systems
8.2 Implementations of access control systems
8.3 Rationale for security evaluation classes
8.4 Summary
Chapter 9. Minimum knowledge systems
9.1 An introduction to the minimum knowledge concept
9.2 More on the Fiat-Shamir smart card protocol
9.3 Subliminal free verification using minimum knowledge
protocols
9.4 Conclusion
Appendix A
A.1 Frequencies of occurrences of characters in languages
A.2 Frequencies of occurrences of pairs of letters in languages
Appendix B
B.1 DES code
B.2 Key representation for DES
Appendix C
Vigenere, Beauford or Variant Beauford code
Bibliography
Index
------------------------------------------------------------
Apparently Prentice-Hall US, have had problems obtaining this book.
It IS OUT, and Prentice-Hall Australia have substantial stocks of it.
So if you have problems obtaining it from Prentice-Hall US, contact:
The Marketing Dept.
Prentice Hall Australia
PO Box 151
Brookvale. NSW 2100
Australia
Phone: +61 2 938 1830
Fax: +61 2 938 6826
Regards
Lawrie Brown.
∂06-Mar-89 1133 X3J13-mailer Re: KMP's personal comments on 22-Feb-89 Character Proposal
Received: from NSS.Cs.Ucl.AC.UK by SAIL.Stanford.EDU with TCP; 6 Mar 89 11:32:45 PST
Received: from aiai.edinburgh.ac.uk by NSS.Cs.Ucl.AC.UK via Janet with NIFTP
id aa02296; 6 Mar 89 18:55 GMT
Date: Mon, 6 Mar 89 19:22:51 GMT
Message-Id: <19790.8903061922@subnode.aiai.ed.ac.uk>
From: Jeff Dalton <jeff%aiai.edinburgh.ac.uk@NSS.Cs.Ucl.AC.UK>
Subject: Re: KMP's personal comments on 22-Feb-89 Character Proposal
To: Kent M Pitman <KMP@scrc-stony-brook.arpa>, Baggins@ibm.com
In-Reply-To: Kent M Pitman's message of Fri, 3 Mar 89 15:17 EST
Cc: X3J13@sail.stanford.edu
> - Is $ really what is replaced by the British pound sign on British
> displays? I had always thought that # was what was replaced.
It is often the case that hash is replaced by the british pound sign.
For example, I soon learned to recognize L'(lambda ...). Indeed,
ASCII-based systems (machines, terminals, etc) seem to do this,
though some other things (ICL 1900 series machines, say) may replace
dollar sign with pound.
-- Jeff
∂06-Mar-89 1322 X3J13-mailer Re: minor comments on letter ballot material
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 6 Mar 89 13:22:47 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 551534; Mon 6-Mar-89 16:19:23 EST
Date: Mon, 6 Mar 89 16:18 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: Re: minor comments on letter ballot material
To: Gregor.pa@Xerox.COM, chapman%aitg.DEC@decwrl.dec.com
cc: x3j13@SAIL.STANFORD.EDU, skona%csilvax@hub.ucsb.edu
In-Reply-To: <19890302024559.5.GREGOR@SPIFF.parc.xerox.com>
Message-ID: <19890306211857.5.MOON@EUPHRATES.SCRC.Symbolics.COM>
Line-fold: No
Date: Wed, 1 Mar 89 18:45 PST
From: Gregor.pa@Xerox.COM
Date: Wed, 1 Mar 89 18:22 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Here's a suggestion from one of our CLOS implementors. Would this
change (adding the word "affected") require a vote?
Page 2-9 Redefining Classes
Updating such an instance occurs at an implementation-dependent time,
but no later than the next time a slot of that instance is read or written.
I think I'd prefer if this said:
Updating such an instance occurs at an implementation-dependent time,
but no later than the next time an affected slot of that instance is
read or written.
I (Moon again) think this is a good idea.
This change makes it impossible for people to use MAKE-INSTANCES-OBSOLETE
to arrange for any future access to the slots of an instance to trap.
One of the reasons we gave for not adding an instance enumeration
mechanism was the availability of this functionality. So, I don't think
we should make this change.
We could say that MAKE-INSTANCES-OBSOLETE "affects" all the slots, rather
than saying that it "affects" none of the slots. However, I'm willing to
just drop the issue.
∂06-Mar-89 1348 X3J13-mailer Feb. 21 Letter Ballot: editorial issues
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 6 Mar 89 13:48:15 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 551584; Mon 6-Mar-89 16:45:08 EST
Date: Mon, 6 Mar 89 16:44 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: Feb. 21 Letter Ballot: editorial issues
To: chapman%aitg.DEC@decwrl.dec.com
cc: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
In-Reply-To: <8902211607.AA09708@decwrl.dec.com>
Message-ID: <19890306214441.8.MOON@EUPHRATES.SCRC.Symbolics.COM>
This is the official response of Symbolics to the Feb 21 1989
letter ballot on Common Lisp editorial issues.
________________________________________________________________________
Issue or section name | Version | Y | I | A |
------------------------------------------------------------------------
CUT-OFF-DATES | 4 | Y | | |
------------------------------------------------------------------------
ERROR-TERMINOLOGY | 5 | | I | |
------------------------------------------------------------------------
FONTS | 2 | Y | | |
------------------------------------------------------------------------
TOC | 1 | Y | | |
------------------------------------------------------------------------
Section 1.8 | 5.8 | | I | |
------------------------------------------------------------------------
Section 2.3 | 5.8 | | I | |
------------------------------------------------------------------------
Section 2.4 | 5.8 | | I | |
------------------------------------------------------------------------
Section 2.5 | 5.8 | | I | |
------------------------------------------------------------------------
Section 6.1 | 5.8 | | I | |
------------------------------------------------------------------------
Accompanying comments:
ERROR-TERMINOLOGY: The version included with the ballot is inadequate
(details criticisms in comments mailed earlier from Moon and from Pitman).
The more recent draft mailed out by Gabriel is better. We intend to
vote yes when we see a draft that is precise, self-consistent, and
doesn't contain examples that contradict the rest of the definition of
Common Lisp; we believe the most recently mailed draft is quite close to
that and would be surprised not to see an acceptable draft at the March
meeting.
The five numbered sections: We approve these in principle, but aren't
ready to cast them in concrete. We haven't had time to review them with
the extreme care warranted for a language standard, and don't know who
else, if anyone, has reviewed them that thoroughly. We intend to vote
yes when we know that these have been reviewed with good judgement and
attention to detail, or if informed that voting yes does not mean that
these sections will be put into the standard without permitting an
opportunity for further review and correction.
∂06-Mar-89 1355 X3J13-mailer minor comments on letter ballot material
Received: from lucid.com by SAIL.Stanford.EDU with TCP; 6 Mar 89 13:55:10 PST
Received: from challenger ([192.9.200.17]) by heavens-gate.lucid.com id AA02303g; Mon, 6 Mar 89 13:46:42 PST
Received: by challenger id AA25811g; Mon, 6 Mar 89 13:41:55 PST
Date: Mon, 6 Mar 89 13:41:55 PST
From: Patrick Dussud <dussud@lucid.com>
Message-Id: <8903062141.AA25811@challenger>
To: Moon@STONY-BROOK.SCRC.Symbolics.COM
Cc: Gregor.pa@Xerox.COM, chapman%aitg.DEC@decwrl.dec.com,
x3j13@SAIL.STANFORD.EDU, skona%csilvax@hub.ucsb.edu
In-Reply-To: David A. Moon's message of Mon, 6 Mar 89 16:18 EST <19890306211857.5.MOON@EUPHRATES.SCRC.Symbolics.COM>
Subject: minor comments on letter ballot material
Date: Mon, 6 Mar 89 16:18 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Line-Fold: No
This change makes it impossible for people to use MAKE-INSTANCES-OBSOLETE
to arrange for any future access to the slots of an instance to trap.
One of the reasons we gave for not adding an instance enumeration
mechanism was the availability of this functionality. So, I don't think
we should make this change.
We could say that MAKE-INSTANCES-OBSOLETE "affects" all the slots, rather
than saying that it "affects" none of the slots. However, I'm willing to
just drop the issue.
I think it's hard to do. It is specified that class redefintion will call
make-instances-obsolete. So all the slots would be affected whenever a class
redefinition makes the instances obsolete.
We could do it by changing make-instances-obsolete to take a list of slots to
mark as affected.
Patrick.
∂06-Mar-89 1435 @Score.Stanford.EDU:andy@Gang-of-Four.Stanford.EDU CS student vote on William A. Brown's Statement
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 6 Mar 89 14:35:36 PST
Received: from Gang-of-Four.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Mon 6 Mar 89 14:32:15-PST
Received: by Gang-of-Four.Stanford.EDU (5.59/25-eef) id AA08059; Mon, 6 Mar 89 14:34:50 PST
Date: Mon, 6 Mar 89 14:34:50 PST
From: Andy Freeman <andy@Gang-of-Four.Stanford.EDU>
Message-Id: <8903062234.AA08059@Gang-of-Four.Stanford.EDU>
To: hk.dxk@forsythe, hk.grh@forsythe, s.street@macbeth, gq.vvn@forsythe,
g.gorin@macbeth, hk.ixb@forsythe, hk.jjs@forsythe, hk.rwb@forsythe,
siegman@sierra, cr.apc@forsythe, faculty@score
Subject: CS student vote on William A. Brown's Statement
I received 19 votes from CS students opposing William A. Brown's
statement; no one, not even students in other departments, supported
WAB's statement. (A couple of EE students voted against WAB's
statement, but I did not count their votes.)
I took this vote because I agreed with WAB that his statement should
be given the same respect that Oren's statement was. I am forwarding
the result of the vote to those people who received WAB's statment.
For those of you who care about such things, as near as I can tell,
WAB is not a CS student. (He isn't in CS. I think that MIS students,
who are in an interdisciplinary program adminstered by the Med School,
can be considered CS students, but he isn't in that program either.)
In the middle of last week I asked him to clarify his standing to
speak as a CS student, but he has not bothered to reply.
-andy
∂06-Mar-89 1449 X3J13-mailer Re: cs proposal and straw vote
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 6 Mar 89 14:49:36 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 551645; Mon 6-Mar-89 17:44:45 EST
Date: Mon, 6 Mar 89 17:44 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: Re: cs proposal and straw vote
To: Sandra J Loosemore <sandra%defun@cs.utah.edu>, baggins@ibm.com
cc: x3j13@sail.stanford.edu
In-Reply-To: <8903021757.AA03241@defun.utah.edu>
Message-ID: <19890306224429.9.MOON@EUPHRATES.SCRC.Symbolics.COM>
Date: Thu, 2 Mar 89 10:57:40 MST
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
....
Why do we need CHAR-CODE-LIMIT, CODE-CHAR, and CHAR-CODE anyway?
While bits and fonts were in the standard, these were useful for
things like creating a character with the same code but different bits
or font attributes, but now that's out. If we want a function to use
for hashing characters, that's what CHAR-INT is for. The only other
use I can think of is supporting iteration over characters, and it
seems like this could be extremely inefficient in implementations that
support user-defined character sets. (In such a case, I would imagine
that one would make CHAR-CODE-LIMIT correspond to the limit imposed by
the representation, perhaps the same as MOST-POSITIVE-FIXNUM, but in
actual practice, very few of those codes would have corresponding
characters.) I agree with Dan that we'd be better off having a
specialized iterator.
You left out the most obvious use, which is associating data of some
sort with characters by making an array indexed by char-code. I agree
that this will not be practical in implementations where CHAR-CODE-LIMIT
is very large.
I didn't really understand Dan's suggestion for a specialized iterator,
since in one paragraph he said it was premature to put in character
registries, then in the next paragraph he said there should be an
iterator that takes a character registry and executes the body for
each character in that registry.
I think that the char-code stuff needs to be retained to ease the writing
of applications that are portable between implementations with different
sets of implementation-defined character attributes. However, I would
probably not object strenuously to the removal of the char-code stuff
(I can't promise; I'd have to check with other Symbolians first) since
it could become an implementation-dependent extension.
Should we consider extending MAKE-STRING-OUTPUT-STREAM to take an
:ELEMENT-TYPE keyword?
That seems like a good idea. WITH-OUTPUT-TO-STRING also. An idea which
I slightly prefer is that WITH-OUTPUT-TO-STRING when no string argument
is provided and MAKE-STRING-OUTPUT-STREAM produce a stream that accepts
all characters and returns a string of some element-type that
accomodates all the characters that were actually output. This reflects
Symbolics current practice.
In fact Symbolics Genera will also widen a base-string provided as a
string argument to WITH-OUTPUT-TO-STRING into a general-string if
necessary. If we wanted to put that into the standard, that would be
great as the user would never have to worry about the element-type,
however if other implementors object I won't push it.
∂06-Mar-89 1453 X3J13-mailer Re: cs proposal comments
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 6 Mar 89 14:53:45 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 551649; Mon 6-Mar-89 17:51:21 EST
Date: Mon, 6 Mar 89 17:51 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: Re: cs proposal comments
To: David N Gray <Gray@DSG.csc.ti.com>, Thom Linden <baggins@IBM.com>
cc: x3j13@sail.stanford.edu
In-Reply-To: <2813859524-5211323@Kelvin>
Message-ID: <19890306225107.0.MOON@EUPHRATES.SCRC.Symbolics.COM>
Date: Thu, 2 Mar 89 13:38:44 CST
From: David N Gray <Gray@DSG.csc.ti.com>
> >> Never mind that; the real question is why do you want the standard to not
> >> specify the meaning of tabs and form-feeds in source files?
> >>
> I don't have my CLtL with me but I don't think a meaning is given
> to the semi-standard characters (unless we consider them self defining?)
I'm talking about page 336 of CLtL which specifies that the reader treats
#\TAB and #\PAGE as whitespace. Section A.22.1.1 of the February 21 document
specifies deleting the mention of these.
I think I saw several messages complaining about this. I think it would
actually be okay to remove the semi-standard characters, and that this would
not mean that portable programs could not be written with tabs and form-feeds.
It's already the case that when porting a program between implementations one
may have to do character set translation on the source text of the program.
When porting to an implementation that does not have tab or formfeed (which
is already legal), the character set translation must change those into
spaces, or something.
On the other hand, a nice thing about CLtL is the way it said that an
implementation doesn't have to support tabs, but if it does have tabs,
this is how they should work. Thus the programmer can rely on having
only two tab stories to deal with: either tabs work as some amount of
whitespace, or there aren't any tabs at all. Thus it might make sense
to retain these characters with the same semi-standard status. I don't
see how doing that would harm the rest of the characters proposal.
Since it says somewhere that implementations are allowed to support only
a subset of a registry, it would be valid to support only a subset of
the control-characters registry (format-effectors might be a better
name).
∂06-Mar-89 1506 BSCOTT@Score.Stanford.EDU Univ. Travel Task Force
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 6 Mar 89 15:06:31 PST
Date: Mon 6 Mar 89 15:01:52-PST
From: Betty Scott <BSCOTT@Score.Stanford.EDU>
Subject: Univ. Travel Task Force
To: Faculty@Score.Stanford.EDU
cc: BScott@Score.Stanford.EDU
Message-ID: <12475946665.18.BSCOTT@Score.Stanford.EDU>
V.P. Bill Massy has created a University Task Force to evaluate the perform-
ance of American Express over the past four years. The contract expires this
fall. Ken Down is the SOE representative on the Task Force, and has asked
me to gather CS input on the following:
1. Do you use American Express Travel Agency?
2. If you do, please comment on the quality of service you receive from
American Express.
3. How do you rate the quality of Stanford's internal processing of expense
reports and reimbursements?
4. Please list strengths and weaknesses of the current "preferred" (American
Express) agency, corporate charge card and related travel policies.
Your comments will affect the ultimate decision of whether to retain American
Express or to solicit applications from others to become Stanford's pre-
ferred agency. We will appreciate hearing from you by Friday, March 10.
Be assured that anonymity will be maintained.
Thanks very much in advance.
Betty
-------
∂06-Mar-89 1512 BSCOTT@Score.Stanford.EDU American Express
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 6 Mar 89 15:12:04 PST
Date: Mon 6 Mar 89 15:03:11-PST
From: Betty Scott <BSCOTT@Score.Stanford.EDU>
Subject: American Express
To: Faculty@Score.Stanford.EDU
cc: BScott@Score.Stanford.EDU
Message-ID: <12475946905.18.BSCOTT@Score.Stanford.EDU>
Sorry, I forgot. Please send your comments/responses to me.
Thanks,
Betty
-------
∂06-Mar-89 1527 misha@polya.Stanford.EDU AFLB tomorrow!
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 6 Mar 89 15:27:50 PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA10001; Mon, 6 Mar 89 15:24:03 -0800
Date: Mon, 6 Mar 89 15:24:03 -0800
From: Michael Kharitonov <misha@polya.Stanford.EDU>
Message-Id: <8903062324.AA10001@polya.Stanford.EDU>
To: aflb-all@polya.Stanford.EDU
Subject: AFLB tomorrow!
Next AFLB is tomorrow, March 7, at 4:15 in room 352.
Completeness results for two-party cryptographic protocols.
By Mr. Joe Kilian
This paper will survey recent work in proving completeness results for
two-party protocols. Joe will primarily discuss work he has done with
Ben-Or, Crepeau, Goldwasser, Nisan, and Wigderson.
The goal of this research is to develop an understanding of the
cryptographic power of simple protocols, and to apply this knowledge
to remove or weaken cryptographic assumptions. One of the early
results in this area says that if one can implement a simple protocol,
known as oblivious transfer, then one can implement some very general
two-party games. Machinery has also been developed to show
completeness results for other ``protocols,'' such as an ideal noisy
channel. Applications of this research have been applied to the study
of multi-prover interactive proof systems, bounded interaction
zero-knowledge, space-bounded automata, efficient zero-knowledge
protocols for NP, and weakening the cryptographic assumptions necessary
for secure circuit evaluation.
∂06-Mar-89 1538 X3J13-mailer Re: cs proposal and straw vote
Received: from multimax.encore.com by SAIL.Stanford.EDU with TCP; 6 Mar 89 15:37:53 PST
Received: from mist.encore.COM by multimax.encore.com with SMTP (5.61/25-eef)
id AA12950; Mon, 6 Mar 89 18:35:51 -0500
Received: from localhost by mist. (4.0/SMI-4.0)
id AA15870; Mon, 6 Mar 89 18:33:59 EST
Message-Id: <8903062333.AA15870@mist.>
To: "David A. Moon" <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Cc: x3j13@sail.stanford.edu
Subject: Re: cs proposal and straw vote
In-Reply-To: Your message of Mon, 06 Mar 89 17:44:00 -0500.
<19890306224429.9.MOON@EUPHRATES.SCRC.Symbolics.COM>
Date: Mon, 06 Mar 89 18:33:55 EST
From: Dan L. Pierson <pierson@mist.encore.com>
Date: Mon, 6 Mar 89 17:44 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
I didn't really understand Dan's suggestion for a specialized iterator,
since in one paragraph he said it was premature to put in character
registries, then in the next paragraph he said there should be an
iterator that takes a character registry and executes the body for
each character in that registry.
It's actually very simple. I have doubts about putting registries in
at all, but IF we do decide to put them in there should be a way to
iterate over them.
∂06-Mar-89 1627 X3J13-mailer cs proposal straw vote
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 6 Mar 89 16:27:30 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 551767; Mon 6-Mar-89 19:23:38 EST
Date: Mon, 6 Mar 89 19:23 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: cs proposal straw vote
To: Thom Linden <baggins@IBM.com>
cc: Common Lisp mailing <x3j13@sail.stanford.edu>
In-Reply-To: <890222.120815.baggins@almvma>
Message-ID: <19890307002320.4.MOON@EUPHRATES.SCRC.Symbolics.COM>
This is the official response from Symbolics to the 22 Feb 89
straw vote on the characters proposal.
The format in which this was presented makes it very difficult to
know what we're voting on. Fortunately, it's only a straw poll.
However, you need to be aware that we had to guess what exactly
we're voting on, and so the results of the straw poll might not
be too meaningful, if different participants made different guesses.
I would strongly suggest casting this material into a precise
and unambiguous form before the binding vote occurs. That could
save a great deal of discussion time and minimize the possibility
of perfectly good language features being voted down simply because
of the way they were presented. It's especially important not to
retain the current format, where things are discussed in three places
(the body of the proposal, the appendix, and the ballot) and the
three places contradict each other in significant ways.
Issue: CHAR-FONT-UNUSED-CHAR-BITS-NONPORTABLE
Yes. We will want to check the p.29 rules for implementation-dependent
character attributes carefully.
Issue: CHAR-INT-ONLY-USEFUL-WHEN-ATTRIBUTES-SUPPORTED
No. CHAR-INT is needed for hashing. CHAR-INT should be retained, but
INT-CHAR and its shadow in the COERCE function should be removed.
This issue is unrelated to the apparent primary goal of the proposal.
Issue: CHARACTER-TYPE-RESTRICTIVEC
Define BASE-CHARACTER as a subtype of STRING.
No. Yes to BASE-CHARACTER as a subtype of CHARACTER.
Standard characters are a subset of the base
characters.
Yes.
STANDARD-CHAR type is replaced by (CHARACTER :STANDARD)
No. Keep STANDARD-CHAR. A change here is unnecessary for the rest of
the proposal. Adding (CHARACTER :STANDARD) would be okay, not adding it
would also be okay.
Remove the semi-standard characters.
No. A change here is unnecessary for the rest of the proposal.
Issue: STRING-TYPE-RESTRICTIVE
Define STRING as a union type
Yes
STRING used as a type specifier for object creation
means (VECTOR CHARACTER)
Yes
All string functions operate as specified on any
string object except it is an error to insert
an extended character into a base string.
Yes. This is already required by the requirement on storing
into arrays in general.
Extend the COERCE function to allow coercion from
base string to extended string.
No, this feature is already present in CLtL, since any sequence
type can be coerced to any other sequence type.
Issue: STRING-TYPE-ABBREVIATIONS
Yes.
Issue: SIMPLE-STRING-TYPE-RESTRICTIVE
Define SIMPLE-STRING as a union type
Abstain. We want to understand the consequences of this better,
vis a vis the alternative of defining SIMPLE-STRING as a
particular type, either (AND SIMPLE-ARRAY GENERAL-STRING)
or (AND SIMPLE-ARRAY BASE-STRING).
Define SIMPLE-STRING as a type specifier for object
creation means (SIMPLE-ARRAY CHARACTER (size))
Depends on the outcome of the previous.
Issue: SIMPLE-STRING-TYPE-ABBREVIATIONS
Add SIMPLE-BASE-STRING
Add SIMPLE-GENERAL-STRING
Depends on the outcome of the previous. This is getting to
be too many names.
Issue: FILE-EXTERNAL-REPRESENTATION
Add :EXTERNAL-CODED-CHARACTER-FORMAT keyword to OPEN
Approved in principle, but the name is too long.
Issue: CHAR-CODE-NON-PORTABLE
Add CHAR-CCS-VALUE function
Approved in principle, but the name is too long, uses an unmotivated
abbreviation "ccs", and is not consistent with the name of the OPEN
keyword. Although they don't do exactly the same thing (the OPEN
keyword can specify multiple coded character sets and a protocol
for switching among them), they are related enough that the names
should express their relation.
This issue is unrelated to the apparent primary goal of the proposal.
For both of the above, the main naming problem seems to be to keep
clear the distinction between these and CHAR-CODE. How about
CHAR-EXTERNAL-CODE for the function name and :EXTERNAL-CODE for
the OPEN keyword? These aren't the best names in the world, but
they are an improvement, maybe someone else can think of something
better.
Also this seems to be an incomplete set of facilities. Conversion
of characters to external codes is provided, but not the inverse.
Conversion between internal and external encodings is bundled with
stream I/O, but not available on its own; there could be functions
that convert a string to/from a vector of integers under a specified
"external-coded-character-format".
Issue: STRING-BINARY-WIDTH
Add EXTERNAL-CODED-STRING-LENGTH function
No. The meaning of what this returns is too implementation-dependent
and the need for this has not been shown. If this is retained, the name
should be consistent with the names of the preceding two facilities.
This issue is unrelated to the apparent primary goal of the proposal.
Issue: CHARACTER-IDENTIFICATION-NONPORTABLE
Introduce the concept of Registries
We incline towards yes, except that the relation to ISO work has not
been made clear. In particular, how can registries be used before the
putative ISO committee is formed and completes its work?
Standardize on #\registry:id
Yes, assuming we guessed correctly what this was supposed to mean.
add all-implemented-registries
Add *ALL-CHARACTER-REGISTRY-NAMES* variable
Yes to one, no to the other. The second name is better.
Add FIND-CHAR function
Add CHAR-LABEL function
Add CHAR-REGISTRY-NAME function
Yes to these three.
New syntax for CHARACTER type specifier
New argument to CHARACTERP
No, the need for these has not been shown. Why not
call the CHAR-REGISTRY-NAME function?
New #\label:registry character name syntax
No, contradicts #\registry:id just above.
Is this issue unrelated to the apparent primary goal of the proposal?
That's the big question, isn't it? A more constructive way to put the
question is, how would a program make use of character registries to
access portably characters outside of the 96 characters that all Common
Lisp implementations must have? The proposal appears to be completely
silent on that point. We think we know how character registries would
actually be very useful for that. However, instead of counting on the
reader to guess the usefulness of character registries, the proposal
should contain some examples. If the character committee can't come up
with any examples, then perhaps character registries aren't really
needed.
∂06-Mar-89 1714 X3J13-mailer Review schedule reminder
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 6 Mar 89 17:13:56 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 551816; Mon 6-Mar-89 20:11:10 EST
Date: Mon, 6 Mar 89 20:10 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: Review schedule reminder
To: chapman%aitg.DEC@decwrl.dec.com
cc: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
In-Reply-To: <8902271052.AA15941@decwrl.dec.com>
Message-ID: <19890307011058.0.MOON@EUPHRATES.SCRC.Symbolics.COM>
Date: 27 Feb 89 05:31
From: chapman%aitg.DEC@decwrl.dec.com
Please let me know if you have any trouble accessing or reviewing this
information.
I am not equipped to do anything with the tex source files you've been
mailing out. So far I have been unable to open a network connection
to hudson.dec.com to access the dvi file.
∂06-Mar-89 1755 @Score.Stanford.EDU:marty@cis.Stanford.EDU Univ. Travel Task Force
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 6 Mar 89 17:48:31 PST
Received: from cis.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Mon 6 Mar 89 17:44:28-PST
Received: by cis.Stanford.EDU (5.59/inc-1.0)
id AA14078; Mon, 6 Mar 89 17:42:57 PDT
Date: Mon, 6 Mar 89 17:42:57 PDT
From: marty@cis.Stanford.EDU (Marty Tenenbaum)
Message-Id: <8903070142.AA14078@cis.Stanford.EDU>
To: BSCOTT@Score.Stanford.EDU
Cc: Faculty@Score.Stanford.EDU, BScott@Score.Stanford.EDU
In-Reply-To: Betty Scott's message of Mon 6 Mar 89 15:01:52-PST <12475946665.18.BSCOTT@Score.Stanford.EDU>
Subject: Univ. Travel Task Force
Betty, I dont use american express, but I have used Compass Pt. Travel
for years (they are Schlumbergers local official agency) and the
service is impeccable - always the cheapest fares, tickets hand delivered
etc. If you ever are in a position to choose an agency for the CS department,
check them out (owner is Ann Raphael, wife of AI pioneer Bert Raphael;
Schlumberger account manager is Phyllis Schiffman).
JMT.
∂07-Mar-89 0254 X3J13-mailer clarification
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 7 Mar 89 02:54:26 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
id AA06496; Tue, 7 Mar 89 02:52:25 PST
Message-Id: <8903071052.AA06496@decwrl.dec.com>
Received: by decwrl.dec.com (5.54.5/4.7.34)
for x3j13@sail.stanford.edu; id AA06496; Tue, 7 Mar 89 02:52:25 PST
From: chapman%aitg.DEC@decwrl.dec.com
Date: 7 Mar 89 05:47
To: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
Subject: clarification
In Symbolics' vote, Moon mentioned that he wasn't willing to vote on the
sections on the letter ballot because he was afraid they would be cast
in concrete. I should have made it more clear that these sections can
be changed, via clean-up, after they have been voted on.
I am trying to get incremental closure on the standard, just as one would
stop gratuitous changes on software being developed in a large system
a few modules at a time. That never means that the modules originally
"fixed" will not be subject to change if the whole system doesn't work!
Please do not be afraid to spend time reviewing these sections now and
commenting if there are problems. Even if the volume of reading looks
large, imagine how large it will look in a few months when you have
over 1000 pages to review.
Please review and vote!!!
kc
∂07-Mar-89 1011 STAGER@Score.Stanford.EDU Tau Beta Pi
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 7 Mar 89 10:10:58 PST
Date: Tue 7 Mar 89 10:06:41-PST
From: Claire Stager <STAGER@Score.Stanford.EDU>
Subject: Tau Beta Pi
To: instructors@Score.Stanford.EDU
cc: tas@Score.Stanford.EDU, sec@Score.Stanford.EDU, jimenez@Score.Stanford.EDU,
stager@Score.Stanford.EDU
Office: CS-TAC 29, 723-6094
Message-ID: <12476155072.17.STAGER@Score.Stanford.EDU>
Tau Beta Pi survey forms will be sent out to instructors this week. Tina
Jimenez is making up packets of blank forms, instruction sheets, pencils
and return envelopes for each class and will send them out via courier.
****************************************************************************
PLEASE RETURN THE COMPLETED SURVEY FORMS TO TINA JIMENEZ IN CS-TAC BY THE END
OF FINALS WEEK (MARCH 24).
****************************************************************************
Forms should be returned to Tina in the envelopes provided.
Questions can be directed to Tina at 3-0909, or Jimenez@Score.
Thanks.
Claire
-------
∂07-Mar-89 1011 debra@russell.Stanford.EDU REMINDER-EVENING SEMINAR
Received: from russell.Stanford.EDU by SAIL.Stanford.EDU with TCP; 7 Mar 89 10:11:25 PST
Received: from localhost by russell.Stanford.EDU (4.0/inc-1.0)
id AA06191; Tue, 7 Mar 89 10:12:44 PST
Message-Id: <8903071812.AA06191@russell.Stanford.EDU>
To: evesem@russell.Stanford.EDU
Cc: kuder@russell.Stanford.EDU, debra@russell.Stanford.EDU
Subject: REMINDER-EVENING SEMINAR
Date: Tue, 07 Mar 89 10:12:42 PST
From: Debra Alty <debra@russell.Stanford.EDU>
REMINDER
The next EVENING SEMINAR will be Wednesday, March 8th @ 7:30pm in the
CSLI Cordura Conference Room.
Professor Ellen Markman, Psychology Department, will be leading the
discussion.
The following will be served:
Shrimp cocktail Apricot Brandy
Cheese w/crackers Wine
Fresh fruit platter Beer
Baklava Sparkling Waters
Coffee
Tea
Debra
∂07-Mar-89 1126 emma@csli.Stanford.EDU CSLI Calendar correction
Received: from csli.Stanford.EDU by SAIL.Stanford.EDU with TCP; 7 Mar 89 11:26:30 PST
Received: by csli.Stanford.EDU (4.0/inc-1.0)
id AA11664; Tue, 7 Mar 89 10:57:43 PST
Date: Tue, 7 Mar 89 10:57:43 PST
From: emma@csli.Stanford.EDU (Emma Pease)
Message-Id: <8903071857.AA11664@csli.Stanford.EDU>
To: friends@csli.Stanford.EDU
Subject: CSLI Calendar correction
The CSLI Seminar originally scheduled for Tuesday, 7 March, at 4 has
been rescheduled for Thursday, 9 March, at 2:15.
We apologize for the late notice.
CSLI SEMINAR
Indexicality and Quantified Modal Logic
Harry Deutsch
Illinois State University
Thursday, 9 March, 2:15
Cordura Conference Room
Relations between recent philosophy of language and the semantics of
modality (possible worlds semantics) have not been good. I attempt to
mediate the dispute by formulating quantified modal logic (QML) so as
to incorporate some insights of the "new theory of reference" (NTR).
This sheds some new light on both QML and the NTR.
∂07-Mar-89 1207 HEMENWAY@Score.Stanford.EDU Reports Ready
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 7 Mar 89 12:07:52 PST
Date: Tue 7 Mar 89 12:05:14-PST
From: Sharon Hemenway <HEMENWAY@Score.Stanford.EDU>
Subject: Reports Ready
To: phd-adm@Score.Stanford.EDU
Message-ID: <12476176655.18.HEMENWAY@Score.Stanford.EDU>
We will have the reports for tomorrow's meeting ready by 2:00 this
afternoon, so please feel free to stop by if you would like a chance
to look them over before the meeting. They are in the same format as
the reports for the Round 1 meeting - a list by rank, an alpha list
and lists by rater.
Sharon
P.S. Just a reminder -- tomorrow's meeting is scheduled for 3:00 in
MJH 252.
-------
∂07-Mar-89 1334 X3J13-mailer hotel for march meeting
Received: from lucid.com by SAIL.Stanford.EDU with TCP; 7 Mar 89 13:34:03 PST
Received: from challenger ([192.9.200.17]) by heavens-gate.lucid.com id AA03677g; Tue, 7 Mar 89 13:27:16 PST
Received: by challenger id AA28084g; Tue, 7 Mar 89 13:22:41 PST
Date: Tue, 7 Mar 89 13:22:41 PST
From: Jan Zubkoff <jlz@lucid.com>
Message-Id: <8903072122.AA28084@challenger>
To: x3j13@sail.stanford.edu
Subject: hotel for march meeting
I have reserved rooms for X3J13 but it is up to you to make your personal
reservations.
---jan---
∂07-Mar-89 1342 @Score.Stanford.EDU:nilsson@Tenaya Thinking Machines
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 7 Mar 89 13:42:26 PST
Received: from Tenaya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Tue 7 Mar 89 13:38:19-PST
Received: by Tenaya.Stanford.EDU (NeXT-0.8/NeXT-0.8)
id AA00976; Tue, 7 Mar 89 13:36:01 PST
Date: Tue, 7 Mar 89 13:36:01 PST
From: nilsson@tenaya.Stanford.EDU (Nils Nilsson)
Message-Id: <8903072136.AA00976@Tenaya.Stanford.EDU>
To: faculty@score.Stanford.EDU
Subject: Thinking Machines
Thinking Machines has come out with some smaller
machines---and less expensive. Some people from TM
are coming to Stanford on March 13 and would be
willing to meet with interested parties to talk about the
new machines. I told them I would sample whether or
not there is interest. All who would like to attend the
meeting proposed below pls respond to Joyce Chandler
(chandler@polya) so she can respond to TM.
Thanks, -Nils
----------
Begin forwarded message:
From: palmer@think.com
To: nilsson@score.Stanford.EDU
Cc: palmer@think.com, goldberg@think.com
Subject: Thinking Machines
Robert Goldberg and I are tentatively scheduled to be at
Stanford at 11 a.m. on March 13. Please confirm with a
list of likely attendees. Thank you in advance for the
opportunity to present the architecture of the Connection
Machine.
John Palmer
∂07-Mar-89 1403 X3J13-mailer Agenda DRAFT
Received: from lucid.com by SAIL.Stanford.EDU with TCP; 7 Mar 89 14:03:22 PST
Received: from challenger ([192.9.200.17]) by heavens-gate.lucid.com id AA03717g; Tue, 7 Mar 89 13:56:36 PST
Received: by challenger id AA28137g; Tue, 7 Mar 89 13:52:01 PST
Date: Tue, 7 Mar 89 13:52:01 PST
From: Jan Zubkoff <jlz@lucid.com>
Message-Id: <8903072152.AA28137@challenger>
To: x3j13@sail.stanford.edu
Subject: Agenda DRAFT
X3J13 Committee Meeting Agenda DRAFT
March 28 - 30, 1989
Fairfax, VA
1 Call to Order, Tuesday, March 28, 9:00am
2 Opening Remarks and Introductions
- Opening Remarks, Bob Mathis (10 minutes)
- Introduction of attendees
- Future meetings, Jan Zubkoff (5 minutes)
3 Approval of Agenda
4 Approval of Minutes
5 Other Business
6 Cleanup Subcommittee Report, Larry Masinter
7 Coffee Break 10:30
8 Cleanup Subcommittee Report continuation
9 LUNCH 12:00
10 Cleanup Subcommittee Report continuation
11 Recess, 5:00pm
12 Call to Order, Wednesday, March 29, 9:00am
13 Character Subcommittee Report, Thom Linden (4 hours)
14 Coffee Break 10:30am
15 Character Subcommittee Report continuation
16 Lunch 12:00
17 Character Subcommittee Report continuation
18 Compiler Subcommittee Report, Sandra Loosemore (2 hours)
19 Break 3:00
20 Compiler Subcommittee Report continuation
21 Recess 5:00
22 Call to Order, Thursday, March 30, 9:00am
23 Editorial Subcommittee Report, Kathy Chapman (1.5 hours)
24 Coffee Break 10:30
25 Cleanup Subcommittee Report continuation
26 Lunch 12:00
27 Cleanup Subcommittee Report continuation
28 Break 3:00
29 Cleanup Subcommittee Report continuation
30 Adjournment 5:00pm
∂07-Mar-89 1427 @Score.Stanford.EDU:NA.PHL@Forsythe.Stanford.EDU Sunrise Club Breakfast
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 7 Mar 89 14:26:53 PST
Received: from Forsythe.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Tue 7 Mar 89 14:22:38-PST
Date: Tue, 7 Mar 89 12:34:10 PST
To: faculty@score
From: "Portia Leet" <NA.PHL@Forsythe.Stanford.EDU>
Subject: Sunrise Club Breakfast
NEXT SUNRISE CLUB:
Tuesday, March 28th
7:30 a.m.
Tresidder Union Oak Lounge West
SPEAKER:
Professor William Reynolds
The Donald W.Whittier Professor of Mechanical Engineering
TOPIC:
"Electronics and Optics in Thermoscientific Research"
If you plan to attend, please RSVP to Portia Leet 5-1585 or
na.phl@forsythe
To: SUNRISE
∂07-Mar-89 1429 X3J13-mailer registration list
Received: from lucid.com by SAIL.Stanford.EDU with TCP; 7 Mar 89 14:29:22 PST
Received: from challenger ([192.9.200.17]) by heavens-gate.lucid.com id AA03769g; Tue, 7 Mar 89 14:22:28 PST
Received: by challenger id AA28211g; Tue, 7 Mar 89 14:17:54 PST
Date: Tue, 7 Mar 89 14:17:54 PST
From: Jan Zubkoff <jlz@lucid.com>
Message-Id: <8903072217.AA28211@challenger>
To: x3j13@sail.stanford.edu
Subject: registration list
X3J13 Attendee Information
03/07/89
Name Institute Paid L1 L2 L3
David Bartley TI -0- y y y
Paul Beiser HP -0- y y y
Mary Boelk Johnson Controls, Inc. -0- y y y
Kathy Chapman DEC -0- - - -
Jeff Dalton University of Ediburgh -0- y y y
Patrick Dussud Lucid, Inc. -0- y y y
Dick Gabriel Lucid, Inc. -0- y y y
David Gray TI 50.00 y y y
Masayuki Ida Aoyama Gakuin University -0- y y
Gregor Kiczales Xerox Corp. -0- y y y
Dieter Kolb Siemans -0- y y y
Tim Koschmann Xerox -0- y y y
Aaron Larson Honeywell S&RC -0- y y y
Kevin Layer Franz, Inc. 50.00 y y y
Thom Linden IBM 50.00 y y y
David Loeffler MCC 50.00 y y y
Sandra Loosemore University of Utah -0- y y y
Barry Margolin Thinking Machines 50.00 y y y
Larry Masinter Xerox Corp. -0- y y y
Robert Mathis CONTEL -0- y y y
David Moon Symbolics -0- y y y
Cris Perdue Sun Microsystems -0- y y y
Dan Pierson Encore Computer -0- y y y
Kent Pitman Symbolics -0- y y y
Guy Steele Thinking Machines -0- y y y
Paul Tucker IBM -0- y y y
Walter van Roggen DEC -0- y y y
JonL White Lucid, Inc. -0- y y y
Jan Zubkoff Lucid, Inc. -0- y y y
∂07-Mar-89 1448 @Score.Stanford.EDU:wheaton@Athena.Stanford.EDU IBM RT
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 7 Mar 89 14:47:31 PST
Received: from Athena.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Tue 7 Mar 89 14:44:51-PST
Received: by Athena.Stanford.EDU (5.61/25-eef) id AA04765; Tue, 7 Mar 89 14:44:20 -0800
Date: Tue, 7 Mar 89 14:44:20 -0800
From: George S Wheaton <wheaton@Athena.Stanford.EDU>
Message-Id: <8903072244.AA04765@Athena.Stanford.EDU>
To: ac@score
Subject: IBM RT
Some time ago the department got some RT's that had been housed and used at
TAC. James Wilson brought them down here, used some in administrative
computing and gave some to faculty for research projects. We may now have
one extra machine. Does anyone out there need an RT? I'm not sure how to
decide who should get it if there are multiple requests - if anyone asked
and didn't receive one when they first arrived from TAC, please let me
know.
Be forewarned - this comes with no support, warranties, or gurantees, but
individuals have been installing upgrades and new releases on other
machines throughout the dept.
gw
∂08-Mar-89 0520 X3J13-mailer Issue: PLUS-ABNORMAL
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 8 Mar 89 05:20:36 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
id AA27193; Wed, 8 Mar 89 05:18:36 PST
Message-Id: <8903081318.AA27193@decwrl.dec.com>
Received: by decwrl.dec.com (5.54.5/4.7.34)
for x3j13@sail.stanford.edu; id AA27193; Wed, 8 Mar 89 05:18:36 PST
From: chapman%aitg.DEC@decwrl.dec.com
Date: 8 Mar 89 08:18
To: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
Subject: Issue: PLUS-ABNORMAL
Issue: PLUS-ABNORMAL
References: +, ++, +++ (p. 325)
Category: CLARIFICATION
Edit history: 1-MAR-89, Version 1 by Chapman
Problem Description:
The description of +, ++, and +++
does not mention the possibility of abnornal termination of
the evaluation of the variable {\tt +}.
Are the values associated with {\tt ++},
and {\tt +++} are updated?
Proposal (PLUS-ABNORMAL:UPDATE)
If the evaluation of the variable {\tt +} is aborted for some reason,
then the values associated with {\tt ++},
and {\tt +++} are updated.
Rationale:
This clarification is primarily to establish the contents of these
variables in all cases.
Current Practice:
VAX Lisp updates the values.
Adoption Cost:
?
Benefits:
Disambiguity.
Conversion Cost:
?
Aesthetics:
None.
Discussion:
∂08-Mar-89 0523 X3J13-mailer Issue: PLUS-ABNORMAL
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 8 Mar 89 05:22:59 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
id AA27292; Wed, 8 Mar 89 05:21:03 PST
Message-Id: <8903081321.AA27292@decwrl.dec.com>
Received: by decwrl.dec.com (5.54.5/4.7.34)
for x3j13@sail.stanford.edu; id AA27292; Wed, 8 Mar 89 05:21:03 PST
From: chapman%aitg.DEC@decwrl.dec.com
Date: 8 Mar 89 08:20
To: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
Subject: Issue: PLUS-ABNORMAL
Sorry about that. Disregard that last issue. It should have been sent
to cl-cleanup.
∂08-Mar-89 1023 STAGER@Score.Stanford.EDU Final Exams
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 8 Mar 89 10:23:51 PST
Date: Wed 8 Mar 89 10:17:15-PST
From: Claire Stager <STAGER@Score.Stanford.EDU>
Subject: Final Exams
To: instructors@Score.Stanford.EDU, bil@SUN.COM
cc: tas@Score.Stanford.EDU, stager@Score.Stanford.EDU
Office: CS-TAC 29, 723-6094
Message-ID: <12476419139.20.STAGER@Score.Stanford.EDU>
It's time again to start planning for final exams. (Refer to page 6
of the Winter Quarter Time Schedule if you have questions about Dead Week
policy, or what the examination schedule is.)
Please respond to the following by FRIDAY, MARCH 10:
1. Have you moved to a new room/time (and not let me know)? If so, where
and when are you meeting now?
2. Are you giving a take-home exam instead of an in-class exam?
Do you plan on giving a final exam this quarter?
3. Will you need additional space in order to provide alternate seating?
If so, how many TOTAL seats will you be requiring?
4. Are you giving an alternate exam in addition to your regularly scheduled
exam? If so what day/time, and what size of a room will you be needing?
Please Note:
"Classes starting at unusual times (e.g. 2:30pm or 2:45pm)hold exams in the
same time slots as classes starting at the regular time with the same hour
designation. So, the final examination in the examples above would be given
under the 2:15 time slot."
Contact me at Stager@Score, or 3-6094, if you have any questions.
Thanks.
Claire
-------
!
-------
∂08-Mar-89 1134 @Score.Stanford.EDU:nilsson@Tenaya faculty meeting
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 8 Mar 89 11:34:19 PST
Received: from Tenaya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Wed 8 Mar 89 11:31:15-PST
Received: by Tenaya.Stanford.EDU (NeXT-0.8/NeXT-0.8)
id AA02145; Wed, 8 Mar 89 11:28:59 PST
Date: Wed, 8 Mar 89 11:28:59 PST
From: nilsson@tenaya.Stanford.EDU (Nils Nilsson)
Message-Id: <8903081928.AA02145@Tenaya.Stanford.EDU>
To: ac@score.Stanford.EDU
Subject: faculty meeting
Cc: nilsson, wheaton@athena.Stanford.EDU, bscott@score.Stanford.EDU,
bureaucrat@polya.Stanford.EDU
The theory committee has requested a faculty meeting
of all faculty to hear their recommendations about new
appointments. In order to maximize Stanford's chances
of getting our preferred candidates and to meet the
University's schedule for making appointments, we need
to have this meeting next week. Again, I'm very sorry
for the short notice. I agree with those who said that
if we are to have meetings, let's at least have them on
the regularly scheduled day and time, which is
Tuesday at 2:30. So, we will have a faculty meeting
on Tuesday, March 14 at 2:30 in MJH 146, and letters on the preferred candidates
will be available from Betty Scott for reading ahead
of time.
We will finish the meeting in time for us to hear Michael
Dertouzos, Director of MIT's LCS, who will be the
colloquium speaker at 4:15 on Tuesday.
News items: Operations Research did approve offering
an appointment to Eva Tardos, but they approved only
1/4 billet----instead of 1/2. That means we will have
to ask the Provost for 3/4 of a billet (citing affirmative
action considerations)----which we are doing. Bernd
Sturmfels has informed Don Knuth that he probably will
accept an offer from Cornell instead of Stanford.
-Nils
∂08-Mar-89 1306 @Score.Stanford.EDU:golub@na-net.stanford.edu NSF visitor
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 8 Mar 89 13:06:09 PST
Received: from bravery.stanford.edu by SCORE.STANFORD.EDU with TCP; Wed 8 Mar 89 13:01:49-PST
Received: by bravery.stanford.edu (4.0/inc-1.5)
id AA10281; Wed, 8 Mar 89 13:14:42 PST
Date: Wed, 8 Mar 1989 13:14:36 PST
From: Gene H. Golub 415/723-3124 <golub@na-net.stanford.edu>
To: faculty@score.stanford.edu
Subject: NSF visitor
Message-Id: <CMM.0.88.605394876.golub@>
Kamal Abdali of NSF's Numeric and Symbolic Computing will be here on
March 28. Please let him know if you wish to see him.
Gene
---------------
Return-Path: <kabdali@note.nsf.gov>
Received: from argus.Stanford.EDU by patience.stanford.edu (4.0/inc-1.5)
id AA23145; Wed, 8 Mar 89 10:28:32 PST
Received: from note.NSF.GOV by argus.Stanford.EDU with TCP; Wed, 8 Mar 89 10:19:12 PST
To: golub@patience.Stanford.EDU
Subject: Visiting PIs
From: "S. Kamal Abdali" <kabdali@note.nsf.gov>
Date: Wed, 08 Mar 89 10:37:21 -0500
Sender: kabdali@note.nsf.gov
Message-Id: <8903081037.aa28449@note.nsf.gov>
(On the instructions of my government) I'm using the opportunity of a
conference attendence to make some site visits. I would like to visit
you sometime during the morning of 3/28. Could you please let me
know if this is convenient for you.
The main purpose is to visit PIs and prospective PIs. Of course, I'll
also be glad to meet anyone who is interested in the Numeric and Symbolic
Computation. If you have any colleagues who would like to see me during
this visit, please ask them to contact me.
∂08-Mar-89 1509 @Score.Stanford.EDU:berglund@polya.Stanford.EDU Ph.D. Student Meeting
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 8 Mar 89 15:09:39 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Wed 8 Mar 89 15:04:32-PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA21457; Wed, 8 Mar 89 15:04:41 -0800
Date: Wed, 8 Mar 89 15:04:41 -0800
From: Eric J. Berglund <berglund@polya.Stanford.EDU>
Message-Id: <8903082304.AA21457@polya.Stanford.EDU>
To: faculty@score, phd@score
Subject: Ph.D. Student Meeting
On Monday, March 6, a meeting was held of the Ph.D. students in our department.
It was advertised with the title "Extraordinary Ph.D. Student Meeting:
Problems in the Ph.D. Program--Real and Imagined", and was called by yours
truly, with the help of the CS student bureaucrats. I called it
"Extraordinary" because 1) we usually have only one meeting a quarter, and
2) I thought more people would show up. I was pleased with the turnout; I
think we had about 40 or 45 students there, enough to fill all the chairs
in 146 Jacks.
I had two main purposes for calling the meeting:
1. To demonstrate to myself and my fellow students that there are many
more students basically satisfied with the program than the last year's
worth of discussion would indicate.
2. To improve our recruiting efforts.
It isn't clear to me that I accomplished either one, though subsequent
unscientific sampling indicates that I didn't hurt my causes either.
I mention my motives now to indicate that I was not an unbiased, neutral
observer either during the meeting or since. If you've read my agenda
for the meeting (there's a copy at the end of this note), you'll note
that there were clues to my biases, but they were not obvious. Most students
attended the meeting, I believe, to be allowed to express their opinions
about improving the program, not to further my unannounced purposes.
In any case, I was hoping to find a student consensus about the program.
Obviously, there was more consensus on some issues than on others. One
of the least debated opinions was that I should be forced to write a
summary of the meeting for presentation to the faculty. Hence, this note.
(I am sending this note only to the phd@score and faculty@score mailing
lists, not to the phd-program bboard, which I understand is still accessible
to any USENET reader. I retain all copyright privileges I've got: please
ask my permission before distributing this further. I'm not interested
in publicizing my comments around the country.
(I don't know what to suggest for responses. People should use their
own judgment and conscience to decide what they want to post to bboard,
and what they want to clutter everyone's mailbox with, and what they
should keep to themselves. The bureaucrats talked about having another
student meeting to continue the discussion about two weeks from now.)
At the beginning of the meeting, I asked two questions. Their flaws are
obvious and were pointed out, but the results might still mean something.
Question 1 is whether our department overall is better than, worse than,
or approximately equal to those at CMU and MIT. The vote was about 5
betters, 5 worses, 10 sames, and 20 or more I-don't-know-or-I-think-the-
question-is-flaweds.
Question 2 is whether our department is improving, declining, or staying
about the same. We got about 6 improvings, 8 declinings, 10 staying sames,
and the rest not voting.
From there I wanted to first collect a list of consensus good things
about the department, and then consensus bad things. I don't think this
is the agenda most people had in mind, however, so it wasn't too far
into the list of good things that people went more into free-for-all
commenting. Since the discussion was disorganized, I'm going to present
a bunch of things said and my impression of the consensus or lack of
same on each. Consider this first list a warmup for the larger issues
to be discussed later.
1. One of our strongest points of agreement was that the raw talent
in the department, both faculty and students, is a very strong
positive for us. The University as a whole and the surrounding
area were also recognized as good things.
2. Systems seems to have gone from one of our weakest areas to our
strongest. In particular, students who work over in CIS seem
more pleased than most about their educational experience.
3. Though we appreciate the effort that the department is making to
rebuild the theory side of the department, and Jack Snoeyink's
updates on the state of that effort, a lot of us still have trouble
with the idea of telling theory students that Stanford is the
place to be. It seemed to theory people that there are 5 or 6
places to go before Stanford as we exist today. It was noted
and appreciated that Andrew Goldberg, John Mitchell, and the visiting
people this year had done a lot for some of the problems, but a more
permanent solution is needed.
4. There was one complaint about the state of our experimental AI
program, but it didn't lead to much of a discussion. Stanford
would seem, by consensus again, to be a fine place to do theoretical
AI work, if certain issues (to be discussed later in this note)
were fully addressed.
5. Everyone who knows seems to think Robotics is doing really well.
6. There were some comments about the frustration of knowing what
area one wanted to work in and being unable to find a faculty
member with the interest and/or expertise in that area. (Experimental
AI seems to fit here.) It's not clear to me how widespread this
feeling is. One person mentioned afterward that there may be some
value in having a faculty member or two with extremely eclectic
tastes to pick up people who don't fit elsewhere.
The vast majority of our discussion, however, concentrated on the
following three issues:
1. Department Fragmentation.
A large majority seemed to think that we have a significant
problem with communication across research areas and groups.
Students feel frustrated that they do not know what other
groups are doing, and especially frustrated that the faculty
don't seem to communicate well among themselves. One student
wondered afterward how our department compares to others in
the number of research contracts with multiple PIs from the
department. (A couple personal side comments: a) It may be
that this fragmentation is an inevitable consequence of growth.
b) Multiple PI contracts could do a lot for helping to solve
all 3 of our perceived main problems.)
2. Funding.
Several (1st and 2nd year?) students expressed frustration with
funding limitations on their research directions. At least
one mentioned having an experience in which he approached a
faculty member who would have been happy to advise him in his
preferred area, but who was unable to provide support. Once
again, the alleged CMU model was examined. Is it true that
all research funds are pooled by their faculty? How can that
be legal? This has always been a negative in our recruiting:
the feeling among our students that funding might limit our
options, and the rumor that it doesn't limit the options of
students at other schools. (We seem to need more facts here:
it may be that students at other schools are in exactly the
same situation. If so, this observer thinks this concern might
go away.)
There was some speculation that the senior faculty might not
be holding up their end in obtaining support both for students
AND for junior faculty who might have more difficulty attracting
research grants. Some of us think that junior faculty are
more accessible, more enthusiastic, and have more opportunity
to provide the kind of close contact we need, but that they
are limited by the lack of support, financial and otherwise,
that they receive from the senior faculty.
3. Faculty Supervision and Access.
This was by far the most important issue to virtually every
single one of us. With rare exceptions (some students of
Jean-Claude Latombe, Vaughan Pratt, and Jeff Ullman
seemed to be among the exceptions) students feel
that they are not getting the quantity and quality of faculty
direction that they expected when they decided to come to
Stanford. I cannot overstate how important this theme was
to the discussion. To give you some idea of its magnitude,
let me point out that there was only one, maybe two, comments
about the comp, and none about the qual. Students seem to
care about improving the comp but, right now at least, we
are much more concerned about a lack of exposure to and
guidance from the faculty.
Younger students feel they are not being told and shown how
to begin research. Even if a faculty member suggests a starting
project, rather than just saying "Get the comp out of the way
first", the connection between that project and doing research
is not articulated.
Senior students feel that having spent 2 or 3 years passing
comps and quals, they are hardly more qualified to do research
than when they began. In particular, they feel that they have
not had the chance to really watch the faculty DOING research.
(Another personal note: I think part of the problem is the
physical separation in Jacks of faculty from students. I hope
the architecture of the new building gathers research groups
together rather than stashing the students in jungles far
removed from the faculty.)
Someone suggested that students everywhere will always complain
and that our problems are the same as those in similar places.
The student consensus was that though they may complain in other
departments, we feel that one measure of our interaction with
faculty was the number of papers we write jointly with faculty
members, and that by that measure we're doing significantly
worse than students at comparable schools.
We spent quite a bit of time (relatively--the meeting was
only scheduled to be 45 minutes and went for an hour) talking
about the value of our fellow students as advisors and guides.
Several students (especially theory students?) felt that their
research branched significantly far from what others were doing
that fellow students could not really contribute. There were
others who felt quite strongly that concentrating on the
negative of faculty remoteness was not helpful: that we could
successfully use each other more as a replacement. No one
seemed overly thrilled that we might have to be looking for
a replacement.
Related to all of this is some resentment over faculty
complaints about the time it takes us to graduate. We note
that CMU and MIT take just as long to graduate their students,
which implies that the field might just require this much time.
In any case, I think the consensus was that time to graduation
is primarily a problem with faculty direction, not student
capability or work ethic.
As the meeting was winding down, I asked whether we as a group
would be willing to spend ten more hours per week in our offices
if the faculty did the same. The vocalized reaction, I'm afraid,
was that it was easy for us to promise our ten hours because the
faculty would never give theirs.
Near the end of our meeting, I revealed that my primary purpose for
calling the meeting was to show my fellow students that most of them
felt things were pretty good, and that therefore we should be happy
to help the recruitment effort for next year's students. It seemed
(seems) clear that I did not achieve the first part of that objective,
though a number of students have told me since that they were pleased
to find out that not everyone thinks we're going to hell in a handbasket.
We talked about our willingness to help with recruiting. Several people
stressed the importance of honesty in our presentation (especially with
respect to the state of the theory area) but for the most part I think
we recognize the importance of the recruiting effort, especially since
we have to depend on incoming students as our colleagues.
So here are my current conclusions about the meeting.
There remains a fundamental optimism among students, at least among
those who attended the meeting. We feel that the talent and
the desire is here to make our department the best. It could just be
our arrogance, but we came to the meeting believing that our ideas would
make the department better: the implication is that we think there's
something worth working on. Most of us can, in good conscience,
recommend this as a good place to learn.
The down side is, that even with a biased moderator (yours truly)
whose agenda was to show my fellow students that those with complaints
were in the minority, the consensus insisted that improvements have
to be made. (Evidence of my bias: one student began the list
of bad things about the department by saying, "First year students
are second class citizens." I refused to accept the comment, insisting
that I would not enter an item on our list which I claimed was the
equivalent of "Things suck." One student afterward accused me of
calling the meeting under the urging of Mike Genesereth--my advisor
and the chair of the Ph.D. committee.) Despite this bias, the main student
message comes through loud and clear: We don't feel that we are
being effectively and efficiently taught how to do research.
Your reporter and instigator,
--Eric J. Berglund
P.S. This Appendix is the note I sent to Ph.D. students telling them
about the meeting:
I asked Andrew to call the meeting on Monday so that we could
get together and see if there's a consensus among the PhD students
about the current state and direction of the PhD program. Among
the more provocative opinions I've heard recently while talking
to people about this:
--Why are the faculty nagging us about time to graduation? It's
their fault, not ours.
--Students today are lazier than they were ten years ago.
--We really don't have much of a problem at all: just a few people
who whine and complain a lot.
What I propose to do, unless given a better suggestion is to see
if we can't reach a relatively quick consensus on short answers to
the following questions:
1. How good or bad is our program?
2. Is it improving or declining?
3. What's good about it?
4. What's bad about it?
5. What problems are over- and underrated?
We'll take a little longer to see if there's any hope for a consensus
on these two:
6. What causes the existing problems, if any?
7. What can realistically be done to fix the problems?
Finally, I'd like to take 5 or 10 minutes at the end to talk about
how recruiting should be handled when the program may not be perfect.
Please send me suggestions for any changes to this plan of attack,
and then bring yourself and all your PhD buddies to 146 Jacks at
12:15 ('til 1:00) on Monday. This coming Monday.
--Eric
∂08-Mar-89 1610 misha@polya.Stanford.EDU AFLB tomorrow!
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 8 Mar 89 16:10:26 PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA26346; Wed, 8 Mar 89 16:05:36 -0800
Date: Wed, 8 Mar 89 16:05:36 -0800
From: Michael Kharitonov <misha@polya.Stanford.EDU>
Message-Id: <8903090005.AA26346@polya.Stanford.EDU>
To: aflb-all@polya.Stanford.EDU
Subject: AFLB tomorrow!
The second meeting of AFLB this week will be at its regular
time and place, at 12:30 on Thursday (tomorrow) in room 352.
Title: LOWER BOUNDS FOR COMPUTATIONS WITH THE FLOOR OPERATION
Speaker: Baruch Schieber, IBM - Research Division,
T.J. Watson Research Center, Yorktown Heights, NY 10598
ABSTRACT
We prove an Omega ((log n)**0.5) lower bound on the depth
of any decision tree with operations {+,-,*,/,floor,<}, that
decides whether an integer is a perfect square, for any n-bit
integer. We then extend the arguments to obtain an Omega(loglog n)
lower bound on the depth of any decision tree with operations
{+,-,*,/,floor,<}, that decides whether two integers are
relatively prime, for any two n-bit integers. Although our lower
bounds are not tight, they are the first non-trivial bounds
for natural problems in the presence of the floor operation.
A novel technique for handling the floor operation is presented.
The same technique can be used to derive lower bounds for many
other problems.
Finally, we show that the same lower bounds hold for the time
complexity of RAMs with the same set of arithmetic operations.
This is a joint work with Yishay Mansour and Prasoon Tiwari.
∂08-Mar-89 1649 X3J13-mailer February 21 Ballot
Received: from lucid.com by SAIL.Stanford.EDU with TCP; 8 Mar 89 16:49:01 PST
Received: from challenger ([192.9.200.17]) by heavens-gate.lucid.com id AA05400g; Wed, 8 Mar 89 16:42:11 PST
Received: by challenger id AA00614g; Wed, 8 Mar 89 16:37:36 PST
Date: Wed, 8 Mar 89 16:37:36 PST
From: Richard P. Gabriel <rpg@lucid.com>
Message-Id: <8903090037.AA00614@challenger>
To: x3j13@sail.stanford.edu
Subject: February 21 Ballot
Here is Lucid's vote. There are two conditional acceptances. One is
because several of us are rewriting the error terminology yet again.
The other is section 6.1 where I want to look at the notation
introduced there once more. Also, there are some minor problems with
the rest of the section, (for example, fill pointers and pathnames
should be described somewhere else.) The sections on CLOS (1.8, 2.3,
2.4, 2.5) were put together by Kathy, Linda DeMichiel, and me, so I
think they're ok from the CLOS committee's point of view.
________________________________________________________________________
Issue or section name | Version | Y | I | A |
------------------------------------------------------------------------
CUT-OFF-DATES | 4 | Y | | |
------------------------------------------------------------------------
ERROR-TERMINOLOGY | 5 | | I | |
------------------------------------------------------------------------
FONTS | 2 | Y | | |
------------------------------------------------------------------------
TOC | 1 | Y | | |
------------------------------------------------------------------------
Section 1.8 | 5.8 | Y | | |
------------------------------------------------------------------------
Section 2.3 | 5.8 | Y | | |
------------------------------------------------------------------------
Section 2.4 | 5.8 | Y | | |
------------------------------------------------------------------------
Section 2.5 | 5.8 | Y | | |
------------------------------------------------------------------------
Section 6.1 | 5.8 | | I | |
------------------------------------------------------------------------
-rpg-
∂08-Mar-89 1719 emma@csli.Stanford.EDU CSLI Calendar, 9 March, $:19
Received: from csli.Stanford.EDU by SAIL.Stanford.EDU with TCP; 8 Mar 89 17:19:36 PST
Received: by csli.Stanford.EDU (4.0/inc-1.0)
id AA07817; Wed, 8 Mar 89 16:33:16 PST
Date: Wed, 8 Mar 89 16:33:16 PST
From: emma@csli.Stanford.EDU (Emma Pease)
Message-Id: <8903090033.AA07817@csli.Stanford.EDU>
To: friends@csli.Stanford.EDU
Subject: CSLI Calendar, 9 March, $:19
C S L I C A L E N D A R O F P U B L I C E V E N T S
_____________________________________________________________________________
9 March 1989 Stanford Vol. 4, No. 19
_____________________________________________________________________________
A weekly publication of The Center for the Study of Language and
Information, Ventura Hall, Stanford University, Stanford, CA 94305
____________
CSLI ACTIVITIES FOR THIS THURSDAY, 9 March 1989
2:15 p.m. CSLI Seminar
Cordura Hall Indexicality and Quantified Modal Logic
Conference Room Harry Deutsch
Illinois State University
Abstract below
3:30 p.m. Tea
Ventura Hall
____________
ANNOUNCEMENT
Please note that the CSLI Seminar originally scheduled for 7 March is
now on 9 March at 2:15.
The CSLI Calendar will not be published on 16 and 23 March.
____________
THIS WEEK'S CSLI SEMINAR
Indexicality and Quantified Modal Logic
Harry Deutsch
Illinois State University
Thursday, 9 March, 2:15
Cordura Conference Room
Relations between recent philosophy of language and the semantics of
modality (possible-worlds semantics) have not been good. I attempt to
mediate the dispute by formulating quantified modal logic (QML) so as
to incorporate some insights of the "new theory of reference" (NTR).
This sheds some new light on both QML and the NTR.
____________
SYMBOLIC SYSTEMS FORUM
Ontology and Computers
Ruben Kleiman
Apple Intelligent Agents Group
Friday, 10 March, 3:15
Room 60:61N
This talk will be about artificial intelligence and knowledge
representation, focusing on how to encode knowledge into a computer.
On one hand, Winograd, Flores, and Putnam have advocated a
phenomenological view that abandons the standard mentalist position.
On the other hand, there are also many people (Hayes, McCarthy,
Dennett, and most AI workers) who keep the mentalist position. Dr.
Kleiman will attempt to reconcile these two philosophical positions.
____________
LINGUISTICS DEPARTMENT COLLOQUIUM
A Union Analysis of Noun Incorporation
Donna Gerdts, SUNY at Buffalo
Friday, 10 March, 3:15
Cordura Conference Room
Noun incorporation (NI) has been widely discussed from many
viewpoints; this paper presents yet another analysis of this
phenomonon, one based on three previously proposed and independently
instantiated relational constructs: union, multiattachment, and
cancellation. Not only does this treatment provide an analysis at no
cost to the grammar, but it allows for a typology of NI constructions
appropriate for the array of data currently attested in natural
languages. First, we take a quick look at five other analyses pointing
out their empirical inadequacies. The strength of the union analysis
is that it avoids the limitations of other treatments while
nevertheless presenting a constrained view of NI constructions.
____________
COMMONSENSE AND NONMONOTONIC REASONING SEMINAR
Relating Default and Autoepistemic Logics
Wiktor Marek and Miroslaw Truszczynski
University of Kentucky
Monday, March 13, 3:15pm
MJH 301
We introduce a classification of nonmonotonic context-dependent
reasonings according to the way context is used in derivations. A
reasoning is symmetric if context is used to derive both positive and
negative information. A reasoning is asymmetric if context is applied
to derive negative information only. In the talk we concentrate on
symmetric and asymmetric reasonings in default and autoepistemic
logics. They give rise to several classes of objects: weak extensions
and extensions in default logic, and expansions and robust expansions
in autoepistemic logic. Our results establish correspondence between
weak extensions and expansions (both notions are related to symmetric
reasonings) and extensions and robust expansions (these notions are
related to asymmetric reasonings). We also find an exact character of
the correspondence between notions based on the parsimony principle:
minimal sets closed under defaults and stable sets with minimal
objective parts. This multilevel correspondence between default and
autoepistemic logics pinpoints the exact character of the equivalence
of their expressive powers.
∂08-Mar-89 1741 X3J13-mailer Feb. 21 Letter Ballot: editorial issues
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 8 Mar 89 17:41:03 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 553455; Wed 8-Mar-89 20:38:11 EST
Date: Wed, 8 Mar 89 20:37 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: Feb. 21 Letter Ballot: editorial issues
To: chapman%aitg.DEC@decwrl.dec.com
cc: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
In-Reply-To: <19890306214441.8.MOON@EUPHRATES.SCRC.Symbolics.COM>
Message-ID: <19890309013751.3.MOON@EUPHRATES.SCRC.Symbolics.COM>
I'd like to change the Symbolics vote, since you told me two things
that none of us here knew before: that there will be an opportunity
for cleaning up these sections even after they are voted in now, and
that the CLOS sections had already been carefully reviewed by Gabriel
and that Gregor had said he was satisfied with them. As a result,
we're changing our vote on sections 2.3, 2.4, and 2.5 from I to Y.
The other three I votes should remain. For ERROR-TERMINOLOGY because
it seems to be actively changing, for section 1.8 because the section
is sketchy, and for section 6.1 because we haven't really understood
it yet. Section 6.1 looks fundamental, do you think it's important
to get a vote on it as soon as possible? If so, we at Symbolics could
try to concentrate our efforts there.
I'd also like to clarify the meaning of this paragraph of our reply:
The five numbered sections: We approve these in principle, but aren't
ready to cast them in concrete. We haven't had time to review them with
the extreme care warranted for a language standard, and don't know who
else, if anyone, has reviewed them that thoroughly.
This was certainly not meant to give the impression that we were
refusing to review this stuff! The problem is simply that except for
Pitman, who is on the editorial committee, no one here had seen any of
this before two weeks ago. Also as it happens it is an extremely busy
time for us right now. Two weeks would not enough time for a really
careful review even in slack times, but at the time it was impossible.
I personally plan to try to review the entire standard carefully, as
well as to browbeat several other people at Symbolics into doing careful
review of either the entire standard or selected sections for their
areas of expertise. That will take a significant amount of time, of
course, probably several months.
∂09-Mar-89 1122 kuder@russell.Stanford.EDU SSP Internship lunch
Received: from russell.Stanford.EDU by SAIL.Stanford.EDU with TCP; 9 Mar 89 11:22:16 PST
Received: by russell.Stanford.EDU (4.0/inc-1.0)
id AA24457; Thu, 9 Mar 89 11:23:22 PST
Date: Thu 9 Mar 89 11:23:21-PST
From: Margie Kuder <KUDER@CSLI.Stanford.EDU>
Subject: SSP Internship lunch
To: ssp-faculty@russell.Stanford.EDU, ssp-students@russell.Stanford.EDU
Message-Id: <605474601.0.KUDER@CSLI.Stanford.EDU>
Mail-System-Version: <SUN-MM(242)+TOPSLIB(128)@CSLI.Stanford.EDU>
The following are on our list for the Internship Lunch on March 16 at noon
at Cordura Hall. If you are not on the list and want to attend, please
let me know by Monday, March 13 and we will add you to the list and order
lunch for you also.
Faculty:
Peter Sells
Stan Rosenschein
John Etchemendy
Jon Barwise
Helen Nissenbaum
Barbara Tversky
Stanley Peters
Students:
Mark Burns Mike Lenz Ann Podiozny
Michael Frank Chris Weyand John Lynch
Al Sargent Kimberly Claffy Paul Glauthier
Stefan Heck Mark Torrance Rafie Furst
Laura Wasylenski Soeun Park John Wesseling
Reid Hoffman Michael Korcuska
-------
∂09-Mar-89 1340 X3J13-mailer Issue: SUBSETTING-POSITION
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 9 Mar 89 13:40:03 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 554074; Thu 9-Mar-89 16:37:07 EST
Date: Thu, 9 Mar 89 16:36 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: Issue: SUBSETTING-POSITION
To: chapman%aitg.DEC@decwrl.dec.com
cc: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
In-Reply-To: <8902200927.AA06837@decwrl.dec.com>
Message-ID: <19890309213655.4.MOON@EUPHRATES.SCRC.Symbolics.COM>
I support SUBSETTING-POSITION:NONE. I think that subsets are
a good idea, but I also think that the X3J13 process has no
chance at all of coming up with a subset that is useful to
anyone in the time available. Therefore I think the standard
should propose no subsets, but should not contain any statement
(unlike, I think, Ada) to the effect that subsets are forbidden
or a bad idea.
∂09-Mar-89 1345 X3J13-mailer Issue: EXTENTIONS-POSITION
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 9 Mar 89 13:45:26 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 554086; Thu 9-Mar-89 16:42:43 EST
Date: Thu, 9 Mar 89 16:42 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: Issue: EXTENTIONS-POSITION
To: chapman%aitg.DEC@decwrl.dec.com
cc: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
In-Reply-To: <8902242224.AA13754@decwrl.dec.com>
Message-ID: <19890309214233.5.MOON@EUPHRATES.SCRC.Symbolics.COM>
I favor EXTENSIONS-POSITION:DOCUMENTATION.
I oppose EXTENSIONS-POSITION:DISABLE because it mandates a
particular development environment feature, but Common Lisp
has avoided saying anything about development environments
since that is an area of extreme controversy.
Gabriel's position of standing mute would be okay with me.
∂09-Mar-89 1349 X3J13-mailer Issue: MACRO-AS-FUNCTION
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 9 Mar 89 13:49:18 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 554092; Thu 9-Mar-89 16:46:30 EST
Date: Thu, 9 Mar 89 16:46 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: Issue: MACRO-AS-FUNCTION
To: chapman%aitg.DEC@decwrl.dec.com
cc: x3j13@sail.stanford.edu
In-Reply-To: <8902242236.AA14651@decwrl.dec.com>
Message-ID: <19890309214619.6.MOON@EUPHRATES.SCRC.Symbolics.COM>
Why don't we just change PROG1 and PROG2 to functions, now that
we have clarified that functions evaluate their arguments in
left-to-right order?
∂09-Mar-89 1350 X3J13-mailer Issue: UNSOLICITED-MESSAGES (Version 2)
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 9 Mar 89 13:50:21 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 554094; Thu 9-Mar-89 16:47:35 EST
Date: Thu, 9 Mar 89 16:47 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: Issue: UNSOLICITED-MESSAGES (Version 2)
To: chapman%aitg.DEC@decwrl.dec.com
cc: x3j13@sail.stanford.edu
In-Reply-To: <8902242237.AA14750@decwrl.dec.com>
Message-ID: <19890309214725.7.MOON@EUPHRATES.SCRC.Symbolics.COM>
UNSOLICITED-MESSAGES:NOT-TO-SYSTEM-USER-STREAMS is okay.
∂09-Mar-89 1352 X3J13-mailer Issue: UNSPECIFIED-DATATYPES (Version 2)
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 9 Mar 89 13:52:35 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 554096; Thu 9-Mar-89 16:49:52 EST
Date: Thu, 9 Mar 89 16:49 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: Issue: UNSPECIFIED-DATATYPES (Version 2)
To: chapman%aitg.DEC@decwrl.dec.com
cc: x3j13@sail.stanford.edu
In-Reply-To: <8902242237.AA14708@decwrl.dec.com>
Message-ID: <19890309214942.8.MOON@EUPHRATES.SCRC.Symbolics.COM>
I oppose UNSPECIFIED-DATATYPES:NO-EXCEPT-AS-EXPLICITLY-ALLOWED
on the grounds that it is unnecessary and that the problem it's
attempting to address (making it possible to check conformance
by machine) is impossible to solve.
∂09-Mar-89 1357 X3J13-mailer Issue: EXTRA-SYNTAX (Version 4)
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 9 Mar 89 13:57:48 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 554101; Thu 9-Mar-89 16:55:10 EST
Date: Thu, 9 Mar 89 16:54 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: Issue: EXTRA-SYNTAX (Version 4)
To: chapman%aitg.DEC@decwrl.dec.com
cc: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
In-Reply-To: <8902271015.AA14142@decwrl.dec.com>
Message-ID: <19890309215459.9.MOON@EUPHRATES.SCRC.Symbolics.COM>
I oppose EXTRA-SYNTAX:NO. The rationale says
It would be very difficult for a program-analyzing-program to detect
such an extension. Non-portable programs could easily result.
I can't see what's hard about detecting use of additional syntax not
specified -- that seems to be the easiest to detect of any
nonconformance. To take the canonical example of extending IF to allow
more than three subforms, surely it is very easy for a
program-analyzing-program to detect an invocation of IF with more than
three subforms and complain that the program is non-conforming.
∂09-Mar-89 1406 X3J13-mailer Issue: EXTRA-OPTIONAL-KEYWORD-ARGUMENTS (Version 3)
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 9 Mar 89 14:06:06 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 554109; Thu 9-Mar-89 17:03:09 EST
Date: Thu, 9 Mar 89 17:02 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: Issue: EXTRA-OPTIONAL-KEYWORD-ARGUMENTS (Version 3)
To: chapman%aitg.DEC@decwrl.dec.com
cc: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
In-Reply-To: <8902271016.AA14193@decwrl.dec.com>
Message-ID: <19890309220257.0.MOON@EUPHRATES.SCRC.Symbolics.COM>
I oppose both proposals. The adoption cost is:
Implementors will be required to determine which parts of their
implementations are conforming and which parts aren't. Implementors
will have to provide a candidate list of exceptions to the editorial
committee.
The second sentence strikes me as a lot of extra work that will just
delay closure on the standard.
The stated benefits are:
It will be more possible to write portable programs. Also, future
standards will be less likely to make changes that are incompatible
with current implementations.
I don't believe in the first benefit. This issue does not affect the
ability to write portable programs in any significant way. It only
affects whether particular implementations are more or less useful as
development tools for checking conformance. I believe that development
tools for checking conformance are a valuable item for which market
demand exists, but are not within the purview of X3J13.
The second benefit is true. However there are a large number of other
ways that future standards could be incompatible with current
implementations, none of which have been ruled out. For example, any
implementation that makes symbols accessible to the USER package other
than symbols in the LISP package risks name conflicts with future
additions to the LISP package. It's simply a fact of life that any
extension might be incompatible with an eventual standard; pioneers can
never be sure that everyone will follow in their exact footsteps.
∂09-Mar-89 1433 X3J13-mailer Issue: EXTRA-SYNTAX (Version 4)
Received: from lucid.com by SAIL.Stanford.EDU with TCP; 9 Mar 89 14:33:19 PST
Received: from challenger ([192.9.200.17]) by heavens-gate.lucid.com id AA06700g; Thu, 9 Mar 89 14:26:23 PST
Received: by challenger id AA02174g; Thu, 9 Mar 89 14:21:48 PST
Date: Thu, 9 Mar 89 14:21:48 PST
From: Richard P. Gabriel <rpg@lucid.com>
Message-Id: <8903092221.AA02174@challenger>
To: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
Subject: Issue: EXTRA-SYNTAX (Version 4)
The rationale says:
``It would be very difficult for a program-analyzing-program to detect
such an extension. Non-portable programs could easily result.''
In fact the error terminology says this about extending the syntax
when it's allowed:
``Implementations are permitted to define unambiguous extensions to
the syntax of the construct being described. No conforming code can
depend on this extension. Implementations are required to document
each such extension. All conforming code is required to treat the
syntax as meaningless.''
Thus, the only syntactic extensions allowed would be those that
program analysis programs could detect.
There are some cases where we wish to disallow extensions and some
cases where we don't care. DEFCLASS is an example of one place we wish
to keep people away from. If there are vastly more places where we
don't care, that should be the default. I think it would take a
careful editorial process to decide whether it's easier to defaultly
allow or defaultly disallow. I think this issue is quite different
from that of extensions in general.
-rpg-
∂09-Mar-89 1539 X3J13-mailer Re: Issue: UNSPECIFIED-DATATYPES (Version 2)
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 9 Mar 89 15:39:49 PST
Received: from defun.utah.edu by cs.utah.edu (5.61/utah-2.1-cs)
id AA04997; Thu, 9 Mar 89 16:37:40 -0700
Received: by defun.utah.edu (5.61/utah-2.0-leaf)
id AA10028; Thu, 9 Mar 89 16:37:35 -0700
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8903092337.AA10028@defun.utah.edu>
Date: Thu, 9 Mar 89 16:37:28 MST
Subject: Re: Issue: UNSPECIFIED-DATATYPES (Version 2)
To: chapman%aitg.dec@decwrl.dec.com
Cc: x3j13@sail.stanford.edu,
David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
In-Reply-To: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>, Thu, 9 Mar 89 16:49 EST
I agree with Moon. Leaving the behavior undefined gives an
implementation permission to do anything it wants, including starting
WWIII. "Anything" ought to include defining some useful behavior for
the situation, such as asking me if I really want to launch the
missiles.
-Sandra
-------
∂09-Mar-89 1613 TAJNAI@Score.Stanford.EDU IBM Fellowship nominations
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 9 Mar 89 16:13:14 PST
Date: Thu 9 Mar 89 16:09:47-PST
From: Carolyn Tajnai <TAJNAI@Score.Stanford.EDU>
Subject: IBM Fellowship nominations
To: faculty@Score.Stanford.EDU
Message-ID: <12476745461.13.TAJNAI@Score.Stanford.EDU>
CSD will nominate Adam Grove and Pandurang Nayak as new candidates and
Tom Henzinger and Karen Myers for renewals.
8 students were nominated by the faculty, and they are all outstanding.
WE certainly can be proud of our students, and proud to nominate them to
IBM.
Thank you for your cooperation.
Carolyn
-------
∂09-Mar-89 1742 GENESERETH@Score.Stanford.EDU phd admissions
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 9 Mar 89 17:42:27 PST
Date: Thu 9 Mar 89 17:39:05-PST
From: Mike Genesereth <GENESERETH@Score.Stanford.EDU>
Subject: phd admissions
To: faculty@Score.Stanford.EDU
Message-ID: <12476761717.14.GENESERETH@Score.Stanford.EDU>
Folks,
The Admissions committee has done its job. We have offered
admission to the PhD program to 40 people for next fall, and we
would like to get a large number of these admittees to become
acceptors. For this, we need your help. Over the next few weeks,
many of the admittees will be visiting us and will want to
talk with you. (Your fault really. You are the ones who became
famous.) What we ask is that you take the time and make the
effort to help them understand why there is no better department
in the world.
To make your job easier, we have already made some
arrangements. First of all, we are asking that admittees TRY to
schedule their visits more or less in a clump (for the week of
the 19th of March). This means that you won't have lots
of stragglers wandering into your offices at random times for
weeks on end. Secondly, we have asked Nils to talk to these
guys and give them an overview of the departtment and we are
asking the area spokesmen to talk with them and provide
area overviews. Thirdly, we are arranging for grad students
to host the visitors when they arrive and give them a sense
of student life here.
This leaves you folks with the sole task of talking about your
own research and, of course, exercising your charismas. Please
spend a few minutes thinking about how best to present your
own research and please, please take the time to meet with these
people when they arrive. Their student guides will set up the
meetings. Thanks.
mrg
-------
∂09-Mar-89 1847 animal@Portia.stanford.edu Re: SSP Internship lunch
Received: from russell.Stanford.EDU by SAIL.Stanford.EDU with TCP; 9 Mar 89 18:47:16 PST
Received: from Portia.stanford.edu by russell.Stanford.EDU (4.0/inc-1.0)
id AA29050; Thu, 9 Mar 89 18:48:31 PST
Received: by Portia.stanford.edu (5.59/25-eef) id AA11253; Thu, 9 Mar 89 18:43:24 PDT
Date: Thu, 9 Mar 89 18:43:24 PDT
From: Ann Podlozny <animal@Portia.stanford.edu>
Message-Id: <8903100243.AA11253@Portia.stanford.edu>
To: KUDER@CSLI.Stanford.EDU
Cc: ssp-faculty@russell.Stanford.EDU, ssp-students@russell.Stanford.EDU
In-Reply-To: Margie Kuder's message of Thu 9 Mar 89 11:23:21-PST <605474601.0.KUDER@CSLI.Stanford.EDU>
Subject: Re: SSP Internship lunch
Yes, I will be attending the luncheon, but my name is Podlozny, not
Podiozny. Minor, but I just thought I'd correct it while I thought of
it.
Thanks!
∂09-Mar-89 1914 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu COLLOQUIUM SERIES 88-89, Marist College
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 9 Mar 89 19:14:17 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA02633; Thu, 9 Mar 89 19:11:46 -0800
Message-Id: <8903100311.AA02633@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Thu, 9 Mar 89 19:13:51 PST
Received: by BYUADMIN (Mailer R2.01A) id 8428; Thu, 09 Mar 89 19:37:59 MST
Date: Thu, 9 Mar 89 12:39:07 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
"William J. Joel" <JZEM%MARIST.BITNET@forsythe.stanford.edu>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: "William J. Joel" <JZEM%MARIST.BITNET@forsythe.stanford.edu>
Subject: COLLOQUIUM SERIES 88-89, Marist College
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
COLLOQUIUM SERIES 88-89
Division of Computer Science and Mathematics
Marist College
Poughkeepsie, NY
Title An Introduction to the Field of Human Factors
Speaker Ronald G. Shapiro, Ph.D., IBM Corporation
Date Tuesday, March 14, 1989
Time 1:00 PM - 2:20 PM
Abstract
Human Factors involves designing equipment so that
people will be able to use it safely, accurately, and
rapidly. A competent human factors professional
must, therefore, understand human capacity and limi-
tations as well as the task which needs to be per-
formed.
In the present talk, the need for competent human
factors will be discussed by exploring some of the
more dramatic problems and their solutions as depict-
ed in the history of the discipline. The talk will
continue with a discussion of how human factors
affects each of our lives. Basic Human Factors prin-
ciples and examples will be provided. The talk will
conclude with a discussion of requisite education for
a human factors professional, a human factors techni-
cian, and a human factors consumer.
Dr. Shapiro has served as an adjunct professor at
Marist College teaching a course in Human Factors.
He is a member of the Human Factors Design and Devel-
opment Department at IBM in Poughkeepsie, NY, chair
of the Mid Hudson Association of Engineering and Sci-
entific Societies, program chair of the Hudson Valley
Chapter of the Human Factors Society, and IBM's rep-
resentative to the SHARE, Inc. Human Factors project.
Dr. Shapiro received his Ph.D. and M.A. in Experimen-
tal Psychology from Ohio State University and his
B.A. in Psychology from the University of Rochester.
Refreshments will be served.
∂09-Mar-89 2038 LOGMTC-mailer "Categories for the working logician"
Received: from csli.Stanford.EDU by SAIL.Stanford.EDU with TCP; 9 Mar 89 20:37:58 PST
Received: by csli.Stanford.EDU (4.0/inc-1.0)
id AA28191; Thu, 9 Mar 89 20:35:49 PST
Date: Thu 9 Mar 89 20:35:49-PST
From: Sol Feferman <SF@CSLI.Stanford.EDU>
Subject: "Categories for the working logician"
To: Logic@csli.Stanford.EDU
Message-Id: <605507749.0.SF@CSLI.Stanford.EDU>
Mail-System-Version: <SUN-MM(242)+TOPSLIB(128)@CSLI.Stanford.EDU>
Course, Spring 1989, Topics in Logic (Math.294, = Phil.394)
"Categories for the working logician"
MW 4:15-5:30, Rooms 381-T (M), 383-N (W)
First meeting, Wed. April 4
Topics:
1.Review of basic notions and examples (categories, universals and limits,
functors, natural transformations, adjoint functors).
2.Topoi and sheaf models for intuitionistic and higher-order theories.
3.Girard's dilators (ordinal functors) and PI-1-2 logic.
4.Foundations of category theory.
How far each topic 2-4 can be pursued will depend on time.
Prerequisites:
Math 290A and 292A or equivalent (model theory and set theory).
Some background reading in category theory is advised.
Recommended introductory sources:
J.Adamek, Theory of mathematical structures.
T.S.Blyth, Categories
H.Herrlich and G.Strecker, Category theory, an introduction
S.Mac Lane, Categories for the working mathematician (the standard reference).
Auditors are welcome.
S. Feferman
-------
∂10-Mar-89 2024 LOGMTC-mailer The Alfred Tarski Lectures
Received: from csli.Stanford.EDU by SAIL.Stanford.EDU with TCP; 10 Mar 89 20:24:34 PST
Received: by csli.Stanford.EDU (4.0/inc-1.0)
id AA04693; Fri, 10 Mar 89 20:22:24 PST
Date: Fri 10 Mar 89 20:22:23-PST
From: Sol Feferman <SF@CSLI.Stanford.EDU>
Subject: The Alfred Tarski Lectures
To: logic@csli.Stanford.EDU
Message-Id: <605593343.0.SF@CSLI.Stanford.EDU>
Mail-System-Version: <SUN-MM(242)+TOPSLIB(128)@CSLI.Stanford.EDU>
The Alfred Tarski Lectures
Inaugural lectures on
philosophy, mathematics, computer science
Dana Scott
Carnegie-Mellon University
Monday, March 27 at 4PM: "Wherein lies the foundation of mathematics?"
Wednesday, March 29 at 4PM: "How far do we need to automate proofs?"
Friday, March 31 at 4PM: "Can we teach geometry on the computer?"
All lectures in Room 155, Dwinelle Hall, Univ. of California at Berkeley
-------
∂11-Mar-89 1034 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu network meeting announcement for distribution
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 11 Mar 89 10:34:00 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA18325; Sat, 11 Mar 89 10:31:41 -0800
Message-Id: <8903111831.AA18325@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Sat, 11 Mar 89 10:33:46 PST
Received: by BYUADMIN (Mailer R2.01A) id 5555; Sat, 11 Mar 89 11:30:05 MST
Date: Sat, 11 Mar 89 12:24:09 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
Michael Cohen <mike@BUCASB.BU.EDU>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: Michael Cohen <mike@BUCASB.BU.EDU>
Subject: network meeting announcement for distribution
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
NEURAL NETWORK MODELS OF CONDITIONING AND ACTION
12th Symposium on Models of Behavior
Friday and Saturday, June 2 and 3, 1989
105 William James Hall, Harvard University
33 Kirkland Street, Cambridge, Massachusetts
PROGRAM COMMITTEE:
Michael Commons, Harvard Medical School
Stephen Grossberg, Boston University
John E.R. Staddon, Duke University
JUNE 2, 8:30AM--11:45AM
-----------------------
Daniel L. Alkon, ``Pattern Recognition and Storage by an Artificial
Network Derived from Biological Systems''
John H. Byrne, ``Analysis and Simulation of Cellular and Network Properties
Contributing to Learning and Memory in Aplysia''
William B. Levy, ``Synaptic Modification Rules in Hippocampal Learning''
JUNE 2, 1:00PM--5:15PM
----------------------
Gail A. Carpenter, ``Recognition Learning by a Hierarchical ART Network
Modulated by Reinforcement Feedback''
Stephen Grossberg, ``Neural Dynamics of Reinforcement Learning, Selective
Attention, and Adaptive Timing''
Daniel S. Levine, ``Simulations of Conditioned Perseveration and Novelty
Preference from Frontal Lobe Damage''
Nestor A. Schmajuk, ``Neural Dynamics of Hippocampal Modulation of Classical
Conditioning''
JUNE 3, 8:30AM--11:45AM
-----------------------
John W. Moore, ``Implementing Connectionist Algorithms for Classical
Conditioning in the Brain''
Russell M. Church, ``A Connectionist Model of Scalar Timing Theory''
William S. Maki, ``Connectionist Approach to Conditional Discrimination:
Learning, Short-Term Memory, and Attention''
JUNE 3, 1:00PM--5:15PM
----------------------
Michael L. Commons, ``Models of Acquisition and Preference''
John E.R. Staddon, ``Simple Parallel Model for Operant Learning with
Application to a Class of Inference Problems''
Alliston K. Reid, ``Computational Models of Instrumental and Scheduled
Performance''
Stephen Jose Hanson, ``Behavioral Diversity, Hypothesis Testing, and
the Stochastic Delta Rule''
Richard S. Sutton, ``Time Derivative Models of Pavlovian Reinforcement''
FOR REGISTRATION INFORMATION SEE ATTACHED OR WRITE:
Dr. Michael L. Commons
Society for Quantitative Analysis of Behavior
234 Huron Avenue
Cambridge, MA 02138
----------------------------------------------------------------------
----------------------------------------------------------------------
REGISTRATION FEE BY MAIL
(Paid by check to Society for Quantitative Analysis of Behavior)
(Postmarked by April 30, 1989)
Name: ______________________________________________
Title: _____________________________________________
Affiliation: _______________________________________
Address: ___________________________________________
Telephone(s): ______________________________________
E-mail address: ____________________________________
( ) Regular $35
( ) Full-time student $25
School ____________________________________________
Graduate Date _____________________________________
Print Faculty Name ________________________________
Faculty Signature _________________________________
PREPAID 10-COURSE CHINESE BANQUET ON JUNE 2
( ) $20 (add to pre-registration fee check)
-----------------------------------------------------------------------------
(cut here and mail with your check to)
Dr. Michael L. Commons
Society for Quantitative Analysis of Behavior
234 Huron Avenue
Cambridge, MA 02138
REGISTRATION FEE AT THE MEETING
( ) Regular $45
( ) Full-time Student $30
(Students must show active student I.D. to receive this rate)
ON SITE REGISTRATION
5:00--8:00PM, June 1, at the RECEPTION in Room 1550, William James Hall,
33 Kirkland Street, and 7:30--8:30AM, June 2, in the LOBBY of William
James Hall.
Registration by mail before April 30, 1989 is recommended
as seating is limited
HOUSING INFORMATION
Rooms have been reserved in the name of the symposium for the Friday
and Saturday nights at:
Best Western Homestead Inn
220 Alewife Brook Parkway
Cambridge, MA 02138
Single: $72
Double: $80
Reserve your room as soon as possible. The hotel will not hold them past
March 31. Because of Harvard and MIT graduation ceremonies, space will
fill up rapidly. Other nearby hotels:
Howard Johnson's Motor Lodge
777 Memorial Drive
Cambridge, MA 02139
(617) 492-7777
(800) 654-2000
Single: $115--$135
Double: $115--$135
Suisse Chalet
211 Concord Turnpike Parkway
Cambridge, MA 02140
(617) 661-7800
(800) 258-1980
Single: $48.70
Double: $52.70
---------------------------------------------------------------------------
∂11-Mar-89 1139 HEMENWAY@Score.Stanford.EDU Ph.D. Admits
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 11 Mar 89 11:39:40 PST
Date: Sat 11 Mar 89 11:35:35-PST
From: Sharon Hemenway <HEMENWAY@Score.Stanford.EDU>
Subject: Ph.D. Admits
To: faculty@Score.Stanford.EDU
Message-ID: <12477219831.11.HEMENWAY@Score.Stanford.EDU>
I've appended below the list of students to whom we have offered
admission to the Ph.D. program for next year. Please don't hesitate
to contact me if you would like any additional information (such as
phone numbers or addresses). The Recruitment committee will be hard
at work arranging visits over the next few weeks. I'm sure that
Andrew Kosoresow (kos@polya) will be willing to serve as a point of
contact between the faculty and the committee so please get in touch
with him if there are particular people you would like to meet.
Sharon
Name Interests Undergraduate School (M.S. School)
Bauer, Romy L APP CG UNIVERSITY OF CALIFORNIA, BERKELEY
Blackston, David T AA VLSI MIT
Blumofe, Robert D AA DA BROWN UNIVERSITY (Same)
Brewer, Eric A VLSI CG UNIVERSITY OF CALIFORNIA, BERKELEY
Chen, Stanley AI DB CALIFORNIA INSTITUTE OF TECHNOLOGY
Cyrluk, David A PSL MTC UNIVERSITY OF PENNSYLVANIA (RPI)
Darwiche, Adnan AI CL KUWAIT UNIVERSITY (Stanford Univ.)
Dellarocas, Chryssanthos PSL AA NATIONAL TECHNICAL UNIVERSITY ATHENS
Doorenbos, Robert B AI MTC UNIVERSITY OF MICHIGAN, ANN ARBOR
Drexler, Andreas J OS GEORG-AUGUST-UNIVERSITAT GOTTINGEN
Garde, Rashmi NDS OS UNIVERSITY OF CALIFORNIA, BERKELEY
Glim, Stephen M PSL DCS PRINCETON UNIVERSITY
Greenwald, Michael B NDS OS MIT
Greiner, John D PSL CL RICE UNIVERSITY
Gupta, Vineet MTC AA INDIAN INSTITUTE OF TECHNOLOGY, KANPUR
Harvey, William D OS NDS STANFORD UNIVERSITY
Hinrichs, Susan K APP PSL UNIV OF ILLINOIS AT URBANA-CHAMPAIGN
Hu, Alan J AA AI STANFORD UNIVERSITY
Jackson, Eric G AI CL HARVARD UNIVERSITY
Karger, David R AA MTC HARVARD UNIVERSITY
Kavraki, Lydia E AI PSL UNIVERSITY OF CRETE
Koller, Daphne NDS DB HEBREW UNIVERSITY OF JERUSALEM (Same)
Laidlaw, David H CG APP BROWN UNIVERSITY (Same)
Lang, Andrew K AI CL DUKE UNIVERSITY
Lee, Mavis K AI APP MIT (Same)
Lee, Michelle K DB AI MIT (Same)
Lipa, William J PSL DB STANFORD UNIVERSITY
Paxson, Vern E PSL CG STANFORD UNIVERSITY
Peck, Virginia A CL AI CORNELL UNIVERSITY
Polimenis, Vassilios G AA MTC UNIVERSITY OF PATRAS
Quinlan, Sean ROB PSL UNIVERSITY OF SYDNEY
Roy, Howard S AI MTC HARVARD UNIVERSITY
Schwartz, Anton L AI MTC HARVARD UNIVERSITY
Singh, Mona AA MTC HARVARD UNIVERSITY (Same)
Thrash, Wendy A PSL DCS MARIETTA COLLEGE (Michigan State)
Torng, Eric K NDS AI PRINCETON UNIVERSITY
Torres, Alberto AI AA UNIVERSIDAD SIMON BOLIVAR (Same)
Waarts, Orli NDS AA TECHNION (WEIZMANN INSTITUTE OF SCIENCE)
Wald, David E PSL MTC YALE UNIVERSITY (Same)
Williamson, David P MTC AA MIT
Deferral from 1988-89:
Haimowitz, Ira AI CL MIT (Cambridge University)
-------
∂12-Mar-89 1616 X3J13-mailer Issue: UNSOLICITED-MESSAGES
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 12 Mar 89 16:16:40 PST
Received: from BOBOLINK.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 555408; Sun 12-Mar-89 19:14:06 EST
Date: Sun, 12 Mar 89 19:13 EST
From: Kent M Pitman <KMP@STONY-BROOK.SCRC.Symbolics.COM>
Subject: Issue: UNSOLICITED-MESSAGES
To: chapman%aitg.DEC@decwrl.dec.com
cc: x3j13@sail.stanford.edu
In-Reply-To: <8902242237.AA14750@decwrl.dec.com>
Message-ID: <890312191349.9.KMP@BOBOLINK.SCRC.Symbolics.COM>
I agree that this is an important issue.
I am not sure I agree with the proposed solution -- partly because
I don't think it goes nearly far enough, and partly because I think the
wording for the place where it stops encourages might actually encourage
more `abuse' than currently exists.
I think it should be possible to know with certainly that calling EQ,
CONS, or even COMPILE, was not going to do I/O, at least in
the normal case. In exceptional cases, CONS might produce GC warnings
or COMPILE might produce compiler warnings, but never should COMPILE
type out anything like
Compiling FOO.
or should EQ type out
Performing EQ comparison of #<FOO 32> and #<BAR 17>.
Right now, nothing assures me of this and I find that disturbing.
This is the issue which I expected to `fix' this problem, and it does
not. In fact, its suggestion that it's ok to type such messages on
*TERMINAL-IO* may actually encourage what I consider to be an abominable
practice.
I would like it stated clearly that in the `normal situation' no
LISP function is permitted to do I/O unless the manual expressly
permits it.
Further, I think the current proposal permitting unsolicited messages
to go to *TERMINAL-IO* is a bad idea. I don't think unsolicited messages
should ever go directly to *TERMINAL-IO*. I am ammenable to them going to
documented streams which happen to have initial values that are synonym
streams to *TERMINAL-IO*, but
- I -don't- want them to be the standard CL streams, so I don't redirect
them by accident.
- I -do- want them to not be *terminal-io* so I can redirect them on
purpose.
Conceivably we could actually make a *JUNK-OUTPUT* which is initially a
synonym stream to *TERMINAL-IO*, but which is specially permitted to be
NIL to mean don't send the output anywhere, and we should say that all
unsolicited I/O has to go through there.
∂13-Mar-89 0714 X3J13-mailer cl-compiler mail
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 13 Mar 89 07:14:10 PST
Received: from defun.utah.edu by cs.utah.edu (5.61/utah-2.1-cs)
id AA16287; Mon, 13 Mar 89 08:12:01 -0700
Received: by defun.utah.edu (5.61/utah-2.0-leaf)
id AA02044; Mon, 13 Mar 89 08:11:59 -0700
Date: Mon, 13 Mar 89 08:11:59 -0700
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8903131511.AA02044@defun.utah.edu>
To: x3j13@sail.stanford.edu
Reply-To: cl-compiler@sail.stanford.edu
Subject: cl-compiler mail
I will be sending out the remaining batch of cl-compiler issues today.
I will also put FTP'able copies on host cs.utah.edu in directory
~ftp/pub/cl-compiler/pending. I'll send out a summary of issues when
I've gotten through them all.
It may be necessary for us to bring revised versions of some of these
proposals to the meeting. In particular, a few of them have been put
together at the last minute and haven't been reviewed thoroughly yet;
I've marked these as drafts so you'll be able to identify them. Any
comments or questions should be directed to cl-compiler@sail.stanford.edu.
-Sandra
∂13-Mar-89 0747 X3J13-mailer issue COMPILED-FUNCTION-REQUIREMENTS, version 4
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 13 Mar 89 07:47:01 PST
Received: from defun.utah.edu by cs.utah.edu (5.61/utah-2.1-cs)
id AA17004; Mon, 13 Mar 89 08:44:52 -0700
Received: by defun.utah.edu (5.61/utah-2.0-leaf)
id AA02070; Mon, 13 Mar 89 08:44:48 -0700
Date: Mon, 13 Mar 89 08:44:48 -0700
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8903131544.AA02070@defun.utah.edu>
To: x3j13@sail.stanford.edu
Reply-To: cl-compiler@sail.stanford.edu
Subject: issue COMPILED-FUNCTION-REQUIREMENTS, version 4
Forum: Compiler
Issue: COMPILED-FUNCTION-REQUIREMENTS
References: CLtL p. 32, 76, 112, 143, 438-439
Issue FUNCTION-TYPE (passed)
Issue COMPILER-LET-CONFUSION
Issue EVAL-WHEN-NON-TOP-LEVEL
Issue LOAD-TIME-EVAL (passed)
Issue COMPILE-ENVIRONMENT-CONSISTENCY
Category: CLARIFICATION
Edit History: V1, 3 Jan 1989 Sandra Loosemore
V2, 10 Jan 1989, Sandra Loosemore (additional proposal)
V3, 10 Feb 1989, Sandra Loosemore (new proposal)
V4, 11 Mar 1989, Sandra Loosemore (fix wording to agree
with other pending proposals)
Status: Ready for release
Problem Description:
There is confusion about what functions might be or must be of type
COMPILED-FUNCTION, and what attributes must be true of
COMPILED-FUNCTIONs. Is the distinction between COMPILED-FUNCTIONs and
other functions only one of representation, or can user programs infer
anything about COMPILED-FUNCTIONs? Are implementations required to
distinguish between compiled and non-compiled functions?
CLtL defines a COMPILED-FUNCTION as "a compiled code object". (Issue
FUNCTION-TYPE says only that COMPILED-FUNCTION must be a subtype of
FUNCTION.) Although it is not explicitly stated, CLtL implies that
compiled code must conform to certain rules; in particular, it states
that all macros are expanded at compile time, and specifies different
behavior for the COMPILER-LET and the EVAL-WHEN special forms
depending on whether they are interpreted or compiled.
The description of COMPILE in CLtL says that "a compiled-function object
[is] produced". It is not clear to everyone whether this implies that
COMPILED-FUNCTION-P must be true of such functions. CLtL says nothing
about whether functions defined in files compiled with COMPILE-FILE and
subsequently loaded must be of type COMPILED-FUNCTION.
The two proposals presented below present a simple model of the
compilation process. A minimal compiler could be implemented to
perform a code walk to apply the indicated transformations to the
function source code. Of course, most compilers will perform other
transformations as well, such as translating the Lisp source code into
a representation that is more compact or which can be executed more
efficiently.
Proposal COMPILED-FUNCTION-REQUIREMENTS:TIGHTEN:
(1) Clarify that if a function is of type COMPILED-FUNCTION, the
following are guaranteed about the function:
- All macro calls appearing lexically within the function have
already been expanded and will not be expanded again when the
function is called. (See CLtL p. 143.) The process of
compilation effectively turns MACROLET and SYMBOL-MACROLET
constructs into PROGNs with all instances of the local macros
in the body fully expanded.
- The compiler must capture declarations to determine whether
variable bindings and references appearing lexically within
the function are to be treated as lexical or special.
- COMPILER-LETs nested lexically within the function will not bind
any variables when the function is called (CLtL p. 112). Again,
the process of compilation effectively turns COMPILER-LET
constructs into PROGNs with all macros in the body fully expanded.
- Lexically nested EVAL-WHENs have been processed as stated in
proposal EVAL-WHEN-NON-TOP-LEVEL; either the body is treated as
an implicit PROGN or as the constant NIL.
- If the function contains lexically nested LOAD-TIME-VALUE forms,
these have already been pre-evaluated and will not be evaluated
again when the function is called.
(2) Implementations are free to classify all functions as
COMPILED-FUNCTIONs, provided that all functions satisfy the criteria
listed in item (1). It is also permissible for functions that are
not COMPILED-FUNCTIONs to satisfy the above criteria.
(3) Clarify that COMPILE always produces an object of type
COMPILED-FUNCTION. Clarify when functions are defined in a
file which is compiled with COMPILE-FILE, and the compiled file is
subsequently LOADed, objects of type COMPILED-FUNCTION result.
Rationale:
This proposal allows users to count on COMPILE and COMPILE-FILE always
producing objects that are COMPILED-FUNCTION-P.
It assigns some specific properties to compiled functions. Users would
be able to rely on any function which is of type COMPILED-FUNCTION having
really been (at least partially) compiled.
It also states what many people believe to be the minimum functionality
required of a compiler.
Proposal COMPILED-FUNCTION-REQUIREMENTS:TIGHTEN-COMPILE:
(1) Clarify that functions produced by COMPILE, or defined in a file
produced by COMPILE-FILE which has been subsequently LOADed, must
satisfy the same requirements listed in section (1) of proposal
TIGHTEN.
(2) Clarify that COMPILE always produces an object of type
COMPILED-FUNCTION. Clarify when functions are defined in a
file which is compiled with COMPILE-FILE, and the compiled file is
subsequently LOADed, objects of type COMPILED-FUNCTION result.
Rationale:
This proposal allows users to count on COMPILE and COMPILE-FILE always
producing objects that are COMPILED-FUNCTION-P.
It also states what many people believe to be the minimum functionality
required of a compiler.
However, it allows functions that have not been compiled also to be of
type COMPILED-FUNCTION. For implementations that do not use different
representations for interpreted and compiled functions, it would still
allow COMPILED-FUNCTION and FUNCTION to be synonymous, even if
interpreted functions do not satisfy the requirements for compilation.
Current Practice:
It appears that most implementations currently distinguish compiled
versus non-compiled functions on the basis of representation. It seems
unlikely that any implementation would have problems satisfying the
stated minimum requirements for compilation.
Lucid uses the same representation for both compiled and non-compiled
functions, except there is a bit in the header used to distinguish them.
A-Lisp uses the same representation for both compiled and interpreted
functions and currently labels them both as COMPILED-FUNCTION, but the
implementation of COMPILED-FUNCTION-P could be easily fixed to
distinguish "real" compiled functions.
On the TI Explorer, the COMPILE function can return an object of
either type COMPILED-FUNCTION or LEXICAL-CLOSURE, where the latter
consists of two components -- an environment and a COMPILED-FUNCTION.
There is confusion about whether microcoded functions should be
considered compiled or not.
Cost to implementors:
Unknown, but probably small for either proposal. Proposal
TIGHTEN-COMPILE is probably most consistent with current practice.
Cost to users:
Probably minimal. Since the COMPILED-FUNCTION type specifier is
currently ill-defined, it is hard to imagine that existing programs
can portably rely on any interpretation of what it means that is
inconsistent with what is presented here.
Benefits:
The specification of what the compiler must do is made more explicit.
Discussion:
The FIXNUM and BIGNUM types were also defined in CLtL solely on the
basis of distinguished representations, and that this definition has
proved inadequate for just about all portable usages of these type
specifiers. Defining COMPILED-FUNCTION solely on the basis of
distinguished representation seems like a bad idea.
David Gray notes:
We make good use of the type COMPILED-FUNCTION in our implementation,
but all of the accessor functions for objects of that type are
non-standard, which makes me wonder if it might be best to just remove
this type from the standard along with BIGNUM.
One use of the COMPILED-FUNCTION type is in declarations. A-Lisp and
Lucid, for example, can compile FUNCALL more efficiently if it can be
determined that the function is of type COMPILED-FUNCTION. However,
in order for such declarations to be really useful, there should be a
way to construct an object which is guaranteed to be of type
COMPILED-FUNCTION. Both of the proposals presented require COMPILE
and COMPILE-FILE to construct compiled functions.
Sandra Loosemore says:
I have a marginal preference for proposal TIGHTEN-COMPILE, since it
gives implementors more flexibility. To me it's more important that
COMPILE and COMPILE-FILE be guaranteed to do something, than that I
be able to test whether a function has had those things done to it.
∂13-Mar-89 0748 X3J13-mailer issue COMPILER-DIAGNOSTICS, version 9
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 13 Mar 89 07:48:14 PST
Received: from defun.utah.edu by cs.utah.edu (5.61/utah-2.1-cs)
id AA17028; Mon, 13 Mar 89 08:46:02 -0700
Received: by defun.utah.edu (5.61/utah-2.0-leaf)
id AA02075; Mon, 13 Mar 89 08:45:59 -0700
Date: Mon, 13 Mar 89 08:45:59 -0700
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8903131545.AA02075@defun.utah.edu>
To: x3j13@sail.stanford.edu
Reply-To: cl-compiler@sail.stanford.edu
Subject: issue COMPILER-DIAGNOSTICS, version 9
Forum: Compiler
Issue: COMPILER-DIAGNOSTICS
References: CLtL p. 438-439, 62, 69, 160, 161
Condition System, Revision #18
S:>KMP>cl-conditions.text.34
Issue GC-MESSAGES
Issue RETURN-VALUES-UNSPECIFIED
Issue COMPILER-VERBOSITY
Category: CLARIFICATION, ENHANCEMENT
Edit History: V1, 15 Oct 1988, Sandra Loosemore
V2, 19 Oct 1988, Sandra Loosemore (minor fixes)
V3, 25 Oct 1988, Sandra Loosemore (input from Pitman & Gray)
V4, 01 Nov 1988, Sandra Loosemore (fix typos)
V5, 15 Dec 1988, Dan L. Pierson (new condition types)
V6, 15 Dec 1988, Sandra Loosemore (additions, fix wording)
V7, 16 Dec 1988, Dan L. Pierson (minor cleanup)
V8, 07 Jan 1989, Sandra Loosemore (expand discussion)
V9, 26 Jan 1989, Sandra Loosemore (simplify)
Status: Ready for release
Problem Description:
It is unclear whether various diagnostics issued by the compiler are
supposed to be true errors and warnings, or merely messages.
In some implementations, COMPILE-FILE handles even serious error
situations (such as syntax errors) by printing a message and then
trying to recover and continue compiling the rest of the file, rather
than by signalling an error. While this user interface style is just
as acceptable as invoking the debugger, it means that a normal return
from COMPILE-FILE does not necessarily imply that the file was
successfully compiled.
Many compilers issue warnings about programming style issues (such as
binding a variable that is never used but not declared IGNORE).
Sometimes these messages obscure warnings about more serious problems,
and there should be some way to differentiate between the two. For
example, it should be possible to suppress the style warnings.
Also, neither CLtL nor issue RETURN-VALUES-UNSPECIFIED states what the
return value from COMPILE-FILE should be.
Proposal COMPILER-DIAGNOSTICS:USE-HANDLER:
(1) Introduce a new condition type, STYLE-WARNING, which is a subtype
of WARNING.
(2) Clarify that ERROR and WARNING conditions may be signalled within
COMPILE or COMPILE-FILE, including arbitrary errors which may
occur due to compile-time processing of (EVAL-WHEN (COMPILE) ...)
forms or macro expansion.
Considering only those conditions signalled -by- the compiler (as
opposed to -within- the compiler),
(a) Conditions of type ERROR may be signalled by the compiler in
situations where the compilation cannot proceed without
intervention.
Examples:
file open errors
syntax errors
(b) Conditions of type WARNING may be signalled by the compiler in
situations where the standard explicitly states that a warning must,
should, or may be signalled; and where the compiler can determine
that a situation that "is an error" would result at runtime.
Examples:
violation of type declarations
SETQ'ing or rebinding a constant defined with DEFCONSTANT
calls to built-in Lisp functions with wrong number of arguments
or malformed keyword argument lists
referencing a variable declared IGNORE
unrecognized declaration specifiers
(c) The compiler is permitted to signal diagnostics about matters of
programming style as conditions of type STYLE-WARNING. Although
STYLE-WARNINGs -may- be signalled in these situations, no
implementation is -required- to do so. However, if an
implementation does choose to signal a condition, that condition
will be of type STYLE-WARNING and will be signalled by a call to
the function WARN.
Examples:
redefinition of function with different argument list
unreferenced local variables not declared IGNORE
declaration specifiers described in CLtL but ignored by
the compiler
(3) Require COMPILE and COMPILE-FILE to handle the ABORT restart by
aborting the smallest feasible part of the compilation. State that
both COMPILE and COMPILE-FILE are allowed to establish a default
condition handler. If such a condition handler is established,
however, it must first resignal the condition to give any
user-established handlers a chance to handle it. If all user error
handlers decline, the default handler may handle the condition in an
implementation-specific way; for example, it might turn errors into
warnings.
(4) Specify that COMPILE-FILE returns two values. The first value
is the truename of the output file, or NIL if the file could not be
created. The second value is T if the file was compiled without
errors, or NIL if errors were signalled during compilation.
Rationale:
Introducing the STYLE-WARNING condition allows handlers to distinguish
between potentially serious problems and mere kibitzing on the part of
the compiler.
Requiring any condition handlers established by the compiler to resignal
the condition before proceeding with any implementation-specific action
gives user error handlers a chance to override the compiler's default
behavior. For example, the user error handler could invoke a restart
such as ABORT or MUFFLE-WARNING.
Requiring the compiler to handle the ABORT restart reflects what
several implementations already do (although probably not using this
mechanism). The intent of the wording is to allow an implementation
to abort the entire compilation if it is not feasible to abort a
smaller part.
Requiring a second success-p value to be returned from COMPILE-FILE
gives the user some indication of whether there were serious problems
encountered in compiling the file.
Test Case/Example:
Here is an example of how COMPILE-FILE might set up its condition
handlers. It establishes an ABORT restart to abort the compilation
and a handler to take implementation-specific action on ERROR
conditions. Note that INTERNAL-COMPILE-FILE may set up additional
ABORT restarts.
(defvar *output-file-truename* nil)
(defun compile-file (input-file &key output-file)
(let ((*output-file-truename* nil)
(errors-detected nil))
(with-simple-restart (abort "Abort compilation.")
(handler-bind ((error #'(lambda (condition)
(setq errors-detected t)
(signal condition)
...)))
(internal-compile-file input-file output-file)))
(values *output-file-truename*
errors-detected)))
Current Practice:
No implementation behaves exactly as specified in this proposal.
In VaxLisp, COMPILE-FILE handles most compile-time errors without
invoking the debugger. (It gives up on that top-level form and moves on
to the next one.) Instead of signalling errors or warnings, it simply
prints them out as messages.
In Lucid Common Lisp, COMPILE-FILE invokes the debugger when it encounters
serious problems. COMPILE-FILE returns the pathname for the output file.
Symbolics Genera usually tries to keep compiling when it encounters errors;
so does Symbolics Cloe.
On the TI Explorer, the compiler tries to catch most errors and turn
them into warnings (except for errors on opening a file), but the user
can change special variable COMPILER:WARN-ON-ERRORS to NIL if he wants
to enter the debugger on an error signalled during reading, macro
expansion, or compile-time evaluation. The true name of the output
file is returned as the first value. A second value indicates whether
any errors or warnings were reported.
IIM Common Lisp's compiler handles errors using a resignalling mechanism
similar to what is described here.
Cost to implementors:
The cost to implementors is not trivial but not particularly high. This
proposal tries to allow implementations considerable freedom in what
kinds of conditions the compiler must detect and how they are handled,
while still allowing users some reasonably portable ways to deal with
compile-time errors.
Cost to users:
This is a compatible extension. This proposal may cause users to see
some small differences in the user interface to the compiler, but
implementations already vary quite widely in their approaches. Some
users will probably have to make some minor changes to their code.
Adding the STYLE-WARNING type may cause conflicts with programs
already using that name.
Benefits:
Users are given a way to detect and handle compilation errors, which
would simplify the implementation of portable code-maintenance
utilities. The behavior of the compiler in error situations is made
more uniform across implementations.
Discussion:
The issue of whether the compiler may print normal progress messages
is discussed in detail in a separate issue, COMPILER-VERBOSITY.
∂13-Mar-89 0749 X3J13-mailer issue COMPILER-VERBOSITY, version 6
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 13 Mar 89 07:48:54 PST
Received: from defun.utah.edu by cs.utah.edu (5.61/utah-2.1-cs)
id AA17056; Mon, 13 Mar 89 08:46:44 -0700
Received: by defun.utah.edu (5.61/utah-2.0-leaf)
id AA02078; Mon, 13 Mar 89 08:46:42 -0700
Date: Mon, 13 Mar 89 08:46:42 -0700
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8903131546.AA02078@defun.utah.edu>
To: x3j13@sail.stanford.edu
Reply-To: cl-compiler@sail.stanford.edu
Subject: issue COMPILER-VERBOSITY, version 6
Forum: Compiler
Issue: COMPILER-VERBOSITY
References: CLtL p. 438-329; 426
issue COMPILER-DIAGNOSTICS
Category: ENHANCEMENT
Edit History: V1, 25 Oct 1988, Sandra Loosemore
V2, 12 Dec 1988, Dan L. Pierson (add USE-CONDITIONS)
V3, 15 Dec 1988, Dan L. Pierson (expand on conditions)
V4, 21 Dec 1988, Dan L. Pierson (reword and clarify)
V5, 06 Jan 1989, Sandra Loosemore (update discussion)
V6, 26 Jan 1989, Sandra Loosemore (remove USE-CONDITIONS)
Status: Ready for release
Problem Description:
Implementations vary widely in the amount of information that is printed
out by COMPILE-FILE. In some situations, it would be useful to control
how much information is printed.
Proposal COMPILER-VERBOSITY:LIKE-LOAD:
Introduce special variables, *COMPILE-VERBOSE* and *COMPILE-PRINT*,
with implementation-dependent initial values.
Add :VERBOSE and :PRINT keyword arguments to the function
COMPILE-FILE, analogous to those for the function LOAD.
The :VERBOSE argument (which defaults to the value of
*COMPILE-VERBOSE*), if true, permits COMPILE-FILE to print a message
in the form of a comment to *STANDARD-OUTPUT* indicating what file is
being compiled and other useful information.
The :PRINT argument (which defaults to the value of *COMPILE-PRINT*),
if true, causes information about top-level forms in the file being
compiled to be printed to *STANDARD-OUTPUT*. Exactly what is printed
will vary from implementation to implementation, but nevertheless some
information will be printed.
Introduce a special variable *LOAD-PRINT*, which has an initial value of
NIL. State that the default value of the :PRINT argument to LOAD is
*LOAD-PRINT* (rather than NIL).
Rationale:
This proposal makes COMPILE-FILE behave like LOAD. There is already
some precedent for doing this (for example, issue COMPILE-FILE-PACKAGE,
which makes COMPILE-FILE as well as LOAD rebind *PACKAGE*).
Adding the *LOAD-PRINT* variable allows the printing of messages by
LOAD to be controlled either on a global or a per-call basis.
Current Practice:
COMPILE-FILE prints out progress messages in nearly all
implementations.
Lucid provides a :MESSAGES keyword argument to COMPILE-FILE, which can
either be a stream to send messages to, or NIL to suppress messages.
The default value is T, which sends messages to "the standard terminal
device".
On the TI Explorer, COMPILE-FILE displays the name of the function
being compiled when the option :VERBOSE T is given or special variable
COMPILER:COMPILER-VERBOSE is true. (In other words, they use :VERBOSE
to mean what this proposal says to use :PRINT for.)
Symbolics Cloe already has a *LOAD-PRINT* variable.
Cost to implementors:
This is an incompatible change for some implementations. While the
changes required should be conceptually simple, their implementation
may involve a significant amount of grunt work. At least two
implementations already provide some similar mechanism for suppressing
messages.
Cost to users:
Some (non-portable) user code may break in implementations where this
is an incompatible change.
No user code should be broken by the addition of the *LOAD-PRINT*
variable, since the default behavior for the :PRINT keyword to LOAD
is unchanged.
Benefits:
Users are given a portable way to control how much information is printed
by COMPILE-FILE.
Discussion:
This issue addresses an extension to the language. If this proposal
is not accepted, the standard will simply continue not to say anything
about whether COMPILE-FILE can print progress messages, or what stream
such messages are directed to.
∂13-Mar-89 0815 X3J13-mailer issue CONSTANT-COMPILABLE-TYPES, version 8
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 13 Mar 89 08:15:04 PST
Received: from defun.utah.edu by cs.utah.edu (5.61/utah-2.1-cs)
id AA17983; Mon, 13 Mar 89 09:12:55 -0700
Received: by defun.utah.edu (5.61/utah-2.0-leaf)
id AA02083; Mon, 13 Mar 89 09:12:49 -0700
Date: Mon, 13 Mar 89 09:12:49 -0700
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8903131612.AA02083@defun.utah.edu>
To: x3j13@sail.stanford.edu
Reply-To: cl-compiler@sail.stanford.edu
Subject: issue CONSTANT-COMPILABLE-TYPES, version 8
Forum: Compiler
Issue: CONSTANT-COMPILABLE-TYPES
References: CLtL pp. 56, 77-80, 324
Issue CONSTANT-MODIFICATION
Issue CONSTANT-CIRCULAR-COMPILATION
Issue CONSTANT-ARRAY-ATTRIBUTES
Issue QUOTE-SEMANTICS
Issue LOAD-OBJECTS
Category: CLARIFICATION, ADDITION
Edit history: 11/07/88, V1 by Cris Perdue
11/14/88, V2 by Cris Perdue
11/22/88, V3 by Cris Perdue
12/20/88, V4 by Cris Perdue
01/06/89, V5 by Sandra Loosemore (minor editorial
clarifications, expand discussion)
03/05/89, V6 by Cris Perdue (more response to comments,
especially from Moon and and from Loosemore)
03/05/89, V7 by Loosemore (more editorial tweaks)
03/13/89, V8 by Loosemore (discussion)
Status: Ready for release
Problem description:
CLtL does not specify what objects can be in compiled constants and it
does not say what relationship there is to be between the
constant passed to the compiler and the one that is established by
compiling and then loading its file. Relevant remarks in CLtL
concerning file compilation and the definition of QUOTE suggest that
the compiler handles constants in ways that are not actually possible.
Introduction to the proposal:
The proposal CONSTANT-COMPILABLE-TYPES:SPECIFY attempts to spell out
what types can appear in compiled constants, and what it means when
they appear. Unless stated otherwise, in this proposal where the term
"constant" is used, it means a quoted or self-evaluating constant, not
a named (defconstant) constant.
The key is a definition of a form of equivalence between Lisp objects,
"similarity as constants". Code passed through the file compiler and
then loaded must behave as though quoted constants in it are "similar"
to quoted constants in the corresponding interpreted "source" code.
Because it is legitimate to compile in one address space and load into
a different one, it is necessary for the constraints to be defined
across address spaces. This proposal only concerns quoted constants
to be processed by COMPILE-FILE. Some other issues related to file
compilation are CONSTANT-COLLAPSING, CONSTANT-CIRCULAR-COMPILATION,
and QUOTE-SEMANTICS.
Some implementations "lose information" about some constants during
compilation. Typically all constant arrays become simple arrays
during the process of compiling and loading. We try to balance the
desire for more functionality against the effort required from
implementors.
Comments within the text of the proposal are enclosed in double angle
brackets, <<like this>>.
Proposal: CONSTANT-COMPILABLE-TYPES:SPECIFY
An object may be used as a quoted constant processed by COMPILE-FILE
if the compiler can guarantee that the resulting constant established
by loading the compiled file is "similar as a constant" to the
original. Treatment of uninterned symbols must be consistent across
the entire file as described below. There also is a constraint on
arrays which is not symmetrical; compilation can make arrays
"simpler", but not "less simple". (See below for the definition.)
We refer below to "quoted constants" or just "constants". In this
section these terms refer to objects appearing in expressions of the
form (QUOTE <object>), to objects used as self-evaluating forms, and
to objects appearing in code at locations described as "not
evaluated".
Some types such as streams are not supported in constants. Put
another way, an object containing one of these is not considered
similar as a constant to any other object. Some implementations may
support them and define how they are treated. For any object that
appears in a constant, but is not supported by the language as part of
a constant, the behavior of the compiler is unspecified; either the
the compiler and/or loader will handle that constant (in an
implementation-dependent manner) or the compiler will detect the
situation and signal an error.
Of the types supported in constants, some are treated as aggregate
objects. For these types, being similar as constants is defined
recursively. We say that an object of these types has certain
attributes, and to be similar as a constant to another object, the
values of the corresponding attributes of the two objects must also be
similar as constants.
This kind of definition has problems with any circular or "infinitely
recursive" object such as a list that is an element of itself. We
use the idea of depth-limited comparison, and say that two
objects are similar as constants if they are similar at all finite
levels. This idea is implicit in the definitions below, and applies
in all the places where attributes of two objects are required to be
similar as constants.
Here we define the notion of two objects being "similar as constants",
organizing the definition by type, and note additional constraints
that the compiler and loader working together must meet:
Number
If either of the two objects is a number, both must be of the same
type and must represent the same mathematical value.
Character
If either of the two objects is a character, both must be character
objects that represent the same character. <<Note that this
definition has to depend on the results of the Character Set
proposals.>>
Random-state
Let us say that two random-states are functionally equivalent if
applying RANDOM to them repeatedly always produces the same
pseudo-random numbers in the same order.
Two random-states are similar as constants exactly if copies of them
made via MAKE-RANDOM-STATE are functionally equivalent.
Note that a constant random-state object cannot be used as the "state"
argument to the function RANDOM (because RANDOM side-effects this
data structure).
Symbol
A symbol can only be similar to a symbol. References to interned
symbols are "by name". <<See issue COMPILE-FILE-SYMBOL-HANDLING for
details.>>
If a symbol is not interned, i.e. its home package is NIL, it is
treated in a rather special way. To be similar as a constant to
another symbol, both symbols must be uninterned and have the same
name.
Constants that contain uninterned symbols have to satisfy an extra
constraint. Consider the set of places in a constant that refer to
the same (EQ) uninterned symbol. In any similar constant, the
corresponding places must also all be EQ -- no more places and no
fewer. Moreover, COMPILE-FILE must arrange for the EQness of all
constant uninterned symbols that appear in the file to be preserved,
even if they are referenced in separate constants.
Because hash keys can be aggregate objects and because we treat hash
tables as unordered sets of <key, value> pairs, similarity of hash
tables is more complex. See under "Hash Tables", below, for the
definition.
Package
A package can only be similar as a constant to a package. References
to packages are permitted in any constant. References to packages are
"by name": two packages are similar as constants when their names are
similar as constants. Within a Lisp "address space", packages with
the same name are EQ.
At load time, the package becomes the same as returned by
FIND-PACKAGE, given the package name. An error is signalled if no
package of that name exists at load time.
AGGREGATE TYPES
---------------
For each of the types listed below, if either object is of the given
type, the two objects are similar as constants exactly if the other is
of that type and the values of all of the specified attributes are
similar as constants.
The attributes listed here can be called the "Basic Attributes" of
objects of each of these types.
Cons CAR, CDR.
Array For 1-dimensional arrays:
LENGTH, ARRAY-ELEMENT-TYPE, and ELT for all legal indices.
For arrays of other dimensions:
ARRAY-DIMENSIONS, ARRAY-ELEMENT-TYPE, AREF for all legal
indices.
An array of type SIMPLE-ARRAY can only be similar as a
constant to an array of type SIMPLE-ARRAY. However, we
allow the file-compiler a bit of latitude here. Where
constants in source code are displaced, have fill
pointers, or are adjustable, constants in the code
resulting from compilation and loading are permitted to
lack any or all of these qualities.
Hash Table Keys and value pairs. The table's test is unchanged
also. If the file compiler is given a constant containing a
a hash table that has keys that are similar as
constants, the consequences are undefined.
Consider a hash table as an unordered set of key and
value pairs. Two hash tables are similar as constants
exactly if there is a one-to-one correspondence between
the key and value pairs of each and a one-to-one
correspondence between the uninterned symbols of each
such that the two keys of each corresponding pair are
similar as constants and the two values are also similar
as constants. The correspondence of uninterned symbols
must be consistent with the correspondence defined for
the entire set of constants in the file.
Pathname Each pathname component.
OTHER TYPES
-----------
Stream, Compiled-Function, Readtable, Generic-function, Method
Objects of these types are not supported in compiled
constants.
Function Only function constants that are not compiled-functions
and do not close over any (lexical) variables are
supported in compiled constants.
Two such functions are similar as constants if their
SOURCE-LAMBDA-EXPRESSIONs are similar as constants.
Structure, Standard-object
<<There is a cl-cleanup issue, LOAD-OBJECTS, pending
which proposes a mechanism for dealing with objects.>>
For structure instances with no method defined at compile
time for MAKE-LOAD-FORM, the slot values and the name of
structure type (a symbol reference) are recorded by the
compiler and reconstructed by the loader.
Examples:
If source code contains a constant that could PRINT as (#1=#:FOO
#2=#:FOO #1# #2#), the constant resulting from compiling and loading
that code would have to be PRINTable as (#1=#:FOO #2=#:FOO #1# #2#).
If we make a hash table H, set three variables A, B, and C to
different uninterned symbols named FOO, and enter keys and values as
follows:
(setf (gethash a h) b)
(setf (gethash b h) a)
(setf (gethash c h) c)
If H appears in a compiled constant, after compiling and loading it,
(let ((value (list)))
(maphash #'(lambda (x y) (push (list x y) value)) h)
value)
could print as
((#1=#:FOO #2=#:FOO) (#2# #1#) (#3=#:FOO #3#))
but not as
((#1=#:FOO #2=#:FOO) (#2# #3=#:FOO) (#3# #1#))
Rationale:
For the benefit of users, this proposal tries to define a fairly large
set of types that all Common Lisp implementations are to handle. It
also attempts to leave room for implementations to differ. Some
implementations have made opposing choices because the language
doesn't specify one over the other. Some implementations already
handle constants that this proposal defines as not legal in Common
Lisp programs, and that is useful to users of those systems.
Different implementors have different amounts of resources to apply to
their system, and implementations differ in their whole approach in
some cases.
This proposal appears to reflect user demand and appears not to exceed
the capabilities of most implementations of the language.
The proposal ensures that all references to the same uninterned symbol
within a file will all map to references to just one uninterned symbol
after compiling and loading. This is needed to support PCL.
Current practice:
>From Gail Zacharias (Nov 14): "Coral pretty much implements this
proposal (I think we currently coalesce hash table keys, but that's
just a bug that will be fixed). We also fasdump packages (using the
package name) and compiled functions (but not foreign functions). For
symbols, we dump the name, and if (roughly speaking) the symbol would
get printed with a package prefix, we also dump the package name and
load the symbol into that package (otherwise it gets loaded into the
current load-time package)."
>From David Gray (Nov 9): "The Explorer can compile constant functions,
read tables, and hash tables; an error is signalled for a stream. A
package object used to break the compiler but in release 5 it has been
fixed to generate instructions to call FIND-PACKAGE on the package
name at load time." (Nov 15): [The Explorer does not guarantee
retention of displaced-to and displaced-index-offset attributes.]
"The Explorer also does not currently support dumping closures (either
compiled or evaluated), although non-closure compiled functions can be
dumped."
>From David Moon (Jan 24): "Symbolics Genera current practice: aside
from some current bugs we have with circular structures of certain
types and with preserving the identity of CONSes under EQ, this is
more or less consistent with our current practice, if you made the
changes implied by my earlier comments. We preserve the :displaced-to
and :fill-pointer array attributes. I doubt that we do what the
proposal says for hash-tables, readtables, and random-states. We
support dumping compiled and interpreted functions, but not closures,
which in effect means we don't support dumping functions."
>From Sandra Loosemore (Mar 3): "UCL currently can handle only
constants that are of type number, character, symbol, cons,
simple-vector, or string (which it turns into simple-string). It
signals an error if an attempt is made to compile any other kind of
object as a constant."
Adoption cost:
Not known. Probably moderate or low -- for most implementations. The
cost would be to implementors rather than users since this part of the
language is currently underspecified. The author believes the cost
will be reasonable for KCL, an implementation where there is some
concern about this issue.
This proposal is close to compatible with the Franz, Lucid, Coral,
Texas Instruments, and Symbolics implementations. It is probably
compatible or nearly compatible with other "Lisp Machine"
implementations.
Benefits:
Users would be able to use aggregate objects in constants with
confidence about the behavior of their code.
Conversion cost:
Where this proposal *requires* different behavior than an existing
implementation, there is a conversion cost for users of that
implementation. It appears that this cost will be small, less than
the cost of leaving things unspecified.
Esthetics:
Since there is no adequate definition at present, a fuller definition
would be more esthetic.
Discussion:
This proposal does leave some user-visible attributes of objects
unspecified across the compile-and-load process, except that they must
be consistent with the attributes that must be retained. This
situation is a compromise between the desire for full specification on
the one hand, and on the other hand the desire to leave freedom for
different implementations to remain different and to support some
optimizations such as compacting hash tables and "simplifying" arrays.
Proposals will be entertained for tighter specification of datatypes
such as arrays.
The full extension of the concept of coalescing of constants is to say
that they can be coalesced exactly when they are similar as constants.
Comparing functions semantically is intertwined with the specification
of what conforming programs and implementations are allowed to do.
This proposal does not attempt to do that since compiled functions are
not supported by this proposal in compiled constants.
The definition of similarity for random-states supports the
possibility of random states that are immutable because of being in
compiled constants.
Readtables need not be supported by an implementation. If a readtable
contains only symbols to represent functions, here is Cris Perdue's
suggested spec for similarity of readtables:
Character syntax type for each character in the table;
function for each readmacro character, mappings for
dispatch macros; whether terminating or nonterminating
for each readmacro.
Interest has been expressed by a number of people including users, in
support for user-definable "dumping" of CLOS objects and structure
instances. The cleanup issue LOAD-OBJECTS deals with this.
This subsumes the issue CONSTANT-ARRAY-ATTRIBUTES.
The main point of disagreement on this proposal over its handling
of constant functions.
Sandra Loosemore says:
I plan to submit an amendment to this proposal which would remove the
requirement that the compiler be able to dump non-compiled, non-closed
functions. The reason for removing this requirement is that there is
no way to portably construct an object which is guaranteed to be a
non-compiled, non-closed function. Note that implementations are
permitted to make all functions COMPILED-FUNCTIONs.
Dick Gabriel says:
I guess I pretty strongly object to leaving functions out of the list
of constants that can appear in compiled code. The part that's
disturbing is that such non-Lispy things like arrays, hashtables, and
pathnames get better treatment than functions, the most Lispy part of
Common Lisp. I wonder how many implementations will be forced to come
within an inch of the required functionality to implement a first-rate
CLOS?
The specification of the subset of functions that are acceptable as
compiled constants cannot be tested for within Common Lisp itself.
I suggest we ask implementors (Lucid included) to bite the bullet and
handle this case correctly. Won't our grandchildren appreciate us
treating Common Lisp like Lisp and not like PASCAL?
If we were to specify that all functions could appear as constants, we
would also need to clarify whether the closed-over variable bindings
become immutable, and also deal with whether bindings that are closed
over more than one function retain their uniqueness. Also, the cost
to implementors to add support for dumping non-interpreted functions
may be quite high.
∂13-Mar-89 0821 X3J13-mailer issue CONSTANT-CIRCULAR-COMPILATION, version 7
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 13 Mar 89 08:21:42 PST
Received: from defun.utah.edu by cs.utah.edu (5.61/utah-2.1-cs)
id AA18436; Mon, 13 Mar 89 09:19:31 -0700
Received: by defun.utah.edu (5.61/utah-2.0-leaf)
id AA02090; Mon, 13 Mar 89 09:19:28 -0700
Date: Mon, 13 Mar 89 09:19:28 -0700
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8903131619.AA02090@defun.utah.edu>
To: x3j13@sail.stanford.edu
Reply-To: cl-compiler@sail.stanford.edu
Subject: issue CONSTANT-CIRCULAR-COMPILATION, version 7
Forum: Compiler
Issue: CONSTANT-CIRCULAR-COMPILATION
References: Issue CONSTANT-COLLAPSING
Issue QUOTE-SEMANTICS
Category: CLARIFICATION, ADDITION
Edit History: V1, 07 Nov 1988, Sandra Loosemore
V2, 14 Nov 1988, Cris Perdue
V3, 12 Dec 1988, Sandra Loosemore (merge versions 1 and 2)
V4, 03 Jan 1989, Sandra Loosemore (add PRESERVE-SHARING-ONLY)
V5, 06 Jan 1989, Sandra Loosemore (minor wording changes)
V6, 08 Feb 1989, Sandra Loosemore (replace FLAG with YES)
V7, 11 Mar 1989, Sandra Loosemore (error terminology)
Status: Ready for release
Problem Description:
CLtL does not specify whether constants containing circular or
recursive references may be compiled. It is also not clear whether
the compiler must preserve sharing of EQ substructures; that is, whether
subobjects that are EQ in the source code must remain EQ after being
compiled.
The proposals below apply to constants appearing in a file compiled by
COMPILE-FILE. If proposal QUOTE-SEMANTICS:SAME-AS-COMPILE-FILE
passes, then the same constraints would apply to all constants. The
minimal scope over which sharing would be required to be detected is
over a single call to EVAL or COMPILE.
In the proposals that follow, "preserving EQness" means that
subobjects that are EQ in the source code must remain EQ after being
compiled; that is, things don't get "less EQ" after compilation.
(Note that coalescing of constants implies that things may get "more
EQ".)
Proposal CONSTANT-CIRCULAR-COMPILATION:NO
State that the consequences are undefined if an object containing a
circular reference appears as a constant to be compiled. State that
the compiler is not required to preserve EQness of substructures.
Rationale:
This proposal would not require any existing implementation to change.
Disallowing portable programs from containing circular constants
allows compiled file loaders to use somewhat simpler implementation
strategies (for example, to build constants in a strict bottom-up
fashion).
Proposal CONSTANT-CIRCULAR-COMPILATION:PRESERVE-SHARING-ONLY
State that the consequences are undefined if an object containing a
circular reference appears as a constant to be compiled. State that
the compiler is required to preserve EQness of substructures within a
file compiled with COMPILE-FILE.
Rationale:
Disallowing portable programs from containing circular constants
allows compiled file loaders to use somewhat simpler implementation
strategies (for example, to build constants in a strict bottom-up
fashion).
Some programs (such as PCL) have come to depend on COMPILE-FILE
preserving the EQness of uninterned symbols, and it is cleaner
to require sharing to be preserved in general instead of making
symbols be a special case. Requiring sharing to be preserved still
allows loaders to build constants bottom-up.
Proposal CONSTANT-CIRCULAR-COMPILATION:YES
State that objects containing circular references may legitimately
appear as constants to be compiled. State that the compiler is
required to preserve EQness of substructures within a file compiled
with COMPILE-FILE.
Rationale:
Users seem to expect this functionality, and some implementations
already provide it.
Current Practice:
A-Lisp preserves EQness of substructures (since it makes an effort to
collapse isomorphic structures) but signals an error if an attempt is
made to compile a circular constant. PSL and Utah Common Lisp both
get stuck in an infinite loop if an attempt is made to compile a
reentrant structure. The TI Explorer compiler is able to reproduce
recursive lists and arrays, but currently hangs in a loop on a
circular list. Neither the Explorer nor Symbolics Genera 7.x detects
EQness of list CDRs. Lucid handles circular constants correctly.
Franz uses a flag to control whether or not to attempt to detect
circular constants. KCL handles circular structures, but only detects
sharing of top-level structure (it does not traverse constants to look
for shared substructure).
Cost to implementors:
We know of no implementation that would have to change under proposal
NO.
For proposal YES, some implementations would require sweeping
changes; in some cases a completely different dumper/loader strategy
would have to be implemented.
The cost of proposal PRESERVE-SHARING-ONLY would fall somewhere in
between.
Cost to users:
The situation now is that programs which depend upon circularity or
sharing of substructure being preserved by the compiler are already
nonportable. Proposal NO simply formalizes the status quo. Proposal
YES would offer users functionality that is currently not portable.
Benefits:
An area of ambiguity in the language is removed.
Discussion:
The issue of compiler speed is largely a red herring on this issue;
the overhead of detecting circularities is generally quite small. The
main question is whether we should require some implementations to
completely redo their compiler/loader interface in order to support
circular constants.
It has been argued that any "serious" implementation will support
circular constants anyway, because of customer demand. However, since
there appears to be only one implementation (Lucid) that now
implements proposal YES in its full generality, perhaps the demand for
this feature is not really all that strong.
Earlier drafts of this writeup contained a proposal FLAG which would
have added a variable *COMPILE-CIRCLE*, similar to *PRINT-CIRCLE*.
However, there were unresolved problems about what would happen if the
value of this variable were altered within the file being compiled,
and it was generally agreed that this proposal didn't have any
particular advantages over proposal YES and just introduced
unnecessary hairiness.
Since it is usually fairly simple to detect circular constants,
Loosemore would support an amendment to proposals NO and
PRESERVE-SHARING-ONLY to change the first sentence to read:
State that the consequences are unspecified if an object containing
a circular reference appears as a constant to be compiled.
Implementations must either correctly handle the circular reference
or signal an error.
This is similar to the language which is already used in proposal
CONSTANT-COMPILABLE-TYPES:SPECIFY.
∂13-Mar-89 0824 X3J13-mailer issue CONSTANT-COLLAPSING, version 5
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 13 Mar 89 08:24:21 PST
Received: from defun.utah.edu by cs.utah.edu (5.61/utah-2.1-cs)
id AA18594; Mon, 13 Mar 89 09:22:09 -0700
Received: by defun.utah.edu (5.61/utah-2.0-leaf)
id AA02093; Mon, 13 Mar 89 09:22:05 -0700
Date: Mon, 13 Mar 89 09:22:05 -0700
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8903131622.AA02093@defun.utah.edu>
To: x3j13@sail.stanford.edu
Reply-To: cl-compiler@sail.stanford.edu
Subject: issue CONSTANT-COLLAPSING, version 5
Forum: Compiler
Issue: CONSTANT-COLLAPSING
References: CLtL p. 78, 87
Issue CONSTANT-MODIFICATION
Issue CONSTANT-COMPILABLE-TYPES
Issue EQUAL-STRUCTURE
Issue QUOTE-SEMANTICS
Category: CHANGE
Edit History: V1, 07 Nov 1988, Sandra Loosemore
V2, 12 Dec 1988, Sandra Loosemore
V3, 03 Jan 1989, Sandra Loosemore
V4, 06 Jan 1989, Sandra Loosemore
V5, 11 Mar 1989, Sandra Loosemore
Status: Ready for release
Problem Description:
CLtL states that an implementation is permitted to "collapse" or
coalesce constants appearing in code to be compiled if they are EQUAL.
The definition of EQUAL does not permit coalescing of more general
isomorphic data structures (such as arrays and structures), which is
often desirable.
Issue QUOTE-SEMANTICS deals with whether coalescing may be performed
only by COMPILE-FILE, or by COMPILE and EVAL as well. If proposal
QUOTE-SEMANTICS:SAME-AS-COMPILE-FILE passes, then coalescing could be
performed on all constants.
CLtL says: "An object is considered to be a constant in code to be
compiled if it is a self-evaluating form or contained in a QUOTE
form".
Proposal CONSTANT-COLLAPSING:GENERALIZE:
State the an implementation is permitted to coalesce constants
appearing in code to be compiled if they are equivalent under the
relationship defined in proposal CONSTANT-COMPILABLE-TYPES:SPECIFY.
Rationale:
There is little reason why implementations should not be allowed to
perform more general collapsing of structures, since the arguments
against doing so also apply to collapsing of EQUAL structures, which
is already permitted. The arguments for coalescing of EQUAL structures
(primarily space reduction) also apply to coalescing of structures that
are equivalent under a more general coalescing predicate.
Current Practice:
Both PSL/PCLS and A-Lisp collapse isomorphic arrays and structures,
and certain other data types that are defined internally as structures
(RANDOM-STATEs, for example). Lucid Common Lisp also uses a more
general coalescing predicate than EQUAL.
Cost to implementors:
None. This extends the range of permitted behavior for
implementations but does not require any implementation to change.
Cost to users:
Programs that depend on objects not being coalesced except when they
are EQUAL may break under this proposal. The only way one would be
able to detect that coalescing has taken place is if objects that were
not EQ in the source file become EQ after compilation; accessors on
the objects would return the same values regardless of whether or not
coalescing has taken place.
Benefits:
Collapsing of isomorphic arrays may lead to significant memory savings
in some applications.
Discussion:
This proposal depends heavily on issue CONSTANT-COMPILABLE-TYPES.
Some people believe that if the definition of EQUAL weren't "broken",
there wouldn't be any need for this proposal.
There is no inherent reason why the "coalescing predicate" must be the
same as the relationship used by the compiler/loader to construct
equivalent copies of objects of constants, but making the same rules
be applied in both situations simplifies the language somewhat.
∂13-Mar-89 0834 X3J13-mailer issue LOAD-TIME-EVAL, version 11
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 13 Mar 89 08:34:06 PST
Received: from defun.utah.edu by cs.utah.edu (5.61/utah-2.1-cs)
id AA18990; Mon, 13 Mar 89 09:31:55 -0700
Received: by defun.utah.edu (5.61/utah-2.0-leaf)
id AA02140; Mon, 13 Mar 89 09:31:50 -0700
Date: Mon, 13 Mar 89 09:31:50 -0700
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8903131631.AA02140@defun.utah.edu>
To: x3j13@sail.stanford.edu
Reply-To: cl-compiler@sail.stanford.edu
Subject: issue LOAD-TIME-EVAL, version 11
On this issue, we've come up with an improved version of the proposal that
was accepted at the January meeting.
Forum: Compiler
Issue: LOAD-TIME-EVAL
References: #, (p. 356), (EVAL-WHEN (LOAD) ...) (p. 69-70)
issue SHARP-COMMA-CONFUSION
Category: ADDITION
Edit history: 06-Jun-87, Version 1 by James Kempf
17-Jul-87, Version 2 by James Kempf
12-Nov-87, Version 3 by Pitman (alternate direction)
01-Feb-88, Version 4 by Moon
(from version 2 w/ edits suggested by Masinter)
06-Jun-88, Version 5 by Pitman
(fairly major overhaul, merging versions 3 and 4)
21-Sep-88, Version 6 by Moon (stripped down)
17-Oct-88, Version 7 by Loosemore (change direction again)
30-Dec-88, Version 8 by Loosemore (tweaks)
23-Jan-89, Version 9 by Loosemore (amendments)
02-Mar-89, Version 10 by Loosemore (new proposal)
11-Mar-89, Version 11 by Loosemore
Problem description:
Common Lisp provides reader syntax (#,) which allows the programmer
to designate that a particular expression within a program is to be
evaluated early (at load time) but to later be treated as a constant.
Unfortunately, no access to this capability is available to programs
which construct other programs without going through the reader.
Some computations can be deferred until load time by use of EVAL-WHEN,
but since EVAL-WHEN must occur only at toplevel, and since the nesting
behavior of EVAL-WHEN is quite unintuitive, EVAL-WHEN is not a general
solution to the problem of load-time computation of program constants.
Proposal R**2-NEW-SPECIAL-FORM was approved at the January 1989
meeting. After the meeting, some additional suggestions were made that
have been incorporated into proposal R**3-NEW-SPECIAL-FORM. The sections
of the two proposals that differ are marked with change bars in the margin.
Proposal (LOAD-TIME-EVAL:R**2-NEW-SPECIAL-FORM):
Add a new special form, LOAD-TIME-VALUE, which has the following
contract:
LOAD-TIME-VALUE form &optional read-only-p [Special Form]
LOAD-TIME-VALUE provides a mechanism for delaying evaluation of <form>
until the expression is in the "runtime" environment.
If a LOAD-TIME-VALUE expression is seen by COMPILE-FILE, the compiler
| performs normal semantic processing such as macro expansion but
| arranges for the evaluation of <form> to occur at load time in a null
lexical environment, with the result of this evaluation then being
treated as an immediate quantity at run time. It is guaranteed that
the evaluation of <form> will take place only once when the file is
loaded, but the order of evaluation with respect to the "evaluation"
of top-level forms in the file is unspecified.
If a LOAD-TIME-VALUE expression appears within a function compiled
with COMPILE, the <form> is evaluated at compile time in a null lexical
environment. The result of this compile-time evaluation is treated as
an immediate quantity in the compiled code.
In interpreted code, <form> is evaluated (by EVAL) in a null
lexical environment, and one value is returned. Implementations which
implicitly compile (or partially compile) expressions passed to
EVAL may evaluate the <form> only once, at the time this
compilation is performed. This is intentionally similar to the
freedom which implementations are given for the time of expanding
macros in interpreted code.
| Note that, in interpreted code, there is no guarantee as to when
| evaluation of <form> will take place, or the number of times the
| evaluation will be performed. Since successive evaluations of the
| same LOAD-TIME-VALUE expression may or may not result in an evaluation
| which returns a "fresh" object, destructive side-effects to the
| resulting object may or may not persist from one evaluation to the
| next. It is safest to explicitly initialize the object returned by
| LOAD-TIME-VALUE, if it is later modified destructively.
| Implementations must guarantee that each reference to a
| LOAD-TIME-VALUE expression results in at least one evaluation of its
| nested <form>. For example,
| (DEFMACRO CONS-SELF (X)
| `(CONS ,X ,X))
| (CONS-SELF (LOAD-TIME-VALUE (COMPUTE-IT)))
| must perform two calls to COMPUTE-IT; although there is only one
| unique LOAD-TIME-VALUE expression, there are two distinct references
| to it.
|
| In the case of a LOAD-TIME-VALUE form appearing in a quoted expression
| passed to EVAL, each call to EVAL must result in a new evaluation of
| <form>. For example,
| (DEFVAR X 0)
| (DEFUN FOO () (EVAL '(LOAD-TIME-VALUE (INCF X))))
| is guaranteed to increment X each time FOO is called, while
| (DEFUN FOO () (LOAD-TIME-VALUE (INCF X)))
| may cause X to be evaluated only once.
The READ-ONLY-P argument designates whether the result can be considered
read-only constant. If NIL (the default), the result must be considered
ordinary, modifiable data. If T, the result is a read-only quantity
which may, as appropriate, be copied into read-only space and/or shared
with other programs. (Because this is a special form, this argument is
-not- evaluated and only the literal symbols T and NIL are permitted.)
Rationale:
LOAD-TIME-VALUE is a special form rather than a function or macro
because it requires special handling by the compiler.
Requiring the compiler to perform semantic processing such as macro
expansion on the nested <form>, rather than delaying all such processing
until load time, has the advantages that fewer macro libraries may need
to be available at load time, and that loading may be faster and result
in less consing due to macroexpansion. If users really want to delay
macroexpansion to load time, this can be done with an explicit call to
EVAL, e.g.
(LOAD-TIME-VALUE (EVAL '(MY-MACRO)))
Allowing the same LOAD-TIME-VALUE to cause its nested <form> to be
evaluated more than once makes simplifies its implementation in
interpreters which do not perform a preprocessing code walk. It also
makes the rules for the time of its processing analogous to those
for macro expansion.
This proposal explicitly does -not- tie LOAD-TIME-VALUE to the #,
read macro. Doing so would be an incompatible change to the definition
of #, (which is reliably useful only -inside- quoted structure,
while LOAD-TIME-VALUE must appear -outside- quoted structure in a
for-evaluation position).
The requirement that LOAD-TIME-VALUE expressions be evaluated once per
reference (rather than once per unique expression) prevents problems
that could result by performing destructive side-effects on a value
that is unexpectedly referenced in more than one place.
Proposal (LOAD-TIME-EVAL:R**3-NEW-SPECIAL-FORM):
Add a new special form, LOAD-TIME-VALUE, which has the following
contract:
LOAD-TIME-VALUE form &optional read-only-p [Special Form]
LOAD-TIME-VALUE provides a mechanism for delaying evaluation of <form>
until the expression is in the "runtime" environment.
If a LOAD-TIME-VALUE expression is seen by COMPILE-FILE, the compiler
| performs its normal semantic processing (such as macro expansion and
| translation into machine code) on the form, but arranges for the
| execution of <form> to occur at load time in a null
lexical environment, with the result of this evaluation then being
treated as an immediate quantity at run time. It is guaranteed that
the evaluation of <form> will take place only once when the file is
loaded, but the order of evaluation with respect to the "evaluation"
of top-level forms in the file is unspecified.
If a LOAD-TIME-VALUE expression appears within a function compiled
with COMPILE, the <form> is evaluated at compile time in a null lexical
environment. The result of this compile-time evaluation is treated as
an immediate quantity in the compiled code.
In interpreted code, <form> is evaluated (by EVAL) in a null
lexical environment, and one value is returned. Implementations which
implicitly compile (or partially compile) expressions passed to
EVAL may evaluate the <form> only once, at the time this
compilation is performed. This is intentionally similar to the
freedom which implementations are given for the time of expanding
macros in interpreted code.
| If the same (compared with EQ) list (LOAD-TIME-VALUE <form>) is
| evaluated or compiled more than once, it is unspecified whether <form>
| is evaluated only once or is evaluated more than once. This can
| happen both when an expression being evaluated or compiled shares
| substructure, and when the same expression is passed to EVAL or to
| COMPILE multiple times. Since a LOAD-TIME-VALUE expression may be
| referenced in more than one place and may be evaluated multiple times
| by the interpreter, it is unspecified whether each execution returns
| a "fresh" object or returns the same object as some other execution.
| Users must use caution when destructively modifying the resulting
| object.
|
| If two lists (LOAD-TIME-VALUE <form>) are EQUAL but not EQ, their
| values always come from distinct evaluations of <form>. Coalescing
| of these forms is not permitted.
The READ-ONLY-P argument designates whether the result can be considered
read-only constant. If NIL (the default), the result must be considered
ordinary, modifiable data. If T, the result is a read-only quantity
which may, as appropriate, be copied into read-only space and/or shared
with other programs. (Because this is a special form, this argument is
-not- evaluated and only the literal symbols T and NIL are permitted.)
Rationale:
LOAD-TIME-VALUE is a special form rather than a function or macro
because it requires special handling by the compiler.
Requiring the compiler to perform semantic processing such as macro
expansion on the nested <form>, rather than delaying all such processing
until load time, has the advantages that fewer macro libraries may need
to be available at load time, and that loading may be faster and result
in less consing due to macroexpansion. If users really want to delay
macroexpansion to load time, this can be done with an explicit call to
EVAL, e.g.
(LOAD-TIME-VALUE (EVAL '(MY-MACRO)))
Allowing the same LOAD-TIME-VALUE to cause its nested <form> to be
evaluated more than once makes simplifies its implementation in
interpreters which do not perform a preprocessing code walk. It also
makes the rules for the time of its processing analogous to those
for macro expansion.
This proposal explicitly does -not- tie LOAD-TIME-VALUE to the #,
read macro. Doing so would be an incompatible change to the definition
of #, (which is reliably useful only -inside- quoted structure,
while LOAD-TIME-VALUE must appear -outside- quoted structure in a
for-evaluation position).
Allowing multiple references to the same LOAD-TIME-VALUE expression
to result in only one interpretation allows it to be specified more
cleanly. It also allows interpreters that do not perform a prepass
to cache LOAD-TIME-VALUE expressions.
Current Practice:
This is an addition to the language and has not yet been implemented.
Cost to Implementors:
In compiled code, (LOAD-TIME-VALUE <form>) is similar to
'#,<form>. Most implementations can probably make use of the same
mechanism they use to handle #, to handle LOAD-TIME-VALUE. Note that
#, does not currently provide a mechanism for dealing with
non-read-only-ness.
Implementing LOAD-TIME-VALUE in the interpreter should be fairly
straightforward, since one simply needs to evaluate the <form> in the
null lexical environment. Implementations that use a preprocessing
code walk in the interpreter to perform macro expansion could process
LOAD-TIME-VALUE forms at that time.
Some code-walkers would have to be taught about this new
special form. Such changes would likely be trivial.
Cost to Users:
Some code-walkers would have to be taught about this new
special form. Such changes would likely be trivial.
Benefits:
Users are given a mechanism that to force evaluation to be delayed
until load time that does not rely on a feature of the reader.
Discussion:
Earlier versions (up to version 7) of this proposal stated that
all semantic processing of the LOAD-TIME-VALUE form should be postponed
until load time.
The semantics of LOAD-TIME-VALUE would be simplified considerably if
the READ-ONLY-P argument were removed and destructive operations on
the result of evaluating <form> prohibited. However, some people feel
that the ability to destructively modify the value is an essential
feature to include.
"Collapsing" of multiple references to the same LOAD-TIME-VALUE
expression could be allowed for read-only situations, but it seems
like it would be more confusing to make it legal in some situations
and not in others.
A number of other alternatives have been considered on this issue,
including:
- A proposal for a new special form that would force evaluation of
the <form> to happen only once. This was rejected because of
implementation difficulties.
- A proposal to add a function making the "magic cookie" used by #,
available to user code. The current proposal does not prevent such
a function from being added, but this approach appeared to have
less support than making the hook available as a new special form.
- A proposal to remove #, entirely (issue SHARP-COMMA-CONFUSION).
- A suggestion to change the behavior of (EVAL-WHEN (LOAD) ...).
Kent Pitman says:
Although I'm willing to take multiple evaluation in the interpreter
as a compromise position, I would like it mentioned in the discussion
that this was only an expedient to getting this issue accepted at all,
and that I'm not really happy about it. I have said that I think a
number of our lingering problems (with EVAL-WHEN, COMPILER-LET, and
this -- for example) are due to the presence of interpreters which do
not do a semantic-prepass at a known time. If I had my way, we would
require a semantic pre-pass and we would then be able to forbid
multiple evaluations even in the interpreter.
Moon and Gray support proposal R**3-NEW-SPECIAL-FORM.
Pitman also expressed willingness to go along with
R**3-NEW-SPECIAL-FORM, but was somewhat concerned that coalescing
LOAD-TIME-VALUE results based on EQ-ness of the LOAD-TIME-VALUE form
could conceivably lead to trouble down the line. However, since he
could provide no actual examples to back up that worry, and since the
majority opinion was that some implementations would find a
restriction against such coalescing an undue burden, the decision was
made to just `note the concern' and proceed on. Sandra Loosemore and
JonL White concur with this position.
∂13-Mar-89 0837 @Score.Stanford.EDU:nilsson@Tenaya.Stanford.EDU Ullman and NAE
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 13 Mar 89 08:37:44 PST
Received: from Tenaya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Mon 13 Mar 89 08:29:11-PST
Received: by Tenaya.Stanford.EDU (NeXT-0.8/NeXT-0.8)
id AA05509; Mon, 13 Mar 89 08:26:40 PST
Date: Mon, 13 Mar 89 08:26:40 PST
From: nilsson@tenaya.Stanford.EDU (Nils Nilsson)
Message-Id: <8903131626.AA05509@Tenaya.Stanford.EDU>
To: faculty@score.Stanford.EDU
Subject: Ullman and NAE
Cc: nilsson@Tenaya.Stanford.EDU
(If you already received a message like this, please
forgive this extra one. I'm having trouble with a new
mailing system.)
I have just learned that our very own Jeff Ullman
has been elected to the National Academy of
Engineering! This is great news for Jeff and for
CS at Stanford. Congratulations to Jeff on behalf
of all of us!
Carolyn Tajnai: I assume that you will get this
news to the Campus Report with any additional
background that may be needed (picture, etc.) Jeff
is reading electronic mail while on sabbatical, so
maybe he could provide an extra detail or two if
needed.
-Nils
∂13-Mar-89 0840 X3J13-mailer Issue: UNSOLICITED-MESSAGES
Received: from Think.COM by SAIL.Stanford.EDU with TCP; 13 Mar 89 08:40:09 PST
Return-Path: <barmar@Think.COM>
Received: from OCCAM.THINK.COM by Think.COM; Mon, 13 Mar 89 11:34:05 EST
Date: Mon, 13 Mar 89 11:35 EST
From: Barry Margolin <barmar@Think.COM>
Subject: Issue: UNSOLICITED-MESSAGES
To: Kent M Pitman <KMP@stony-brook.scrc.symbolics.com>
Cc: chapman%aitg.DEC@decwrl.dec.com, x3j13@sail.stanford.edu
In-Reply-To: <890312191349.9.KMP@BOBOLINK.SCRC.Symbolics.COM>
Message-Id: <19890313163525.7.BARMAR@OCCAM.THINK.COM>
Date: Sun, 12 Mar 89 19:13 EST
From: Kent M Pitman <KMP@stony-brook.scrc.symbolics.com>
I agree that this is an important issue.
I am not sure I agree with the proposed solution -- partly because
I don't think it goes nearly far enough, and partly because I think the
wording for the place where it stops encourages might actually encourage
more `abuse' than currently exists.
I think it should be possible to know with certainly that calling EQ,
CONS, or even COMPILE, was not going to do I/O, at least in
the normal case.
Do progress notes in the wholine count as output? If not, why not? If
so, are you proposing that they be prohibited? In Genera, calling
COMPILE displays "Compiling <name>" in the wholine, and calling
READ-CHAR on a console stream displays "User Input" in the wholine. I
like these things, but I think it will be difficult to express this
distinction in general enough terms in the standard.
In exceptional cases, CONS might produce GC warnings
or COMPILE might produce compiler warnings, but never should COMPILE
type out anything like
Compiling FOO.
or should EQ type out
Performing EQ comparison of #<FOO 32> and #<BAR 17>.
Right now, nothing assures me of this and I find that disturbing.
Why is this problem unique to Lisp? Is there any wording in the C
standard that explicitly prohibits malloc() from causing output? I
doubt it, yet I don't think they find this disturbing.
I think market forces should be enough to prevent really silly
unsolicited messages, just as all serious Lisp implementations have a GC
even though CLtL never mentions it.
barmar
∂13-Mar-89 0853 X3J13-mailer issue MACRO-CACHING, version 2
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 13 Mar 89 08:49:54 PST
Received: from defun.utah.edu by cs.utah.edu (5.61/utah-2.1-cs)
id AA19529; Mon, 13 Mar 89 09:47:42 -0700
Received: by defun.utah.edu (5.61/utah-2.0-leaf)
id AA02151; Mon, 13 Mar 89 09:47:38 -0700
Date: Mon, 13 Mar 89 09:47:38 -0700
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8903131647.AA02151@defun.utah.edu>
To: x3j13@sail.stanford.edu
Reply-To: cl-compiler@sail.stanford.edu
Subject: issue MACRO-CACHING, version 2
Issue: MACRO-CACHING
Forum: Compiler
References: 8.2 Macro Expansion (CLtL pp151-152),
Issues PACKAGE-CLUTTER, LISP-SYMBOL-REDEFINITION,
QUOTE-SEMANTICS (a.k.a. QUOTE-MAY-COPY),
and MACRO-ENVIRONMENT-EXTENT
Category: Clarification
Edit history: 31-Jan-89, Version 1 by Pitman
11-Mar-89, Version 2 by Loosemore (add discussion)
Status: Ready for release
Background:
CLtL suggests that macro caching is a legitimate strategy.
Two particular kinds of caching are common:
Displacement. A macro expansion function displaces the actual macro in
order to avoid any later need for lookup.
Table. A macro expression is looked up in a cache (such as a hash table)
to avoid having to run the expander code.
While CLtL seems to expressly suggest these strategies to be legitimate,
linguistic constraints show that in most cases they are not. The problems
are things like:
- lexical scoping (MACROLET and SYMBOL-MACROLET, and FLET and LET to
the extent that they shadow the effect of MACROLET and SYMBOL-MACROLET,
respectively).
- ``read only'' structure
To see the problem, consider the following examples:
(SETQ FOO1 '(FOO))
(EVAL `(LIST (MACROLET ((FOO (&WHOLE FORM) '(+ 1 1))) ,FOO1)
(MACROLET ((FOO (&WHOLE FORM) '(+ 1 2))) ,FOO1)))
=> (2 3)
Note that because the lexical contour may vary for an EQL expression,
however, displacing the expansion will cause confusion:
(DEFUN DISPLACE (X Y)
(SETF (CAR X) (CAR Y))
(SETF (CDR X) (CDR Y))
X)
(DEFVAR FOO2 '(FOO))
(EVAL `(LIST (MACROLET ((FOO (&WHOLE FORM)
(DISPLACE FORM '(+ 1 1)))) ,FOO2)
(MACROLET ((FOO (&WHOLE FORM)
(DISPLACE FORM '(+ 1 2)))) ,FOO2)))
=> (2 2)
CLtL suggests that a displacement hook might be placed in
*MACROEXPANSION-HOOK*. The above example shows that to be an
unreliable technique.
If this were not enough, displacement is also inappropriate because
no Common Lisp primitive can tell the difference between regular list
structure and read-only list structure. Since a macro form being
expanded might have been read-only in some implementations (e.g., EVAL
of a quoted list), the macro cannot reliably side-effect the structure.
In the case of table-lookup, the problem is more complicated.
Table-lookup does not have a necessary effect beyond the particular
lookup being done at the moment. To do table-lookup correctly relies
on the key being not only the expression but also the lexical
environment object. Whether the cost of making and throwing away so
many tables was worth the savings over running the macro expander is
not at all clear. And the GC effects of caching every macro environment
ever seen may be extraordinary, however correctness could in principle
be preserved by doing such a two-dimensional lookup... at least unless
we decide that macro environments have only dynamic extent. [A separate
proposal, MACRO-ENVIRONMENT-EXTENT, addresses this issue. If it passed,
then there would really be no way for users to do reliable macro caching
without cooperation from the system to have the cache be part of the
environment itself.]
Problem Description:
Macro caching by displacement is provably not semantically valid.
Macro caching by table lookup is difficult for a user to do correctly,
and in any case is not possible to handle efficiently in user code.
Proposal (MACRO-CACHING:DISALLOW):
1. a. Clarify that macro caching by displacement is not semantically
valid in user code.
b. Clarify that macro caching by displacement is semantically valid
for system macros and special forms, provided that such caching
does not prejudice the expansion of user-code contained in any
displaced code. For example:
(PROG () (FOO))
could displace to a BLOCK, but the (FOO) must appear un-expanded
in the BLOCK in case the BLOCK occurs in more than one lexical
environment.
2. a. Clarify that macro caching by table lookup is not semantically
valid in user code in order to correctly respect the lexical
environment.
Implementations are free to extend the language to permit such
lookup and to offer functions which support it in a more efficient
way, but code using such functions would, of course, not be portable.
b. Clarify that macro caching by table lookup is valid for the system,
but only if it correctly respects the lexical environment.
Proposal (MACRO-CACHING:RESTRICT):
Like DISALLOW, but change 2a to:
Clarify that macro caching by table lookup is semantically valid only
if the lookup is keyed both on the form and the environment.
Implementations are free to extend the language to offer functions
which support it in a more efficient way, but code using such functions
would, of course, not be portable.
Rationale:
1. a. Displacement has effects which by their nature transcend
lexical boundaries.
b. The system can assure that lexical boundaries are irrelevant in some
cases because users are not permitted to redefine or shadow definitions
in the initial LISP system. [See issues PACKAGE-CLUTTER and
LISP-SYMBOL-REDEFINITION.]
2. a. Users can only associate an environment with a macro cache table
in a very clumsy way. Also, Permitting them to do so at all forces
macro environments to have indefinite extent, and works against
efficiency in compilers.
b. The system is capable of allocating space in an environment object
for a macro cache which can be reliably kept up in synch with the
lexical environment environment.
Test Case:
;; #1: File compiling this definition in some implementations will produce
;; a definition that returns read-only list structure. The call to EVAL
;; on the result must not try to modify the read-only structure during
;; macroexpansion. [See issue QUOTE-SEMANTICS.]
(DEFUN READ-ONLY-FOO () '(MACROLET ((FOO (&WHOLE FORM) (+ 1 1))) (FOO)))
(EVAL (READ-ONLY-FOO))
=> 2
;; #2: This constructs a form and then uses it in two places in another
;; constructed form. Each of the uses is in a different lexical
;; contour, so must be expanded differently.
(LET ((FOO (LIST 'FOO)))
(EVAL `(LIST (MACROLET ((FOO (&WHOLE FORM) '(+ 1 1))) ,FOO)
(MACROLET ((FOO (&WHOLE FORM) '(+ 1 2))) ,FOO))))
=> (2 3)
;; #3: This is effectively the same thing but involves a MACROLET
;; shadowing a DEFMACRO rather than two MACROLETs, since some
;; implementations might only be caching expansions that come
;; from DEFMACRO.
(DEFMACRO FOO (&WHOLE FORM) '(+ 1 1))
(LET ((FOO (LIST 'FOO)))
(EVAL `(LIST ,FOO (MACROLET ((FOO (&WHOLE FORM) '(+ 1 2))) ,FOO))))
=> (2 3)
Current Practice:
Symbolics Genera does not use displacing or table caching in either
the interpreter or compiler.
Symbolics Cloe, a compiled only implementation, uses table caching
to boost compilation by a little. Running the test cases above turned
up a bug (in test case #3), which is now in the process of being fixed.
[The fact that a bug was turned up in code written by a CL implementor
is an existence proof that the potential for trouble was not imagined.]
Both Symbolics Cloe and Symbolics Genera support *MACROEXPANSION-HOOK*,
leaving open the possibility of users bringing disasters upon themselves.
Macro environment objects in Symbolics Genera are stack-allocated, so
have only dynamic extent.
Cost to Implementors:
This proposal is upward compatible with correct implementations.
Cost to Users:
There is no cost to users of the RESTRICT proposal, unless they were doing
semantically invalid caching.
The cost to users of the DISALLOW proposal is a loss of speed in some cases
which are semantically valid. In general, however, the efficiency and
usefulness of such caching is subject to question in code intended to be
ported. Given that implementations are not required to ever give the same
environment object twice, the caching may be all for naught in some
implementations.
Cost of Non-Adoption:
Continued widespread confusion about whether displacement is a legitimate
implementation technique for user code.
Benefits:
Since *MACROEXPANSION-HOOK* is in the Lisp package, multiple applications
in the same environment share its effects. Often one application will
clobber another's hook, or introduce a hook that is not desirable to other
applications when none previously existed. Since a common use of
*MACROEXPANSION-HOOK* is to install a macro caching mechanism, clarifying
the situations in which *MACROEXPANSION-HOOK* should not be used will
decrease the likelihood of one program breaking, slowing down, or otherwise
adversely affecting another.
Aesthetics:
Most people agree that macro caching techniques are only supposed to improve
speed without affecting semantics. This proposal is only intended to
underscore that necessary truth. Insofar as this is only a clarification,
it presumably has no significant aesthetic impact.
Discussion:
Pitman thinks it's a good idea to clarify this issue because it's not really
spelled out now and it's the sort of thing programmers can waste a lot of
time bickering about to no good end. Either the functionality is reliable
and should be encouraged, or it is not reliable and should be discouraged
or forbidden. Pitman supports the DISALLOW proposal because it leaves open
the possibility of making macro environments have dynamic extent, but he
can live with the RESTRICT position, which he believes represents the
status quo.
Bob Laddaga (a Cloe maintainer who reviewed a draft of this proposal)
supports the DISALLOW option as well.
David Grays says:
I can accept MACRO-CACHING:DISALLOW.
The Explorer evaluator does displacement of macros, but is careful to
correctly handle the cases exemplified in your test cases #1 and #2.
It does not do the right thing for #3, but that is a bug that can fairly
easily be fixed.
Sandra Loosemore says:
This issue is closely tied to MACRO-ENVIRONMENT-EXTENT. If we decide
environments have (or can be made to have) indefinite extent, I see no
reason not to go with MACRO-CACHING:RESTRICT. On the other hand, if
we decide environments have only dynamic extent, proposal
MACRO-CACHING:DISALLOW is the only one that makes sense.
∂13-Mar-89 0855 X3J13-mailer Issue: UNSOLICITED-MESSAGES
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 13 Mar 89 08:54:56 PST
Received: from BOBOLINK.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 555652; Mon 13-Mar-89 11:51:33 EST
Date: Mon, 13 Mar 89 11:51 EST
From: Kent M Pitman <KMP@STONY-BROOK.SCRC.Symbolics.COM>
Subject: Issue: UNSOLICITED-MESSAGES
To: barmar@Think.COM
cc: KMP@STONY-BROOK.SCRC.Symbolics.COM, chapman%aitg.DEC@decwrl.dec.com,
x3j13@sail.stanford.edu
In-Reply-To: <19890313163525.7.BARMAR@OCCAM.THINK.COM>
Message-ID: <890313115113.2.KMP@BOBOLINK.SCRC.Symbolics.COM>
Date: Mon, 13 Mar 89 11:35 EST
From: Barry Margolin <barmar@Think.COM>
Date: Sun, 12 Mar 89 19:13 EST
From: Kent M Pitman <KMP@stony-brook.scrc.symbolics.com>
I agree that this is an important issue.
I am not sure I agree with the proposed solution -- partly because
I don't think it goes nearly far enough, and partly because I think the
wording for the place where it stops encourages might actually encourage
more `abuse' than currently exists.
I think it should be possible to know with certainly that calling EQ,
CONS, or even COMPILE, was not going to do I/O, at least in
the normal case.
Do progress notes in the wholine count as output? If not, why not? ...
No. They are passive. The function in question does not output to the
wholine. Rather, it arranges information such that a foreign process
can access it and display it. For example, if 500 calls to LOAD are done
in three second, you don't always get 500 progress messages. That is
because the output is done by the foreign process doing the polling and
not the process which is running the CL code. I think this distinction
is important. Indeed, if the running process could block, signal an
error, etc. due to problems in I/O then it would not be a good idea.
If so, are you proposing that they be prohibited?
No.
In Genera, calling
COMPILE displays "Compiling <name>" in the wholine, and calling
READ-CHAR on a console stream displays "User Input" in the wholine.
No. COMPILE does no display. A foreign process which is working by polling
does. This is no different than a foreign process doing any kind of
debugging activity.
I like these things, but I think it will be difficult to express this
distinction in general enough terms in the standard.
I don't think it's that difficult.
In exceptional cases, CONS might produce GC warnings
or COMPILE might produce compiler warnings, but never should COMPILE
type out anything like
Compiling FOO.
or should EQ type out
Performing EQ comparison of #<FOO 32> and #<BAR 17>.
Right now, nothing assures me of this and I find that disturbing.
Why is this problem unique to Lisp? Is there any wording in the C
standard that explicitly prohibits malloc() from causing output? I
doubt it, yet I don't think they find this disturbing.
Maybe it's because C people have traditionally been willing to settle
for less. :-) Seriously, I think it's a clear hole in their standard.
People would probably flame if things that weren't documented as doing
I/O were to suddenly start doing it.
I think market forces should be enough to prevent really silly
unsolicited messages,
Really I don't. COMPILE is a notable offender. Real implementations have
been known to print "Compiling FOO." on *TERMINAL-IO* and this proposal
does not forbid it.
In some cases, market pressure can --- after some number of months --
get things back in line. In others, implementors just point to the standard
and either say "it doesn't say anything" or even worse suggest that the
reason it doesn't say it is because it wants to leave room.
Not all implementors come from our culture. Often, those that don't
would -prefer- to have little `hints' (rules?) like this specified so
that the process of making incidental decisions would be easier. For
example, it's not unreasonable that implementors find themselves asking
"Should COMPILE say something?" -- It's been traditional for compilers
in languages where you couldn't invoke the compiler at runtime to do
typeout, so they might naturally assume that the same should be true
here. Certainly it's natural for them to at least answer the question.
just as all serious Lisp implementations have a GC
even though CLtL never mentions it.
This comes up because it's a "hard issue" and new implementors naturally
tend to discuss "hard issues" with other implementors before even getting
started. My guess is that no new implementor would consider calling up
Moon or JonL or Masinter to ask what the I/O behavior of COMPILE should
be. Probably they would just make a guess, hope it was right, and move on
to the next seemingly trivial decision.
∂13-Mar-89 0853 X3J13-mailer issue COMPILER-VERBOSITY, version 6
Received: from Think.COM by SAIL.Stanford.EDU with TCP; 13 Mar 89 08:53:16 PST
Return-Path: <barmar@Think.COM>
Received: from OCCAM.THINK.COM by Think.COM; Mon, 13 Mar 89 11:48:42 EST
Date: Mon, 13 Mar 89 11:50 EST
From: Barry Margolin <barmar@Think.COM>
Subject: issue COMPILER-VERBOSITY, version 6
To: cl-compiler@sail.stanford.edu
Cc: x3j13@sail.stanford.edu
In-Reply-To: <8903131546.AA02078@defun.utah.edu>
Message-Id: <19890313165001.9.BARMAR@OCCAM.THINK.COM>
I see the benefit of :PRINT, but do we really need :VERBOSE? What's the
difference between
(compile path :verbose t)
and
(format t "~&Compiling file ~A...~%" path)
(compile-file path)
(format t "~&done.~%")
If any users want to have this controlled by a global variable, they can
do what we (Thinking Machines) did years ago and package it up in their
own function. At this stage of the game I don't see the need to add
gratuitous features like this.
:PRINT is less gratuitous because it implements a feature that the user
can't add himself.
barmar
∂13-Mar-89 0924 X3J13-mailer issue QUOTE-SEMANTICS, version 2
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 13 Mar 89 09:23:57 PST
Received: from defun.utah.edu by cs.utah.edu (5.61/utah-2.1-cs)
id AA20995; Mon, 13 Mar 89 10:21:38 -0700
Received: by defun.utah.edu (5.61/utah-2.0-leaf)
id AA02184; Mon, 13 Mar 89 10:21:33 -0700
Date: Mon, 13 Mar 89 10:21:33 -0700
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8903131721.AA02184@defun.utah.edu>
To: x3j13@sail.stanford.edu
Reply-To: cl-compiler@sail.stanford.edu
Subject: issue QUOTE-SEMANTICS, version 2
This issue replaces QUOTE-MAY-COPY, which was distributed and discussed
briefly at the last meeting.
Forum: Compiler
Issue: QUOTE-SEMANTICS
Subsumes: Issue QUOTE-MAY-COPY
References: CLtL p. 55, 78, 86, 143
Issue CONSTANT-COLLAPSING
Issue CONSTANT-COMPILABLE-TYPES
Issue CONSTANT-CIRCULAR-COMPILATION
Category: CLARIFICATION
Edit History: V1, 22 Jan 1989, Sandra Loosemore
V2, 13 Mar 1989, Sandra Loosemore (discussion)
Status: Ready for release
Problem Description:
Is it permissible for COMPILE and EVAL to coalesce or copy constants?
Are there constraints upon what kinds of objects may appear as
constants in code processed by COMPILE or EVAL, similar to those for
COMPILE-FILE?
CLtL p86 states that (QUOTE <x>) simply returns <x>. On p55 it is
mentioned that the only self-evaluating forms that may be copied are
numbers or characters. It is also stated that an implementation is
permitted to collapse (or coalesce) EQUAL constants "appearing in code
to be compiled" (p78), which is defined to mean self-evaluating forms
or objects contained in a QUOTE form (without reference to whether the
form is processed by EVAL, COMPILE, or COMPILE-FILE).
Because of its nature as a file processor, COMPILE-FILE generally must
cause copies of constants to be constructed when the compiled code is
loaded. In a number of existing Lisp implementations, COMPILE also
causes constant objects to be copied and/or coalesced. There is also
at least one implementation where constants are copied by EVAL in some
circumstances.
Proposal QUOTE-SEMANTICS:NO-COPYING:
State that copying or coalescing of constants appearing in code
processed by EVAL and COMPILE is not permitted; the resulting program
must reference objects that are EQL to the corresponding objects in
the source code. The constraints on what kinds of objects may appear
as constants (described in issues CONSTANT-COMPILABLE-TYPES and
CONSTANT-CIRCULAR-COMPILATION) apply only to COMPILE-FILE.
Rationale:
This proposal is consistent with what many people think of as the
"traditional" semantics for QUOTE. It gives users maximum flexibility
about what kinds of objects may appear as constants.
Proposal QUOTE-SEMANTICS:COPYING-ALLOWED-BUT-NO-CONSTRAINTS:
State that copying or coalescing of constants appearing in code
processed by EVAL and COMPILE is permitted. Copying or coalescing may
only take place when the source code is "promoted" to being a program
by EVAL or COMPILE, not at runtime. Function definitions are promoted
to being a program when the form enclosing the definition (e.g., a
FUNCTION or DEFUN form) is promoted.
Any object may validly appear as a constant in code processed by EVAL
or COMPILE. The constraints on what kinds of objects may appear as
constants (described in issues CONSTANT-COMPILABLE-TYPES and
CONSTANT-CIRCULAR-COMPILATION) apply only to COMPILE-FILE.
Rationale:
This proposal is the most consistent with the semantics stated in CLtL.
It gives users maximum flexibility about what kinds of objects may
appear as constants.
Proposal QUOTE-SEMANTICS:SAME-AS-COMPILE-FILE:
State that copying or coalescing of constants appearing in code
processed by EVAL and COMPILE is permitted. Copying or coalescing may
only take place when the source code is "promoted" to being a program
by EVAL or COMPILE, not at runtime. Function definitions are promoted
to being a program when the form enclosing the definition (e.g., a
FUNCTION or DEFUN form) is promoted.
The constraints on what kinds of objects may appear as constants
(described in issues CONSTANT-COMPILABLE-TYPES and
CONSTANT-CIRCULAR-COMPILATION) apply to EVAL and COMPILE as well as to
COMPILE-FILE.
Rationale:
This makes the rules for handling of constants consistent between
EVAL, COMPILE, and COMPILE-FILE. It gives implementors maximum
flexibility in handling constants in EVAL and COMPILE.
Current Practice:
Implementations in which COMPILE attempts to copy all constants
include PSL/PCLS and Kyoto Common Lisp.
In Lucid Common Lisp, constants are not normally copied by COMPILE,
but since COMPILE does coalesce constants, it may cause QUOTE to
return an object which is not EQL to the object which appeared in the
source code.
Symbolics Genera has COMPILE copy list, string, non-displaced array,
and (I-Machine only) closure constants, but Moon says he thinks this
is wrong.
There is known to be at least one implementation where expanding the
DEFUN macro causes all constants in the body of the function to be
copied.
Cost to implementors:
Proposal NO-COPYING would involve a significant cost in those
implementations where constants are now copied or coalesced by EVAL
and COMPILE. Some implementations would also require substantial
changes to support proposal COPYING-ALLOWED-BUT-NO-CONSTRAINTS. The
aspect that is likely to cause the most problems is that, in some
implementations, the garbage collector assumes that constants
referenced in compiled code have been copied to read-only storage and
do not need to be scanned or relocated.
Proposal SAME-AS-COMPILE-FILE has no adoption cost above what is
required to support issues CONSTANT-COMPILABLE-TYPES and
CONSTANT-CIRCULAR-COMPILATION.
Cost to users:
Proposals COPYING-ALLOWED-BUT-NO-CONSTRAINTS and SAME-AS-COMPILE-FILE
may break some existing programs that assume constants in code
processed by EVAL or COMPILE are always EQL to the corresponding
objects in the source code. Proposal SAME-AS-COMPILE-FILE may also
break existing programs that depend on referencing "undumpable"
constants in code processed by EVAL or COMPILE. In both cases,
however, the behavior is already nonportable. Both proposals would
permit implementations in which these programs now work to continue to
provide their existing behavior.
Benefits:
The semantics of QUOTE are clarified.
Discussion:
This issue subsumes issue QUOTE-MAY-COPY, which caused a very lengthy
debate on the cl-compiler mailing list.
This issue relates to conformance requirements. Accepting either of
proposals NO-COPYING or COPYING-ALLOWED-BUT-NO-CONSTRAINTS would mean
that not all conforming programs could be compiled with COMPILE-FILE.
Some people may find this disturbing, particularly since one of the
goals of Common Lisp has been to try to eliminate differences in
semantics between compiled and interpreted code.
Loosemore supports proposal QUOTE-SEMANTICS:SAME-AS-COMPILE-FILE,
since it requires essentially no conversion cost for implementors and
does not break any user programs that are not already nonportable.
JonL White says:
Since we have already passed the proposal that permits constants to
be "read-only" -- it is an error to modify them -- and have already
passed the proposal that allows access to updateable structures --
LOAD-TIME-EVAL -- then there is no excuse for being overly concerned
with the storage address of quoted data. People who have mistakenly
used structured constants as updatable data should convert over to
either LOAD-TIME-EVAL or DEFPARAMETER.
Kent Pitman says:
The problem is that a lot of copying advocates have been going around
trying to use "the need for copying" as leverage for restricting
the set of things which I may quote. My view is that it is my write [sic]
to quote whatever I want, and it's up to the person who thinks they
can do something fun with copying to not get themselves in deeper than
they can handle.
Jeff Dalton says:
I would agree [with Pitman's remarks] too. My only quibble is that
it's not just "the need for copying" that's used a lever.
"Consistency with file compilation" is also being used as a lever.
∂13-Mar-89 0929 X3J13-mailer issue SAFE-CODE, version 1
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 13 Mar 89 09:29:10 PST
Received: from defun.utah.edu by cs.utah.edu (5.61/utah-2.1-cs)
id AA21179; Mon, 13 Mar 89 10:26:59 -0700
Received: by defun.utah.edu (5.61/utah-2.0-leaf)
id AA02193; Mon, 13 Mar 89 10:26:56 -0700
Date: Mon, 13 Mar 89 10:26:56 -0700
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8903131726.AA02193@defun.utah.edu>
To: x3j13@sail.stanford.edu
Reply-To: cl-compiler@sail.stanford.edu
Subject: issue SAFE-CODE, version 1
Issue: SAFE-CODE
Forum: Compiler
References: OPTIMIZE declaration (p160),
Issue ERROR-TERMINOLOGY
Category: CLARIFICATION/CHANGE
Edit history: 07-Mar-89, Version 1 by Pitman
Status: Ready for release
Problem Description:
The new error terminology refers to ``safe code'' in the definition
of the term and CLtL refers to
individual meanings of OPTIMIZE qualities, but there is no standardized
way of relating the two concepts.
Proposal (SAFE-CODE:SAFETY-3):
Define that, formally, the term ``safe code'' is code refers to any
code in which the OPTIMIZE quality for SAFETY has a value of 3.
Implementors might wish to consider treating other situations as safe
as well, but in making that decision both the relative values of other
OPTIMIZE qualities and the idiosyncratic properties of the particular
implementation should also be taken into account.
Examples:
1. The body of the following is safe...
a. (LOCALLY (DECLARE (OPTIMIZE (SAFETY 3))) . body)
b. (LOCALLY (DECLARE (OPTIMIZE SAFETY )) . body)
2. The body in each of the following is unsafe. They might
or might not be treated as safe, possibly depending
on the values of other qualities and specifics of the
implementation.
a. (LOCALLY (DECLARE (OPTIMIZE (SAFETY 0))) . body)
b. (LOCALLY (DECLARE (OPTIMIZE (SAFETY 1))) . body)
c. (LOCALLY (DECLARE (OPTIMIZE (SAFETY 2))) . body)
Rationale:
Programmers will probably intuitively expect that the term
``highest safety'' refers to giving the SAFETY quality its
highest safety.
Current Practice:
Implementors ...
Symbolics Genera does error checking always, and ignores OPTIMIZE
declarations.
Symbolics Cloe heeds OPTIMIZE declarations, but effectively makes
`judgment calls' in every case because there is no clear guidance
on how to interpret them.
Programmers ...
Many programmers write (DECLARE (SPEED 0) (SAFETY 3)) even when all
they really want to control is SAFETY because they are afraid that
unless they explicitly sacrifice speed, the compiler will ignore
their plea for error checking.
Cost to Implementors:
Some implementations might require a lot of nitpicky little changes.
Cost to Users:
Technically none. No portable code can really rely on much of any
reliable effect out of any of the OPTIMIZE qualities. However, some
users may rely on implementation-specific features of implementations,
and if those implementations are forced to change, non-portable user
code might break in some ways.
Cost of Non-Adoption:
The meaning of ``safe code'' will not be clearly defined.
Benefits:
Programmers will be able to say what they mean. They can stop
superstitiously putting (SPEED 0) next to (SAFETY 3) just to
assure they get safe code.
Aesthetics:
Improved. This will make the English align well with the code.
Discussion:
It is very important that we reach consensus in some form on this issue.
Pitman supports SAFE-CODE:SAFETY-3.
∂13-Mar-89 0945 @Score.Stanford.EDU:nilsson@Tenaya.Stanford.EDU faculty lunch
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 13 Mar 89 09:45:09 PST
Received: from Tenaya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Mon 13 Mar 89 09:40:24-PST
Received: by Tenaya.Stanford.EDU (NeXT-0.8/NeXT-0.8)
id AA05533; Mon, 13 Mar 89 08:36:47 PST
Date: Mon, 13 Mar 89 08:36:47 PST
From: nilsson@Tenaya.Stanford.EDU (Nils Nilsson)
Message-Id: <8903131636.AA05533@Tenaya.Stanford.EDU>
To: faculty@score.Stanford.EDU
Subject: faculty lunch
Cc: nilsson@Tenaya.Stanford.EDU
Tomorrow's faculty lunch will feature as guests
Bruce Hinchliffe from the Development Office and
Dwain Fullerton from the Dean's Office. Our topic
will be fundraising for the new CS building. We in
CS are about to be "turned loose" to help raise money
for the new building. Bruce and Dwain will discuss the
process and how we can help put the bite on some of
our affluent friends. 12:15 in mjh 146.
Also please don't forget the other important Tuesday
events:
1) faculty meeting to discuss new theory candidates
at 2:30 in mjh 146, and
2) Mike Dertouzos's lecture at the CS Colloquium
at 4:15 in the downstairs Jordan lecture hall.
-Nils
∂13-Mar-89 1007 @Score.Stanford.EDU:eaf@sumex-aim.stanford.edu Re: faculty lunch
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 13 Mar 89 10:07:35 PST
Received: from sumex-aim.stanford.edu by SCORE.STANFORD.EDU with TCP; Mon 13 Mar 89 10:04:05-PST
Received: by sumex-aim.stanford.edu (4.0/inc-1.0)
id AA13376; Mon, 13 Mar 89 10:05:05 PST
Date: Mon, 13 Mar 1989 10:05:03 PST
From: Edward A. Feigenbaum <eaf@sumex-aim.stanford.edu>
To: nilsson@tenaya.stanford.edu (Nils Nilsson)
Cc: faculty@score.stanford.edu, nilsson@tenaya.stanford.edu,
csd@score.stanford.edu
Subject: Re: faculty lunch
In-Reply-To: Your message of Mon, 13 Mar 89 08:36:47 PST
Message-Id: <CMM.0.88.605815503.eaf@sumex-aim.stanford.edu>
Re Nils' reminder of Mike Dertouzos' lecture tomorrow:
Mike is an excellent speaker, and the study he will be reporting on is
fascinating. It's the MIT study of American productivity in recent years.
Mike has been chairman of that study. They have some important things to say
about the effect (or non-effect) of computers on American productivity.
This is a VERY worthwhile colloquium to attend.
Ed Feigenbaum
∂13-Mar-89 1014 X3J13-mailer Issue: UNSOLICITED-MESSAGES
Received: from Think.COM by SAIL.Stanford.EDU with TCP; 13 Mar 89 10:14:33 PST
Return-Path: <barmar@Think.COM>
Received: from OCCAM.THINK.COM by Think.COM; Mon, 13 Mar 89 13:09:40 EST
Date: Mon, 13 Mar 89 13:10 EST
From: Barry Margolin <barmar@Think.COM>
Subject: Issue: UNSOLICITED-MESSAGES
To: Kent M Pitman <KMP@stony-brook.scrc.symbolics.com>
Cc: chapman%aitg.DEC@decwrl.dec.com, x3j13@sail.stanford.edu
In-Reply-To: <890313115113.2.KMP@BOBOLINK.SCRC.Symbolics.COM>
Message-Id: <19890313181059.0.BARMAR@OCCAM.THINK.COM>
Date: Mon, 13 Mar 89 11:51 EST
From: Kent M Pitman <KMP@stony-brook.scrc.symbolics.com>
Date: Mon, 13 Mar 89 11:35 EST
From: Barry Margolin <barmar@Think.COM>
Do progress notes in the wholine count as output? If not, why not? ...
No. They are passive. The function in question does not output to the
wholine. Rather, it arranges information such that a foreign process
can access it and display it. For example, if 500 calls to LOAD are done
in three second, you don't always get 500 progress messages. That is
because the output is done by the foreign process doing the polling and
not the process which is running the CL code. I think this distinction
is important. Indeed, if the running process could block, signal an
error, etc. due to problems in I/O then it would not be a good idea.
So, the acceptability of progress notes has nothing to do with the
stream they are displayed on, only the fact that they are displayed by a
background process? This implies that a single-tasking machine that
displayed progress notes synchronously would therefore be unacceptable.
I find this distinction extremely arbitrary, since it is based only on
the implementation, not the program-visible effects.
I like these things, but I think it will be difficult to express this
distinction in general enough terms in the standard.
I don't think it's that difficult.
We'll have to come up with a general definition of passive output versus
active output. And we'll still have to make sure that passive output
isn't allowed to go to *STANDARD-OUPTUT*.
Why is this problem unique to Lisp? Is there any wording in the C
standard that explicitly prohibits malloc() from causing output? I
doubt it, yet I don't think they find this disturbing.
Maybe it's because C people have traditionally been willing to settle
for less. :-) Seriously, I think it's a clear hole in their standard.
People would probably flame if things that weren't documented as doing
I/O were to suddenly start doing it.
Actually, I think the difference is that Common Lisp includes some
operations that are not traditionally included in runtime libraries,
COMPILE, COMPILE-FILE, and LOAD being the most notable ones. No
Lisp implementor would even think of having CONS or EQ produce output,
just as the C standard doesn't need to say that malloc() is silent.
Perhaps this means that since we have such unusual runtime facilities,
we can't rely on common sense as other languages do. I would be willing
to support a blanket statement that said that no output may be produced
by functions other than that specified in the standard or due to the
signalling of conditions detected by the function.
Would this prevent an implementation from having a *DEBUG-CONS* variable
that turns on debugging output by CONS?
barmar
∂13-Mar-89 1046 X3J13-mailer Issue: UNSOLICITED-MESSAGES
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 13 Mar 89 10:46:36 PST
Received: from BOBOLINK.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 555842; Mon 13-Mar-89 13:43:40 EST
Date: Mon, 13 Mar 89 13:43 EST
From: Kent M Pitman <KMP@STONY-BROOK.SCRC.Symbolics.COM>
Subject: Issue: UNSOLICITED-MESSAGES
To: x3j13@sail.stanford.edu
cc: barmar@Think.COM, KMP@STONY-BROOK.SCRC.Symbolics.COM,
chapman%aitg.DEC@decwrl.dec.com
In-Reply-To: <890313115113.2.KMP@BOBOLINK.SCRC.Symbolics.COM>
Message-ID: <890313134321.9.KMP@BOBOLINK.SCRC.Symbolics.COM>
[Further discussion on this topic will take place on CL-Editorial.]
∂13-Mar-89 1450 X3J13-mailer **DRAFT** issue CLOS-MACRO-COMPILATION, version 2
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 13 Mar 89 14:50:22 PST
Received: from defun.utah.edu by cs.utah.edu (5.61/utah-2.1-cs)
id AA07805; Mon, 13 Mar 89 15:48:10 -0700
Received: by defun.utah.edu (5.61/utah-2.0-leaf)
id AA02496; Mon, 13 Mar 89 15:48:08 -0700
Date: Mon, 13 Mar 89 15:48:08 -0700
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8903132248.AA02496@defun.utah.edu>
To: x3j13@sail.stanford.edu
Reply-To: cl-compiler@sail.stanford.edu
Subject: **DRAFT** issue CLOS-MACRO-COMPILATION, version 2
This issue is still under discussion. There has been a lot of talk
about how this relates to the creation of meta-objects at compile
time, but the only proposals that have been made so far are the two
included here.
Forum: Compiler
Issue: CLOS-MACRO-COMPILATION
References: CLOS chapters 1 & 2 (88-002R)
CLOS chapter 3 (89-003)
Issue COMPILE-FILE-HANDLING-OF-TOP-LEVEL-FORMS
Issue DEFINING-MACROS-NON-TOP-LEVEL
Category: CLARIFICATION
Edit History: V1, 10 Mar 1989, Sandra Loosemore
V2, 13 Mar 1989, Sandra Loosemore
Status: **DRAFT**
Problem Description:
Do the CLOS defining macros (DEFCLASS, DEFMETHOD, DEFGENERIC, and
DEFINE-METHOD-COMBINATION) have compile-time side-effects similar
to those for DEFSTRUCT or DEFMACRO?
A part of the problem is that we do not currently have a full
understanding of all the issues involved. In particular, work on
defining the CLOS meta-object protocol is still in progress. The goal
of this proposal is to say enough about the behavior of these macros
in the standard so that users can use them portably in compiled code,
but to leave as much of the behavior as possible unspecified to avoid
placing undue restrictions on the meta-object protocol.
There are two proposals, MINIMAL and NOT-SO-MINIMAL.
Proposal CLOS-MACRO-COMPILATION:MINIMAL:
State that top-level calls to the CLOS defining macros have the
following compile-time side-effects. Any other compile-time behavior
is explicitly left unspecified.
DEFCLASS:
* The class name becomes a type specifier which may appear in
subsequent type declarations.
* The class name can be used to name a superclass in a subsequent
DEFCLASS.
* The class name can be used as a specializer in a subsequent
DEFMETHOD.
DEFGENERIC:
* The generic function can be referenced in a subsequent DEFMETHOD.
* The generic function is not callable at compile-time.
DEFMETHOD:
* The method is not callable at compile-time. If there is a generic
function with the same name at compile-time, compiling a DEFMETHOD
will not add the method to that generic function. The compiler may
perform tests for lambda-list congruence only between the DEFGENERICs
and DEFMETHODs for a given generic function name that appear within
the file being compiled, and not against a generic function of the
same name which exists in the compile-time environment.
DEFINE-METHOD-COMBINATION:
* The method combination can be used in a subsequent DEFGENERIC. If it
is referenced, the body of a long form of method combination must be
evaluable at compile-time.
Rationale:
The compile-time behavior of DEFCLASS is similar to DEFSTRUCT or
DEFTYPE.
DEFGENERIC and DEFMETHOD are similar to DEFUN, which doesn't add the
function definition to the compile-time environment. Since generic
functions may be freely redefined between compile and run time (just
like any other function), a method may end up "belonging" to a
different generic function at load time than at compile time.
Some implementations compose effective methods at compile time, which
requires evaluating the body of the DEFINE-METHOD-COMBINATION at
compile time.
Proposal CLOS-MACRO-COMPILATION:NOT-SO-MINIMAL:
This is the same as proposal MINIMAL, except under DEFCLASS add:
* The class may be instantiated at compile-time. Provided the
appropriate methods are also defined at compile-time, this implies:
- The class can be used as the :METACLASS option of a later DEFCLASS.
- It can be used as the :GENERIC-FUNCTION-CLASS or :METHOD-CLASS option
of a DEFGENERIC, GENERIC-FUNCTION, GENERIC-FLET, or GENERIC-LABELS.
Rationale:
Being able to instantiate a class at compile-time is somewhat more
convenient for users.
Current Practice:
The items listed under DEFCLASS in proposal MINIMAL are fairly standard
programming style.
Flavors does not support compile-time instantiation of classes. It
does not make method combinations available at compile-time either, but
Moon considers that to be a bad design choice.
Cost to implementors:
Unknown.
Cost to users:
Unknown, but probably fairly small.
Note that for proposal NOT-SO-MINIMAL, users still have to ensure that
any methods on the class which may be invoked at compile-time are
fully defined. This includes the INITIALIZE-INSTANCE and
SHARED-INITIALIZE methods that are invoked by MAKE-INSTANCE.
Wrapping an (EVAL-WHEN (EVAL COMPILE LOAD) ...) around the appropriate
definitions will make sure they are fully defined at compile-time.
Alternatively, the definitions could be placed in a separate file,
which is loaded before compiling the file that depends on those
definitions.
Benefits:
Programmers can rely on programs that use the CLOS defining macros
being able to compile correctly in all implementations, without having
to wrap explicit EVAL-WHENs around every macro call.
Discussion:
This writeup is based on discussions between Moon, Gray, and
Loosemore, who are mostly in agreement on the things presented in
proposal MINIMAL. We have purposely avoided saying anything about
whether meta-objects representing the classes, methods, etc. get
created at compile-time, or whether such meta-objects are fully or
partially defined. The basic questions addressed by this issue are
what kinds of things can be defined and then used during compilation
of the same file that defines them, and what restrictions might apply.
These proposals are not completely compatible with the meta-object
protocol document (89-003). Gregor Kiczales says:
No one believes that what is written in draft 10 of the MOP is valid.
Sandra Loosemore says:
Although I admit I don't understand all of the issues involved with
the meta-object protocol, I prefer proposal MINIMAL over
NOT-SO-MINIMAL. I don't think leaving the issue of whether or not
classes can be instantiated at compile-time unspecified places an
undue burden on users, and it does leave more freedom for the
meta-object protocol to decide what the right behavior really is.
Dick Gabriel notes:
The question I have about the process going on with respect to the
CLOS-MACRO-COMPILATION issue is whether the fine-grained behavior of
CLOS under various compilation/evaluation situations is being
over-specified.
At this stage of the game I worry that we might go a little too far in
one direction in specification when we are actually engaged in design
work. This isn't intended to be a criticism of any committees, but I
would feel a lot more comfortable with a conservative specification
that defined well-formed programs being loaded or compiled in fresh
Common Lisps with a pretty simple eval-when model that is easier to
specify and which makes it easy for all but the hairiest
compilation-environment-frobbing programs to be written.
∂13-Mar-89 1452 X3J13-mailer issue COMPILE-ENVIRONMENT-CONSISTENCY, version 4
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 13 Mar 89 14:52:29 PST
Received: from defun.utah.edu by cs.utah.edu (5.61/utah-2.1-cs)
id AA07899; Mon, 13 Mar 89 15:50:10 -0700
Received: by defun.utah.edu (5.61/utah-2.0-leaf)
id AA02499; Mon, 13 Mar 89 15:50:07 -0700
Date: Mon, 13 Mar 89 15:50:07 -0700
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8903132250.AA02499@defun.utah.edu>
To: x3j13@sail.stanford.edu
Reply-To: cl-compiler@sail.stanford.edu
Subject: issue COMPILE-ENVIRONMENT-CONSISTENCY, version 4
Forum: Compiler
Issue: COMPILE-ENVIRONMENT-CONSISTENCY
References: CLtL p. 68-69, 143, 321
RAM's "Compiler Cleanup Proposal #3"
Category: CLARIFICATION
Edit History: V1, 2 Sep 1988, Sandra Loosemore (initial draft)
V2, 9 Sep 1988, Sandra Loosemore (incorporate suggestions)
V3, 26 Oct 1988, Sandra Loosemore (add suggestion from Benson)
V4, 08 Mar 1989, Sandra Loosemore (wording changes)
Problem Description:
CLtL does not clearly specify what aspects of the compiletime
environment the compiler (or other preprocessor) may "wire in" to code
being compiled. At what time (compiletime or runtime) are certain
kinds of definitions "captured"? What happens if these definitions
are not consistent at both compile and run times?
Proposal COMPILE-ENVIRONMENT-CONSISTENCY:CLARIFY:
The process of compilation causes certain kinds of information present
in the compiletime environment to be captured and incorporated into
the resulting compiled code. Other kinds of information may not be
captured until the compiled code is actually run.
Specifically:
(1) The following information *must* be present in the compiletime
environment for the program to be compiled correctly. This
information need not also be present in the runtime environment.
(a) In conforming code, macros referenced in the code being compiled
must have been previously defined in the compiletime environment.
The compiler must treat any form that is a list beginning with
a symbol that does not name a macro or special form as a function
call. (This implies that SETF methods must also be available at
compiletime.)
(b) In conforming code, variables that are intended to be bound
specially must be declared SPECIAL in the compiletime environment
before any bindings of that variable are processed by the compiler.
The compiler must treat any binding of an undeclared variable as a
lexical binding.
(2) The compiler *may* incorporate the following kinds of information
into the code it produces, if the information is present in the
compiletime environment and is referenced within the code being
compiled. Except where some other behavior is explicitly stated, when
the compiletime and runtime definitions are different, it is
unspecified which will prevail within the compiled code. In all
cases, the absence of the information at compiletime is not an error,
but its presence may enable the compiler to generate more efficient
code.
(a) The compiler may assume that functions that are defined and
declared INLINE in the compiletime environment will retain the
same definitions at runtime.
(b) The compiler may assume that, within a named function, a
recursive call to a function of the same name refers to the
same function, unless that function has been declared NOTINLINE.
(c) COMPILE-FILE may assume that, in the absence of NOTINLINE
declarations, a call within the file being compiled to a named
function which is defined in that file refers to that function.
(This permits "block compilation" of files.) The behavior of
the program is unspecified if functions are redefined individually
at runtime.
(d) The compiler may assume that the signature (or "contract") of
all built-in Common Lisp functions will not change. In addition,
the compiler may treat all built-in Common Lisp functions as if
they had been proclaimed INLINE.
(e) The compiler may assume that the signature (or "contract") of
functions with FTYPE information available will not change. (See
issue FUNCTION-TYPE-ARGUMENT-TYPE-SEMANTICS.)
(f) The compiler may "wire in" the values of symbolic constants
that have been defined with DEFCONSTANT in the compiletime
environment.
(g) The compiler can assume that type definitions made with DEFTYPE
or DEFSTRUCT in the compiletime environment will retain the same
definition in the runtime environment. It may also assume that
a class defined by DEFCLASS in the compiletime environment will
be defined in the runtime environment in such a way as to have
the same superclasses and metaclass. This implies that
subtype/supertype relationships of type specifiers will not
change between compiletime and runtime. (Note that it is not
an error for an unknown type to appear in a declaration at
compiletime, although it is reasonable for the compiler to
emit a warning in such a case.)
(h) The compiler may assume that if type declarations are present
in the compiletime environment, the corresponding variables and
functions present in the runtime environment will actually be of
those types; otherwise, the runtime behavior of the program is
undefined.
(3) The compiler *must not* make any additional assumptions about
consistency between the compiletime and runtime environments. In
particular:
(a) The compiler may not assume that functions that are defined
in the compiletime environment will retain the either the
same definition or the same signature at runtime, except
in situations (2a) through (2e) above. It is, however,
permissible for the compiler to emit warning messages when
compiling calls to functions that are defined in the compiletime
environment, but where the wrong number or type of arguments
are supplied.
(b) The compiler may not signal an error if it sees a call to a
function that is not defined at compiletime, since that function
may be provided at runtime. Again, it is permissible for the
compiler to emit a warning in these situations.
Rationale:
This proposal generally reflects current practice.
Current Practice:
There don't seem to be any compilers around that do not implement the
provisions of item (1).
For item (2), most compilers (including Lucid) optimize self-recursive
calls by default. Most compilers also opencode data structure
accessors (such as CAR) at some level of optimization, and some code
much more complicated built-in functions inline as well. VaxLisp, for
example, normally compiles MEMBER inline. The Lucid compiler makes
use of type declarations to perform generic-to-specific
transformations on many arithmetic and sequence functions, which is
also a form of inlining. KCL performs block compilation by default,
and Lucid does so under certain conditions.
Cost to implementors:
Unknown, but probably minor.
Cost to users:
Since most implementations appear to be largely in conformance with the
proposal, users should notice little difference.
Benefits:
The presence of a definite specification of what may happen when will
help users structure their programs so they will compile correctly in
all Common Lisp implementations.
Discussion:
Most of the discussion on this issue has been centered on the
terminology describing error situations for item (2). In most cases
where there is an inconsistency between compile-time and run-time, the
results will be unpredictable but harmless. The major exception is
violation of type declarations, which is a "crash-and-burn" error in
many implementations.
There has also been some concern raised that item (3) would prohibit
such things as a cross-compiler that produces standalone programs in
an environment that disallows redefinition of functions. The intent
of this proposal is not to prohibit a compiler from having a magic
switch that imposes additional restrictions on the programs it
compiles, but such a compiler would not be a compiler for Common Lisp.
Several people have expressed reservations about items 2b and 2c, saying
that self-tail-recursion optimization and block compilation should not
be the default behavior of the compiler. Gail Zacharias responds:
This item [2c] has nothing to do with whether anybody does it by
default. The question is whether an end user can take a Common Lisp
program whose internals he's not familiar with, block-compile it, and
be guaranteed that it will continue to function correctly. This item
says that yes, a correct CL program must explicitly indicate what
functions in the source it will redefine at runtime. I don't think
this places such a great burden on the programmer. Without this
provision, only somebody intimately familiar with a program could know
whether it can be safely block-compiled, making block-compilation
useless in the context of portable CL programs.
This thing about "block compilation shouldn't be the default" seems to
come up every time this item is discussed. That's an environment
question and is not addressed by the proposal. The proposal simply
says that block compilation should be legal.
∂13-Mar-89 1514 X3J13-mailer issue COMPILE-FILE-SYMBOL-HANDLING, version 2
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 13 Mar 89 15:14:36 PST
Received: from defun.utah.edu by cs.utah.edu (5.61/utah-2.1-cs)
id AA08718; Mon, 13 Mar 89 16:12:23 -0700
Received: by defun.utah.edu (5.61/utah-2.0-leaf)
id AA02542; Mon, 13 Mar 89 16:12:19 -0700
Date: Mon, 13 Mar 89 16:12:19 -0700
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8903132312.AA02542@defun.utah.edu>
To: x3j13@sail.stanford.edu
Reply-To: cl-compiler@sail.stanford.edu
Subject: issue COMPILE-FILE-SYMBOL-HANDLING, version 2
Forum: Compiler
Issue: COMPILE-FILE-SYMBOL-HANDLING
References: CLtL p. 182
Issue IN-PACKAGE-FUNCTIONALITY
Issue CONSTANT-COMPILABLE-TYPES
Issue DEFPACKAGE (passed)
Category: CHANGE/CLARIFICATION
Edit History: V1, 01 Feb 1989, Sandra Loosemore
V2, 12 Mar 1989, Sandra Loosemore (discussion, error terms)
Status: Ready for release
Problem Description:
It is not clear how COMPILE-FILE is supposed to specify to LOAD how
symbols in the compiled file should be interned. In particular, what
happens if the value of *PACKAGE* is different at load-time than it
was at compile-time, or if any of the packages referenced in the file
are defined differently?
There are three proposals: CURRENT-PACKAGE, HOME-PACKAGE, and
REQUIRE-CONSISTENCY.
Proposal COMPILE-FILE-SYMBOL-HANDLING:CURRENT-PACKAGE:
When a compiled file is loaded, the interned symbols it references
are found by the following procedure. The rules are applied in the
order listed and only the first applicable rule has any effect.
(1) Any symbol accessible at compile time in the package that is the
value of *PACKAGE* is found by calling INTERN at load time with one
argument, the name of the symbol.
(2) A keyword symbol is found by finding or creating a keyword symbol
with the same name.
(3) A symbol that at compile time is an external symbol of its home
package is found at load time by finding the package with the same
name as the compile-time home package, and then finding an exported
symbol of that package with the same name as the compile-time symbol.
If no such package exists, no such symbol exists, or the symbol is not
exported, an error is signalled.
(4) Any other symbol is found by calling INTERN at load time with two
arguments, the name of the symbol and the package with the same name
as the compile-time symbol's home package. If no such package exists,
an error is signalled.
The goal of this procedure is for each symbol reference to be
resolved to the same symbol when a compiled file is loaded as when
the source file is loaded directly with LOAD. It is possible to
create package structures that make that impossible; for example, it
is possible for a symbol to be inaccessible from its own home
package. A conforming program cannot depend on any symbol
resolution behavior that is not provided by the above four rules.
If any top level form in a compiled file changes the value of
*PACKAGE*, other than a SELECT-PACKAGE appearing as the first
top level form in the file, the package in which the loader will
place the constant symbols referenced in the file is unspecified.
Rationale:
Proposal CURRENT-PACKAGE makes COMPILE-FILE/LOAD follow the same
rules as PRINT/READ. For any symbol not written with a package
prefix in the source file (which should be the great majority of
them), CURRENT-PACKAGE will make loading the compiled file get the
same symbols as loading the source file.
The reason for the rule about changing the value of *PACKAGE* is that
many loaders cache the interning of symbols; if the same symbol
appears multiple times in the source file, its name may only be
looked up once at load time. Since not all loaders are required to
work this way, changing *PACKAGE* in mid-file is not allowed,
because the effect on later occurrrences of a symbol would be
implementation-dependent.
Proposal COMPILE-FILE-SYMBOL-HANDLING:HOME-PACKAGE:
When a compiled file is loaded, the interned symbols it references are
found by calling INTERN at load time with two arguments, the name of
the symbol and the package with the same name as the compile-time
symbol's home package. If no such package exists, an error is
signalled.
The goal of this procedure is for each symbol reference to be resolved
to the same symbol when a compiled file is loaded as when the source
file was processed by COMPILE-FILE. A conforming program cannot
depend on any symbol resolution behavior that is not provided by the
above rule.
If any top level form in a compiled file changes the value of
*PACKAGE* when the file is loaded interpretively but not during
compile-time processing by COMPILE-FILE, the package in which the
loader will place the constant symbols referenced in the file is
unspecified.
Rationale:
The behavior specified in this proposal is simple and easy to
understand (there is only one rule to remember instead of four).
It does not require any restrictions on where top-level
SELECT-PACKAGE forms may appear in the file. It allows a compiled
file that does not include an explicit SELECT-PACKAGE to be loaded
successfully no matter what the load-time value of *PACKAGE* is,
as long as the compile-time value of *PACKAGE* was the "right"
package.
Proposal COMPILE-FILE-SYMBOL-HANDLING:REQUIRE-CONSISTENCY:
In order to guarantee that compiled files can be loaded correctly,
users must ensure that the packages referenced in the file are defined
consistently at compile and load time. Conforming Common Lisp programs
must satisfy the following requirements:
(1) The value of *PACKAGE* when the contents of the file are compiled
by COMPILE-FILE must be the same as the value of *PACKAGE* when
the file is loaded. In particular:
(a) If any top level form in a compiled file changes the value
of *PACKAGE*, other than a SELECT-PACKAGE appearing as the first
top-level form in the file, the package in which the loader
will place the constant symbols referenced in the file is
unspecified.
(b) If the first top-level form in the file is not a call to
SELECT-PACKAGE, then the value of *PACKAGE* at the time LOAD is
called must be a package with the same name as the package that
was the value of *PACKAGE* at the time COMPILE-FILE was called.
(2) For all symbols that were accessible in *PACKAGE* at compile
time but whose home package was another package, at load time there
must be a symbol with the same name that is accessible in both the
load-time *PACKAGE* and in the package with the same name as the
compile-time home package.
(3) For all symbols in the compiled file that were external symbols in
their home package at compile time, there must be a symbol with the
same name that is an external symbol in the package with the same name
at load time.
If any of these conditions do not hold, the package in which LOAD looks
for the affected symbols is unspecified. Implementations are permitted
to signal an error or otherwise define this behavior.
Otherwise, when a compiled file is loaded, the interned symbols it
references are found by calling INTERN at load time with two
arguments, the name of the symbol and the package with the same name
as the compile-time symbol's home package. If no such package exists,
an error is signalled.
Rationale:
Any program that behaves differently under the other two proposals
is already nonportable. This proposal is merely an explicit
statement of the status quo, namely that users cannot depend on
any particular behavior if the package environment at load time is
inconsistent with what existed at compile time.
Current Practice:
PSL/PCLS implements something very similar to proposal HOME-PACKAGE,
as does A-Lisp. Utah Common Lisp implements something like proposal
CURRENT-PACKAGE, but the chief compiler hacker says he thinks that
proposal HOME-PACKAGE actually makes more sense, and agrees that any
program that behaves differently under the two proposals is broken.
The TI Explorer currently implements proposal HOME-PACKAGE, after
trying it both ways.
KCL implements something like HOME-PACKAGE (symbols in the compiled
file are explicitly qualified with the name of their home package),
except that it differentiates between internal and external symbols.
Lucid Lisp appears to implement something like proposal CURRENT-PACKAGE.
Symbolics Genera implements CURRENT-PACKAGE. Symbolics Cloe probably
does also.
Coral also implements something like proposal CURRENT-PACKAGE.
Cost to implementors:
Proposals HOME-PACKAGE and CURRENT-PACKAGE would be incompatible
changes for implementations that currently do things the other way.
It would probably be easier to convert to HOME-PACKAGE than
CURRENT-PACKAGE, since it is less complicated.
Proposal REQUIRE-CONSISTENCY is intended to be compatible with either
of the other two proposals, but it may not be entirely compatible with
the details of current implementations.
Cost to users:
Proposal HOME-PACKAGE places the fewest restrictions on user programs.
Proposal CURRENT-PACKAGE places a restriction on where and how the value
of *PACKAGE* may be changed within the file.
Proposal REQUIRE-CONSISTENCY places even more restrictions on user
programs.
Most of these restrictions are probably already necessary in portable
programs. However, some nonportable programs that depend on the "other"
model may be broken by proposals HOME-PACKAGE or CURRENT-PACKAGE.
For a discussion of how these proposals treat nonportable or erroneous
programs, see the "Analysis" section below.
Benefits:
COMPILE-FILE's treatment of symbols is made explicit in the standard.
Analysis:
Proposals CURRENT-PACKAGE and HOME-PACKAGE present two different
models of how this problem might be solved. Essentially, proposal
CURRENT-PACKAGE uses the same rules as PRINT/READ in deciding when to
qualify symbols with a package name and where to find unqualified
symbols. Proposal HOME-PACKAGE requires -all- symbols written to the
compiled file to be qualified with an explicit package, and the loader
simply INTERNs the symbol names in that package.
These two proposals differ in the following situations. Proposal
REQUIRE-CONSISTENCY, in effect, says that valid programs do not cause
any of these situations to occur, and the behavior in such cases is
unspecified (allowing both models to be used as valid implementation
techniques).
(1) The situation where the file does not contain a SELECT-PACKAGE
and where the compile-time value of *PACKAGE* is a package with a
different name than the load-time value of *PACKAGE*.
Proposal CURRENT-PACKAGE would intern the names of symbols that
were accessible in *PACKAGE* at compile time in *PACKAGE* at load time.
Proposal HOME-PACKAGE would intern the names of symbols that
were accessible in *PACKAGE* at compile time in the package with
the same name as their compile-time home package.
In general, programs must be compiled in the "right" package, so
that the compiler can find and apply the correct macro expansions,
type definitions, and so on; see issue COMPILE-ENVIRONMENT-CONSISTENCY.
As a result of macroexpansion or other transformations applied by
the compiler, the compiled file may contain symbol references that
were not present in the source file. Proposal CURRENT-PACKAGE may
cause problems because these references may be resolved to be
symbols other than the ones that were intended. Since proposal
HOME-PACKAGE remembers the home package of all symbols, it is much
more likely to find the correct symbols at load time.
(2) The situation where *PACKAGE* is altered by a top-level form
that is not a SELECT-PACKAGE which is the first top-level form in
the file.
Proposal CURRENT-PACKAGE says this is illegal. This is because
of the difficulty in deciding what the "current package" is, if it
is allowed to change throughout the file.
Proposal HOME-PACKAGE says this is OK, as long as *PACKAGE* is
altered in the same way at compile time as when the file is loaded
interpretively. This is possible because the behavior this
proposal specifies does not depend on what the value of *PACKAGE*
is once symbols in the source file have been read by COMPILE-FILE.
Some people argue that allowing *PACKAGE* to be switched in
mid-file is a bad idea anyway; it is not really necessary and it
implies a restriction on COMPILE-FILE to read forms from the file
one at a time, processing each form before the next call to READ.
Others argue that restricting SELECT-PACKAGE to be the first
top-level form is an artificial contrivance. The compile-time
behavior of SELECT-PACKAGE is well-defined no matter where it
appears in the file. There is also a problem defining what "the
first top-level form" really means. Finally, this model requires
all package definitions to be made externally to the file, which
may be inconvenient for smaller programs that now contain the
package definition and package contents all in one file.
(3) The situation where there is a symbol accessible in the
compile-time value of *PACKAGE* but with another home package, and
where at load time there is not a symbol with the same name that
is accessible in both packages. This situation might occur, for
example, if at compile time there is a symbol that is external in
its home package and that package is used by *PACKAGE*, but where
there is no such external symbol in that package at load time, or
the load-time *PACKAGE* does not use the other package.
Proposal CURRENT-PACKAGE would find or create a symbol accessible
in *PACKAGE*.
Proposal HOME-PACKAGE would find or create a symbol accessible in
a package with the same name as the symbol's compile-time home
package.
Some people feel that the behavior of proposal CURRENT-PACKAGE is
more intuitive in this situation, and that it is more forgiving of
differences between the compile-time and load-time package
structures. Others feel that the behavior of HOME-PACKAGE is more
intuitive, and that if there have been significant changes to the
package structures, it is probably an indication that the file
needs to be recompiled anyway, since the compiler might have
picked up macro definitions and the like from the wrong package.
(4) The situation where a symbol is external in its home package
and where there is no such external symbol in that package at load
time.
Proposal CURRENT-PACKAGE would quietly find or create the symbol
in *PACKAGE* if the symbol were accessible in *PACKAGE* at compile
time. Otherwise, it will signal an error.
Proposal HOME-PACKAGE would always just quietly find or create the
symbol as internal in its home package.
Not complaining when a symbol that is supposed to be external
isn't can be seen as a violation of modularity. However, it seems
like this argument should apply equally to symbols whose home
package is *PACKAGE* as symbols whose home package is somewhere
else.
Discussion:
Loosemore is opposed to proposal CURRENT-PACKAGE, but would be
less opposed to it if it contained an explicit statement that
*PACKAGE* must be a package with the same name at load time as at
compile time. She thinks proposal HOME-PACKAGE is the best of the
options presented here.
Moon is opposed to proposal HOME-PACKAGE, but would be less
opposed to it if it required an error to be signalled when a
symbol that was external at compile time is not external at load
time. He thinks proposal CURRENT-PACKAGE is the best of the options
presented here.
John Kolts, who did the implementation on the TI Explorer, recalls:
My primary motivation was compile/load consistency. I thought it was
important that during loading all symbol references should resolve to
the same symbol as they would have during the compilation. If, for
instance, the packages used by *package* were different at compile
time than at load time, my approach would still intern the accessible
symbols in the "right" package during loading. [...] Of course, such
an approach means that loading the [compiled file] could give results
incompatible with loading the LISP file directly, but I felt that if
behavior consistent with some altered package structure was desired,
the file should be recompiled, a relatively small price to pay for the
benefit of this consistency.
A related consideration was that remembering the home package seemed to
be important for proper macro expansion in certain cases.
What was apparent was that there were several defensible approaches,
none of which was obviously the absolutely right way to handle certain
pathological situations. Making the expected behavior explicit in a
standard is a good idea.
David Gray says:
There really shouldn't be anything wrong about using SELECT-PACKAGE
multiple times within a file as long as it is used at top level so
that the compiler knows that the current package is being changed.
Cris Perdue says:
[Proposal HOME-PACKAGE] doesn't ensure that the home package remains
the same across compilation and loading, which I consider the key
consideration. How about this statement instead?
"When a file is compiled, the symbol name is recorded together
with the home package name and an indication of whether the
symbol is external in its home package. At load time the
symbol is effectively looked up with:
(find-symbol string (find-package pkg-name))
If the symbol is noted as external, it must be found at load
time as :external. If it is noted as internal, it must either
be present in the package or not found at all. If it is not found
at all, it is created as if by:
(intern string (find-package pkg-name))
If the package system is not in a suitable state, an error is
signalled."
This is what I consider "the right thing".
JonL White says:
I don't believe we have anything to gain at this point in trying to
standardize the faslout package-qualification algorithm; this is
notwithstanding that standardizing PRINT output, as an interchange
format, is an absolute requirement [even though READ-of-PRINT will
likely be even more information losing than loading in a compiled
file!]
∂13-Mar-89 1517 X3J13-mailer issue COMPILER-LET-CONFUSION, version 7
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 13 Mar 89 15:16:50 PST
Received: from defun.utah.edu by cs.utah.edu (5.61/utah-2.1-cs)
id AA08737; Mon, 13 Mar 89 16:14:30 -0700
Received: by defun.utah.edu (5.61/utah-2.0-leaf)
id AA02546; Mon, 13 Mar 89 16:14:26 -0700
Date: Mon, 13 Mar 89 16:14:26 -0700
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8903132314.AA02546@defun.utah.edu>
To: x3j13@sail.stanford.edu
Reply-To: cl-compiler@sail.stanford.edu
Subject: issue COMPILER-LET-CONFUSION, version 7
Issue: COMPILER-LET-CONFUSION
Forum: Compiler
References: CLtL p. 112
Category: CHANGE
Edit History: V1, 27 Sep 1988, Sandra Loosemore (initial version)
V2, 04 Oct 1988, Sandra Loosemore (add another example)
V3, 31 Oct 1988, Sandra Loosemore (only proposal ELIMINATE)
V4, 08 Jan 1989, Kent M. Pitman (new alternative)
V5, 09 Jan 1989, Sandra Loosemore (discussion)
V6, 08 Mar 1989, Sandra Loosemore (general updating)
V7, 13 Mar 1989, Sandra Loosemore (fix bug from V6)
Problem Description:
The description of the COMPILER-LET special form in CLtL is confusing
to many people. There are no examples provided to make it clear how it
is supposed to be used. The only description which is offered is overly
concrete, which has led to confusion about the intent of COMPILER-LET,
and about its implementability.
The intent of COMPILER-LET was to permit information to be communicated
between macros by use of dynamic variables at macroexpansion time.
It was not necessary to the intended uses of COMPILER-LET that such
variables ever be bound at execution time.
Unfortunately, probably because some implementations did not primitively
support COMPILER-LET at the time CLtL was written, an exception was
permitted to make COMPILER-LET `more or less work' in interpreters:
the COMPILER-LET variables were permitted to be bound at execution time.
The problem was further compounded by the fact that CLtL presented this
exception as part of COMPILER-LET's contract rather than as an
implementation note, and by the fact that no examples of actually using
COMPILER-LET correctly are provided.
One particular case where problems have resulted is a situation like
(compiler-let ((*v* 1))
#'(lambda () (m)))
where M is a macro that refers to *V*. In some implementations, M is
not macroexpanded until the dynamic extent of the *V* binding has
ended.
Subtle bugs can be introduced because of the different handling of the
variable bindings in the interpreter and the compiler. In compiled
code, the bindings are only lexically visible during the expansion of
macros at compile time, while in interpreted code the bindings have
dynamic scope and may also be seen during ordinary evaluation if
evaluation and macroexpansion happen "in parallel".
Further compatibility problems can result from the value forms being
evaluated in a null lexical environment in the compiler and the ordinary
lexical environment in the interpreter.
Background and Analysis:
It should be clear up front that COMPILER-LET is not computationally
essential. Most (if not all) uses of it can be rewritten using MACROLET
or SYMBOL-MACROLET.
A typical use of COMPILER-LET might be:
(defvar *local-type-declarations* '())
(defmacro local-type-declare (declarations &body forms)
`(compiler-let ((*local-type-declarations*
(append ',declarations *local-type-declarations*)))
,@forms))
(defmacro typed-var (var)
(let ((type (assoc var *local-type-declarations*)))
(if type `(the ,(cadr type) ,var) var)))
(defun f (x y)
(local-type-declare ((x fixnum) (y float))
(+ (typed-var x) (typed-var y))))
The same thing could be accomplished using MACROLET:
(defmacro local-type-declare (declarations &body forms)
(local-type-declare-aux declarations forms))
(defmacro typed-var (var) var)
(eval-when (eval compile load)
(defun local-type-declare-aux (declarations forms)
`(macrolet ((typed-var (var)
(let ((type (assoc var ',declarations)))
(if type `(the ,(cadr type) ,var) var)))
(local-type-declare (new-declarations &body new-forms)
(local-type-declare-aux
(append new-declarations ',declarations)
new-forms)))
,@forms)))
A further alternative would be to use SYMBOL-MACROLET (this particular
implementation assumes that issue DEFINING-MACROS-NON-TOP-LEVEL passes):
(let ((temp (gensym)))
(defmacro local-type-declare (declarations &body forms &environment env)
`(symbol-macrolet ((,temp ',(append declarations
(symbol-macro-value temp env))))
,@forms))
(defmacro typed-var (var &environment env)
(let ((type (assoc var (symbol-macro-value temp env))))
(if type `(the ,(cadr type) ,var) var)))
)
(defun symbol-macro-value (symbol env &optional default)
(multiple-value-bind (expansion macro-p) (macroexpand symbol env)
(if macro-p (eval expansion) default)))
Opinion is divided as to which is more understandable. Some
people find the COMPILER-LET idiom more understandable (assuming that
it can be made to work consistently in compiled and interpreted
code), while others find it just as natural to use MACROLET or
SYMBOL-MACROLET.
The issues are these:
- Is it possible to implement COMPILER-LET in a usefully consistent
way in all implementations?
- Are the benefits of providing a useful and compatible implementation
of COMPILER-LET worth any associated cost?
Two proposals are presented below:
- Option REPAIR argues that COMPILER-LET provides interesting
functionality that can be implemented in a manner that is usefully
consistent across implementations, and that the associated cost
is low enough for it to be worthwhile to do so.
- Option ELIMINATE argues that COMPILER-LET complicates the language
and that providing this construct is not worth the associated
implementation cost.
Proposal (COMPILER-LET-CONFUSION:REPAIR):
Strike the existing definition of COMPILER-LET. Redefine it as follows:
COMPILER-LET [Special form]
COMPILER-LET is similar to LET, but it always makes special
bindings and makes those bindings visible only during
macroexpansion of forms in the body, not during the runtime
execution of those forms.
The intent is that some macros might macroexpand into calls to
COMPILER-LET in which the body would the contain references to
macros which access the variables in the COMPILER-LET.
The initial value forms of the bindings, if any, are always
evaluated in a null lexical context, regardless of whether the
COMPILER-LET expression is being interpreted or compiled.
The initial value forms of the bindings, if any, are evaluated in
a dynamic context where the bindings of any lexically enclosing
COMPILER-LET are visible, and where dynamic execution-time
environment may or may not be visible.
Implementation Note: Permitting the execution-time dynamic
environment to be visible when initializing COMPILER-LET variables
is a concession to some interpreters which may have to do this in
order to keep the cost down. Where feasible, implementors should
try not to make the runtime environment visible.
Rationale:
This gives a consistent description of COMPILER-LET which separates
issues of intent from those of implementation in a way that makes it
possible for portable code to make serious use of it, and which does
not force gratuitous incompatibilities between interpreters and
compilers.
This description of COMPILER-LET can be implemented without undue
cost by all implementations. See "Cost to Implementors" for details.
Cost to Implementors:
Modest, but nontrivial in some implementations.
In compiled code, and in interpreters doing a one-time semantic
prepass, it should be fairly easy for COMPILER-LET to cause the
variables to get bound (using PROGV) during semantic analysis.
In interpreters which do not do a semantic-prepass, it is necessary
to fully macroexpand the body. Assuming the presence of a
SYSTEM::MACROEXPAND-ALL primitive, the definition of COMPILER-LET
could look like:
(DEFMACRO COMPILER-LET (BINDINGS &BODY FORMS &ENVIRONMENT ENV)
(SETQ BINDINGS ;; Assure no non-atom bindings
(MAPCAR #'(LAMBDA (BINDING)
(IF (ATOM BINDING) (LIST BINDING) BINDING))
BINDINGS))
(PROGV (MAPCAR #'CAR BINDINGS)
(MAPCAR #'CDR BINDINGS)
(SYSTEM::MACROEXPAND-ALL `(PROGN ,@FORMS) ENV)))
This reduces the problem of writing a program capable of doing a
full macroexpansion. Many systems already have such a facility.
Pitman wrote such a facility in Cloe Runtime in order support
SYMBOL-MACROLET (before it was christened a special form); it was
about 750 lines of relatively straightforward, well-commented code.
Cost to Users:
Code currently depending on this feature is either non-existent or
already not portable (due to wide variation in implementation
strategy for COMPILER-LET).
Most users will probably be happy for any interpretation which offers
them a future shot at portability.
Some users have indicated they dislike interpreters which do a semantic
prepass, because they like to be able to dynamically redefine macros
while debugging.
Proposal (COMPILER-LET-CONFUSION:ELIMINATE):
Remove COMPILER-LET from the language.
Rationale:
Some people think that having one less special form would simplify the
language. The revised COMPILER-LET semantics, which require
COMPILER-LET to make special bindings which are only visible during
expansion of macros which appear lexically within its body, are
not shared by any other feature in the language, and require a
fairly complex implementation technique. There are other
constructs which are strictly lexical that can be readily used
to solve the same kinds of problems that COMPILER-LET is intended to
be used for.
Cost to Implementors:
Minimal. Implementations could continue to support COMPILER-LET as
an extension.
Cost to Users:
Code currently depending on this feature is either non-existent or
already not portable (due to wide variation in implementation
strategy for COMPILER-LET).
People who use COMPILER-LET would have to rewrite their programs to use
some other construct. As discussed above, most uses of COMPILER-LET
for communication between macros can be handled using MACROLET or
SYMBOL-MACROLET, though some perspicuity may be lost in the process.
Current Practice:
Some implementations have implemented the description in CLtL.
Users of those implementations (quite reasonably) can't figure how to
use COMPILER-LET and so don't use it much.
Some implementations (the ones from which COMPILER-LET originally came)
continue to use their pre-CLtL semantics. These semantics are useful, though
incompatible with CLtL (which they largely consider to simply be in error).
Users of those implementations probably use COMPILER-LET somewhat more
often since it has an intelligible behavior, but their code is not portable
since it relies on behaviors which are either contrary to or not guaranteed
by CLtL.
Benefits:
Either way, a potential area of incompatibility between compiled and
interpreted code would be eliminated.
Either way, a potential area of portability trouble would be very
drastically reduced (in the case of the REPAIR option) or eliminated
(in the case of the ELIMINATE option).
Discussion:
Pitman strongly favors COMPILER-LET-CONFUSION:REPAIR. He argues
against the idea of using MACROLET instead of COMPILER-LET, saying:
This is a little misleading because it's like saying you can
do without LET given that you have FLET. You can, but you lose some things
in the process:
Just as rewriting a LET using FLET might slow your computation, so too
a rewrite of COMPILER-LET using MACROLET might slow things down. However,
compilation speed is generally not weighted as heavily as execution speed
by many people, so the loss of speed here may not be as important.
Just as rewriting a LET using FLET might obscure the simplicity of your
intent, so too rewriting COMPILER-LET using MACROLET might obscure your
intent. You'd probably get used to recognizing idioms if you used it often
enough. Certainly this would be true if you didn't have LET. However,
COMPILER-LET is used less often, so not having it would mean that the
code you wrote instead would be much harder to read because people
wouldn't have the necessary familiarity with the idioms involved and so
wouldn't always understand them.
Sandra Loosemore responds:
The argument that using MACROLET is more inefficient than COMPILER-LET
is questionable. Both of the suggested implementation techniques for
COMPILER-LET involve considerable overhead.
If COMPILER-LET were not part of the language, people wouldn't think in
terms of rewriting COMPILER-LETs as MACROLETs; instead, they'd think of
how to use MACROLET in the first place to solve their problems. This
is what people who now use implementations with broken COMPILER-LETs
already do. Since MACROLET is now used much more frequently than
COMPILER-LET, that argues that people are much more familiar with
MACROLET idioms than COMPILER-LET idioms.
Also, note that the intent of the revised COMPILER-LET definition is
to make the binding only lexically visible within the body. Using
special binding for this purpose is troublesome. Both the MACROLET
and SYMBOL-MACROLET solutions are completely lexical and avoid all
the problems associated with special binding.
Glenn Burke thinks it needs to be emphasized that the code-walker
mentioned in the REPAIR proposal does not need to be portable. He
says:
The present wording makes it sound like a piece of cake to do with
portable code, when the reality is that a good fraction of CL cleanup
effort has involved the lack of capability of producing such a beast.
Without one or more of a number of proposals being accepted, a fully
correct portable code walker cannot be built, in my belief.
I object to the flippant attitude of just "presupposing" this
"trivial" function which "we know how to do".
∂13-Mar-89 1531 X3J13-mailer **DRAFT** issue DEFCONSTANT-NOT-WIRED, version 6
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 13 Mar 89 15:30:56 PST
Received: from defun.utah.edu by cs.utah.edu (5.61/utah-2.1-cs)
id AA09104; Mon, 13 Mar 89 16:28:40 -0700
Received: by defun.utah.edu (5.61/utah-2.0-leaf)
id AA02557; Mon, 13 Mar 89 16:28:37 -0700
Date: Mon, 13 Mar 89 16:28:37 -0700
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8903132328.AA02557@defun.utah.edu>
To: x3j13@sail.stanford.edu
Reply-To: cl-compiler@sail.stanford.edu
Subject: **DRAFT** issue DEFCONSTANT-NOT-WIRED, version 6
We don't expect to ask for a vote on this issue -- the writeup is just
being distributed so that we can refer to it in case the issue ever
comes up again. None of the suggestions listed here seemed to have a
great deal of support among people on the cl-compiler list, and all of
them have problems we haven't been able to resolve yet.
Forum: Compiler
Issue: DEFCONSTANT-NOT-WIRED
References: CLtL pages 68-69
COMPILE-FILE-HANDLING-OF-TOP-LEVEL-FORMS,
PROCLAIM-LEXICAL,
DECLARE-TYPE-FREE,
DEFCONSTANT-SPECIAL
Category: ADDITION
Edit history: 09 Oct 1988, V1 by David Gray
27 Oct 1988, V2 by David Gray (new proposal)
10 Nov 1988, V3 by David Gray - updated proposal, rationale
and discussion sections in response to comments.
21 Nov 1988, V4 by David Gray - SPECIAL cancels CONSTANT;
CONSTANT doesn't require previous SPECIAL.
28 Nov 1988, V5 by Sandra Loosemore (clean up, fix
some consistency problems)
13 Mar 1989, V6 by Sandra Loosemore (start over)
Status: **DRAFT**
Problem description:
DEFCONSTANT performs two different functions:
- It says that it is an error to SETQ or rebind the variable which
is being defined as a constant.
- It gives the compiler permission to evaluate the initial value form
at compile time, and to build assumptions about the value into
programs being compiled.
In some cases, one would like to have the first behavior without
getting the second. In particular, one would like to get the same
behavior with regard to signalling errors and warnings that you get
with DEFCONSTANT.
Common Lisp provides no mechanism for specifying a variable should
be treated in this way.
Proposal DEFCONSTANT-NOT-WIRED:FIX-DEFPARAMETER:
This is what DEFPARAMETER was supposed to be used for. The description
of DEFPARAMETER needs to be clarified to reflect this, perhaps by
saying that a continuable error should be signalled if an attempt is
made to SETQ or rebind a variable defined with DEFPARAMETER.
Rationale:
DEFPARAMETER apparently derives from Zetalisp's DEFCONST construct,
which was used to indicate that values that would "never" change,
without licensing the compiler to make assumptions about that value.
However, most uses of DEFCONST have apparently been changed to use
DEFCONSTANT instead.
Objections:
Some people don't think that DEFPARAMETER was intended to be used
in this way and that this would be an incompatible change.
Proposal DEFCONSTANT-NOT-WIRED:RESTORE-DEFCONST:
Leave DEFPARAMETER alone but add another construct with the semantics
described above.
Rationale:
Some people don't think that DEFPARAMETER was intended to be used
in this way.
Objections:
We haven't been able to come up with a good name for this construct.
"DEFCONST" is too confusing and all of the other names that have
been suggested are too long. Also, having so many macros for
declaring variables with is confusing.
Proposal DEFCONSTANT-NOT-WIRED:NEW-DECLARATION:
Add a new CONSTANT declaration to the language which can be used to
declare that a variable cannot be SETQ'd or bound within the scope of
the declaration.
Rationale:
This solves the problem and also provides more general functionality.
For example, one could declare that a lexical variable won't be
SETQ'ed.
Objections:
We haven't been able to decide whether a CONSTANT declaration should
augment or replace a SPECIAL or LEXICAL declaration. How do you
initialize a variable that has been proclaimed CONSTANT? Some people
have objected to calling the declaration CONSTANT unless it is
equivalent to what a DEFCONSTANT does.
Proposal DEFCONSTANT-NOT-WIRED:ADD-OPTIONAL-ARGUMENT:
Add an optional argument to DEFCONSTANT to indicate whether the
compiler can make assumptions about the constant's value.
Rationale:
It would solve the problem.
Objections:
It would make DEFCONSTANT have different syntax from DEFVAR and
DEFPARAMETER.
Proposal DEFCONSTANT-NOT-WIRED:DEFINE-VARIABLE
Define a single macro, DEFINE-VARIABLE, that can be used to do what
DEFVAR, DEFPARAMETER, and DEFCONSTANT now do, plus the proposed new
functionality, plus possibly handle lexical variables as well
(if proposal PROCLAIM-LEXICAL passes). Arguments to the macro
could be used to control whether the value is allowed to change
and whether the compiler is allowed to make assumptions about the
value.
Rationale:
It would solve the problem without cluttering up the language with
new defining macros for every possible combination of behavior.
Objections:
Nobody has proposed anything definite yet.
Discussion:
This issue was discussed at length on the cl-compiler mailing list
last fall, without coming up with an acceptable proposal. It didn't
appear that any of the alternatives had a great deal of support. This
writeup summarizes the alternatives that have been proposed at various
times. Some of them (particularly NEW-DECLARATION) have been
considered in detail, and others (DEFINE-VARIABLE) haven't been
pursued at all.
∂13-Mar-89 1533 X3J13-mailer issue DEFINE-OPTIMIZER, version 5
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 13 Mar 89 15:33:36 PST
Received: from defun.utah.edu by cs.utah.edu (5.61/utah-2.1-cs)
id AA09197; Mon, 13 Mar 89 16:31:22 -0700
Received: by defun.utah.edu (5.61/utah-2.0-leaf)
id AA02562; Mon, 13 Mar 89 16:31:17 -0700
Date: Mon, 13 Mar 89 16:31:17 -0700
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8903132331.AA02562@defun.utah.edu>
To: x3j13@sail.stanford.edu
Reply-To: cl-compiler@sail.stanford.edu
Subject: issue DEFINE-OPTIMIZER, version 5
Forum: Compiler
Issue: DEFINE-OPTIMIZER
References: Issue SYNTACTIC-ENVIRONMENT-ACCESS
Category: ADDITION
Edit history: 28-Sep-88, Version 1 by Pitman
10-Mar-89, Version 2 by Pitman (clarifications, new example),
10-Mar-89, Version 3 by Pitman & Loosemore
11-Mar-89, Version 4 by Pitman
13-Mar-89, Version 5 by Loosemore (discussion)
Status: Ready for release
Problem Description:
Often a general functional interface could be bypassed given explicit
knowledge of the arguments passed. This may happen when the arguments
are constant (or otherwise inferrable), an argument type is known (eg,
due to use of THE or DECLARE), or when some particular pattern of
optional, rest or keyword arguments is apparent.
Most implementations provide internally for optimization of generalized
function call interfaces to more specialized ones, but such an
optimization facility is not provided to Common Lisp users.
The absence of this facility in a portable fashion means that some
CL programs run slower than they need to in some implementations, or
else that some operators that should be implemented as functions end
up getting implemented as macros to assure needed efficiency.
Proposal (DEFINE-OPTIMIZER:NEW-FACILITY):
Introduce a facility for declaring compiler optimizations.
DEFINE-OPTIMIZER name arglist {declaration}* {form}* [Macro]
Defines a compiler optimizer for a function named NAME. The ARGLIST,
DECLARATIONS, and FORMS are treated exactly like the arglist,
declarations, and forms in a DEFMACRO. (The arglist may include
&ENVIRONMENT and &WHOLE.)
The argument NAME must name a function which has been previously
defined. The effects of defining an optimizer for a locally or
globally defined macro, a locally defined function, or a special
form are undefined.
When the optimizer is invoked, the forms are executed in the context
of bindings specified by the arglist, and two values are yielded,
RESULT and VALID-P. (If either of the first or second return value
is non-NIL, then the first return value is considered valid).
If the result is valid, it is a form which is preferable to evaluate
instead of the indicated call.
If a call to DEFINE-OPTIMIZER appears at top-level in a file
being processed by the file compiler, it also makes the optimizer
known at compile-time (similar to the way DEFMACRO makes a macro
definition known to the compiler).
OPTIMIZE-EXPRESSION-1 form env [Function]
Similar to MACROEXPAND-1. Invokes the optimizers for the top level of
FORM, but does not iterate on the result. Returns two values:
RESULT and CHANGED-P.
Note: If an optimizer returns a result which is not valid,
OPTIMIZE-EXPRESSION-1 hides the fact by returning FORM,NIL
rather than NIL,NIL.
OPTIMIZE-EXPRESSION form env [Function]
Iterates calling OPTIMIZE-EXPRESSION-1 until the CHANGED-P result
is NIL.
An implementation must save optimizer definitions created by
DEFINE-OPTIMIZER in case OPTIMIZE-EXPRESSION is attempted, but is
not actually required to call OPTIMIZE-EXPRESSION itself. Interpreters,
for example, may choose to just call the unoptimized form.
Using FLET and MACROLET shadow not only functions and their SETF methods,
but also their optimizers. No portable facility is provided for creating
locally defined optimizers.
The effect of defining optimizations for functions in the LISP package
is not defined. (In some implementations, this would clobber or conflict
with existing advice that may be of higher quality.)
The editor is advised that a non-binding style note such as the
following would also be appropriate:
In general, it is poor style for a programmer to define optimizers for
functions that he does not maintain. This is because the correct
implementation of an optimizer for a function usually depends on an
understanding of the internals of that function. As such, a function
definition and any optimizers should be maintained as a unit so that
they can changes in either can be synchronized as appropriate with the
other.
The effect of using DEFINE-OPTIMIZER on a function declared to be
INLINE is ``unspecified but harmless'' (per new Error Terminology).
That is, since both operations (optimization and inlining) are intended
to be semantics-preserving, no functional difference should be observed.
However, in some implementations the presence of an optimizer may thwart
the ability to inline, or vice versa. Writers of portable code are
encouraged to use either DEFINE-OPTIMIZER or (PROCLAIM '(INLINE ...))
but not both.
Example:
;; These examples are taken literally from the Macsyma sources,
;; modified only to change DEFOPT to DEFINE-OPTIMIZER. The comments
;; were specially written for the X3J13 audience.
;; M+ is adds a Macsyma expression to another Macsyma expression.
;; The Macsyma internal representation for the sum of X and Y is
;; ((MPLUS) X Y). A all the real work is done by SIMPLIFY, which
;; reduces the expression as needed necessary. However, SIMPLIFY
;; is very complicated, and considerable speed can be gained by
;; entering it at specific known places.
(DEFUN M+ (&REST TERMS)
(PROTECT-&REST-VARIABLE TERMS)
(SIMPLIFY `((MPLUS) ,@TERMS)))
(DEFINE-OPTIMIZER M+ (&REST TERMS)
(COND ((= (LENGTH TERMS) 2) `(ADD2* ,@TERMS))
(T `(ADDN (LIST ,@TERMS) NIL))))
;; M- negates a Macsyma expression, or substracts two Macsyma
;; expressions. Once you figure out which of the two operations is
;; to be done, the problem is similar to that of M+ above. However,
;; often the decision can be made at compile time. In this case,
;; INLINE functions would have worked ok, except that not all
;; implementations do inlining, and even those that do may fail to
;; recognize that EXP2 being NIL means that a test can be eliminated
;; or dead code can be eliminated. Using optimizers is far more
;; likely to be useful in practice.
(DEFUN M- (EXP1 &OPTIONAL (EXP2 NIL EXP2P))
(IF (NOT EXP2P)
(M--INTERNAL-NEGATE EXP1)
(M--INTERNAL-SUBTRACT EXP1 EXP2)))
(DEFINE-OPTIMIZER M- (EXP1 &OPTIONAL (EXP2 NIL EXP2P))
(IF (NOT EXP2P)
`(M--INTERNAL-NEGATE ,EXP1)
`(M--INTERNAL-SUBTRACT ,EXP1 ,EXP2)))
Rationale:
Many large portable applications expect such a facility on an
implementation-specific basis. Others would use one if available.
Even if implementations don't use the provided optimizers primitively,
user macros and code-walkers can invoke them, so the facility wouldn't
be completely useless even in those implementations.
Current Practice:
Symbolics Genera provides an optimizer facility which is more elaborate
but not fundamentally incompatible with this facility.
Many (if not most) serious implementations provide a similar facility.
For example, Lucid provides "compiler macros" which serve the same
purpose.
Cost to Implementors:
Since the implementation is not required to use this facility, the
cost of providing the proposed support is very small.
Cost to Users:
None. This change is upward compatible.
Cost of Non-Adoption:
Portable code would be slower than necessary in some situations.
Benefits:
Some existing non-portable code could become portable.
Aesthetics:
Providing a separate optimizer definition from a main function definition
makes a possibility that the optimizer and main function could drift out
of synch. However, most places where this gets used in the first place
are places where speed is of paramount importance and the programmer is
willing to invest effort in maintaining things correctly and to accept the
risk of lossage if s/he fails.
This is a fairly clean and simple extension which adds significant
power to the compiler.
Discussion:
Pitman strongly supports this proposal, the design of which is modeled
directly after that which has been used in Macsyma for many years.
Information about argument type can come from two different sources:
THE and declarations (via PROCLAIM or DECLARE). The former information
is portably accessible, the latter is not. While a separate proposal
(SYNTACTIC-ENVIRONMENT-ACCESS) for allowing program access to type
declarations would be make this facility more useful, it is still
quite useful without it, as the examples from Macsyma illustrate.
Some implementations provide a way to provide more than one optimizer
for the same function. A multiple optimizer facility can be written
in terms of this simpler facility and vice versa, so the simpler of
the two facilities is proposed here.
Some people have suggested that they would like to see a pattern
matching facility integrated into this facility. The design of a
facility that would satisfy everyone would take a lot of time and
effort. At this point, there is no chance that the design of such a
facility would occur in time for acceptance into the standard.
The choice is this or nothing. Pitman thinks the language is much
better off with some form of optimization support than none.
Loosemore says:
Although I don't really think this is an essential feature to include
in the standard, I don't have any strong objection to adding it. If
people think it's a good idea to provide a standard interface for this
kind of thing, this is a good proposal for doing it -- it's fairly
simple, doesn't introduce any radically new ideas, and is general
enough to allow alternate interfaces (such as the pattern matcher) to
be layered on top of it.
Barrett says:
I think you may have gotten the sense of Cris' INLINE comment wrong.
I believe what he was suggesting is that NOTINLINE declarations should
inhibit optimizers, a position I agree with. I also think it would be
better to specify the behavior when both an optimizer and an inline
are present, rather than leaving it 'unspecified but harmless'. I'd
suggest that optimizers have precedence. The rational is that this
allows an optimizer to look for special patterns in the arguments, and
to defer to the inline if it doesn't find them. Of course, there's
the problem that the compiler might then ignore the inline.
∂13-Mar-89 1536 X3J13-mailer issue DEFINING-MACROS-NON-TOP-LEVEL, version 8
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 13 Mar 89 15:36:01 PST
Received: from defun.utah.edu by cs.utah.edu (5.61/utah-2.1-cs)
id AA09314; Mon, 13 Mar 89 16:33:46 -0700
Received: by defun.utah.edu (5.61/utah-2.0-leaf)
id AA02565; Mon, 13 Mar 89 16:33:44 -0700
Date: Mon, 13 Mar 89 16:33:44 -0700
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8903132333.AA02565@defun.utah.edu>
To: x3j13@sail.stanford.edu
Reply-To: cl-compiler@sail.stanford.edu
Subject: issue DEFINING-MACROS-NON-TOP-LEVEL, version 8
Forum: Compiler
Issue: DEFINING-MACROS-NON-TOP-LEVEL
References: CLtL p. 66-70, 143
Issue EVAL-WHEN-NON-TOP-LEVEL
Issue COMPILE-FILE-HANDLING-OF-TOP-LEVEL-FORMS
Issue COMPILER-LET-CONFUSION
Category: CLARIFICATION, ENHANCEMENT
Edit History: 6-May-88, V1 by Sandra Loosemore
9-Jun-88, V2 by Sandra Loosemore
12-Sep-88, V3 by Sandra Loosemore (fix garbled section 4)
21-Sep-88, V4 by Sandra Loosemore (clarify section 5)
16-Dec-88, V5 by Sandra Loosemore (major restructuring)
31-Dec-88, V6 by Sandra Loosemore (wording clarifications)
07-Jan-89, V7 by Sandra Loosemore (add example)
09-Mar-89, V8 by Sandra Loosemore (more restructuring)
Status: Ready for release
Problem Description:
CLtL leaves the interpretation of defining forms such as DEFMACRO and
DEFVAR that appear in other than top-level locations unclear.
On page 66, it is stated: "It is not illegal to use these forms at
other than top level, but whether it is meaningful to do so depends on
context. Compilers, for example, may not recognize these forms
properly in other than top-level contexts". At least one implementation
has interpreted this to mean that it is permissible to simply refuse
to compile defining macros that do not appear at top-level.
Proposal DEFINING-MACROS-NON-TOP-LEVEL:ALLOW:
(1) Remove the language from p. 66 of CLtL quoted above. Clarify that
while defining macros normally appear at top level, it is meaningful
to place them in non-top-level contexts and that the compiler must
handle them properly in all situations. However, the compile-time side
effects described in issue COMPILE-FILE-HANDLING-OF-TOP-LEVEL-FORMS
only take place when the defining macros appear at top-level.
(2) Remove the language on p. 145 of CLtL, which states that macro
functions are always defined in the null lexical environment. Clarify
that all defining macros which create functional objects (including
DEFMACRO, DEFTYPE, DEFINE-SETF-METHOD, and the complex form of
DEFSETF, as well as DEFUN) must ensure that those functions are
defined in the lexical environment in which the defining form is
evaluated.
(3) Specify that top-level forms in a file being compiled are
guaranteed to be processed sequentially. The order in which
non-top-level subforms of a top-level form are processed by the
compiler is explicitly left unspecified.
Rationale:
This proposal makes the rules for when defining macros cause
compile-time side effects to be exactly the same as the rules for when
(EVAL-WHEN (COMPILE) ...) causes compile-time evaluation. This
provides a simple implementation technique.
Item (3) serves two purposes. First, it guarantees users that
compile-time side-effects from top-level EVAL-WHEN forms or defining
macros will happen in the correct order; programmers can depend upon
the compile-time side-effects of a top-level form being visible during
the compilation of subsequent forms. Second, it allows compilers to
perform certain kinds of source-to-source transformations that change
the order of subforms.
For instance, the following example from CLtL
(let ((old-count *access-count*))
(unwind-protect
(progn
(incf *access-count*)
(perform-access))
(setq *access-count* old-count)))
is entirely equivalent to:
(let ((old-count *access-count*))
(let ((thunk #'(lambda () (setq *access-count* old-count))))
(unwind-protect
(progn
(incf *access-count*)
(perform-access))
(funcall thunk))))
(This is a real example from the A-Lisp compiler, which implements
UNWIND-PROTECT by having it push a "thunk" to perform the cleanup
actions onto the catch stack before executing the protected form.)
Current Practice:
Most implementations do allow defining macros in non-top-level places.
However, the rules for when they cause compile-time side-effects are
not always the same as those for EVAL-WHEN. This is the case in
Lucid Common Lisp, for example.
Cost to implementors:
Implementations that currently don't compile defining macros correctly
when they appear at non-top-level will have to be changed.
Cost to users:
None. This is a compatible extension.
Benefits:
The notion of defining macros as being somehow special when they
appear at top-level is removed, since their behavior can be explained
using EVAL-WHEN as a primitive. Allowing defining macros to appear
anywhere instead of restricting them to certain positions results in a
cleaner language design.
Discussion:
This proposal is consistent with the behavior specified in proposal
EVAL-WHEN-NON-TOP-LEVEL:GENERALIZE-EVAL. In particular, if the compile
time side-effects for defining macros specified in proposal
COMPILE-FILE-HANDLING-OF-TOP-LEVEL-FORMS:CLARIFY are implemented using
EVAL-WHEN, the "right" compiler behavior for defining macros at
non-top-level will happen automatically.
∂13-Mar-89 1545 X3J13-mailer issue EVAL-WHEN-NON-TOP-LEVEL, version 6
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 13 Mar 89 15:45:11 PST
Received: from defun.utah.edu by cs.utah.edu (5.61/utah-2.1-cs)
id AA09664; Mon, 13 Mar 89 16:42:59 -0700
Received: by defun.utah.edu (5.61/utah-2.0-leaf)
id AA02574; Mon, 13 Mar 89 16:42:54 -0700
Date: Mon, 13 Mar 89 16:42:54 -0700
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8903132342.AA02574@defun.utah.edu>
To: x3j13@sail.stanford.edu
Reply-To: cl-compiler@sail.stanford.edu
Subject: issue EVAL-WHEN-NON-TOP-LEVEL, version 6
This issue has been giving us a lot of trouble for a long time. A few
people on the cl-compiler mailing list have expressed discontent with
the proposals included here, but the dissenters haven't been able to
come up with an acceptable alternative proposal that they can all agree
on.
Issue: EVAL-WHEN-NON-TOP-LEVEL
Forum: Compiler
References: EVAL-WHEN (CLtL pp69-70),
Issue DEFINING-MACROS-NON-TOP-LEVEL
Issue COMPILED-FUNCTION-REQUIREMENTS
Issue IN-PACKAGE-FUNCTIONALITY
Issue LOCALLY-TOP-LEVEL
Category: CLARIFICATION/CHANGE
Edit History: 06-May-88, Version 1 by Sandra Loosemore
16-Dec-88, Version 2 by Loosemore (alternate direction)
30-Dec-88, Version 3 by Loosemore (minor wording changes)
07-Jan-89, Version 4 by Loosemore (update discussion)
09-Feb-89, Version 5 by Pitman and Moon (some major changes)
09-Mar-89, Version 6 by Loosemore (clean up wording)
Status: Ready for release
Problem Description:
The current description of how the compiler should handle EVAL-WHEN
only makes sense when it appears as a top-level form in the file being
compiled. Is it legitimate for EVAL-WHEN to appear in non-top-level
locations? Even if it is legitimate, what does it mean?
Another issue, referred to here as ``the EVAL-WHEN shadowing problem,''
is that some people have complained that shadowing the symbols EVAL,
COMPILE, or LOAD means that you have to also either shadow EVAL-WHEN
and define it to recognize the new symbol, or else you must resign
yourself to writing (EVAL-WHEN (... LISP:EVAL ...) ...),etc. all over.
While the goal here is not to solve this problem, it might be possible
to solve both problems at once.
There are two proposals presented here, GENERALIZE-EVAL and
GENERALIZE-EVAL-NEW-KEYWORDS.
Background/Analysis:
The proposal which follows was constructed with the following goals
in mind:
1. The lexical and dynamic environment for the EVAL-WHEN body should
be the same for each situation. That is, the body should ``mean
the same thing'' regardless of which situation is being processed.
2. The evaluation context for EVAL-WHEN should be the current
lexical environment.
3. At execution time, EVAL-WHEN should always return the result of
its last form if execution of the body occurred, or NIL if the
body was not executed.
4. If a top-level EVAL-WHEN has a LOAD keyword, its body should
inherit top-level-ness during normal processing. This permits the
use of (EVAL-WHEN (EVAL COMPILE LOAD) ...) at top-level to mean
simply "Do whatever would normally be done for this body, but
also do something at compile time." This, in turn, will later be
the key to allowing defining forms to be usefully described in
terms of EVAL-WHEN.
5. Non-top-level expressions should have no effect until they are
executed. This is the key to making sure that any necessary
environment is present. Since the COMPILE keyword forces effects
to occur earlier than execution time, it follows from this that
any correct solution must not allow the COMPILE keyword to have
an effect at other than top-level.
To accomplish these goals, we formulated the following model:
The purpose of EVAL-WHEN is to accomodate the fact that some of the
semantic processing of an expression may usefully be partitioned
between compile time and run time in some circumstances.
(EVAL-WHEN (EVAL) <code>)
describes a general technique for accomplishing some particular goal
at normal program execution time. However, the pair of expressions
(EVAL-WHEN (COMPILE) <code-A>)
(EVAL-WHEN (LOAD) <code-B>)
can be used to describe an alternate technique for implementing part
of the effect (A) at compile-time, and part of the effect (B) at
load-time.
Proposal (EVAL-WHEN-NON-TOP-LEVEL:GENERALIZE-EVAL):
Replace the description of EVAL-WHEN with the following:
EVAL-WHEN ({situation}*) {form}* [Special Form]
The body of an EVAL-WHEN form is processed as an implicit PROGN, but
only in the situations listed. Each SITUATION must be a symbol,
either COMPILE, LOAD, or EVAL.
The use of COMPILE and LOAD controls whether and when processing
occurs for top-level forms. The use of EVAL controls whether
processing occurs for non-top-level forms.
The EVAL-WHEN construct may be more precisely understood in terms of
a model of how the file compiler, COMPILE-FILE, processes forms in a
file to be compiled.
Successive forms are read from the file by the file compiler using
READ. These top-level forms are normally processed in what we call
`not-compile-time' mode. There is one other mode, called
`compile-time-too' mode, which can come into play for top-level
forms. The EVAL-WHEN special form is used to annotate a program
in a way that allows the program doing the processing to select
the appropriate mode.
Processing of top-level forms in the file compiler works as follows:
* If the form is a macro call, it is expanded and the result is
processed as a top-level form in the same processing mode
(compile-time-too or not-compile-time).
* If the form is a PROGN form, each of its body forms is
sequentially processed as top-level forms in the same processing
mode.
* If the form is a COMPILER-LET, MACROLET, or SYMBOL-MACROLET,
the file compiler makes the appropriate bindings and recursively
processes the body forms as an implicit top-level PROGN with those
bindings in effect, in the same processing mode.
* If the form is an EVAL-WHEN form, it is handled according to
the following table:
COMPILE LOAD EVAL compile-time-too Action
Yes Yes -- -- Process body in compile-time-too mode
No Yes Yes Yes Process body in compile-time-too mode
No Yes Yes No Process body in not-compile-time mode
No Yes No -- Process body in not-compile-time mode
Yes No -- -- Evaluate body
No No Yes Yes Evaluate body
No No Yes No do nothing
No No No -- do nothing
"Process body" means to process the body as an implicit top-level
PROGN. "Evaluate body" means to evaluate the body forms as in
implicit PROGN in the dynamic execution context of the compiler and
in the lexical environment in which the EVAL-WHEN appears.
* Otherwise, the form is a top-level form that is not one of the
special cases. If in compile-time-too mode, the compiler first
evaluates the form and then performs normal compiler processing
on it. If in not-compile-time mode, only normal compiler
processing is performed. [The nature of this processing is
defined more precisely in issue COMPILED-FUNCTION-REQUIREMENTS.]
Any subforms are treated as non-top-level forms.
For an EVAL-WHEN form that is not a top-level form in the file compiler
(that is, one of: in the interpreter; in COMPILE; or in the file
compiler but not at top-level), if the EVAL situation is specified,
its body is treated as an implicit PROGN. Otherwise, the EVAL-WHEN
form returns NIL.
Clarifications/Consequences:
The following effects are logical consequences of the above proposal:
* It is never the case that the execution of a single EVAL-WHEN
expression will execute the body code more than once.
* The keyword `EVAL' is a misnomer because execution of
the body need not be done by EVAL. In compiled code, such as
(DEFUN FOO () (EVAL-WHEN (EVAL) (PRINT 'FOO)))
the call to PRINT should be compiled.
* Macros intended for use in top-level forms should arrange for all
side-effects to be done by the forms in the macro expansion.
The macro-expander itself should not do the side-effects.
Wrong: (defmacro foo ()
(really-foo)
`(really-foo))
Right: (defmacro foo ()
`(eval-when (compile eval load) (really-foo)))
Adherence to this convention will mean that such macros will behave
intuitively when placed in non-top-level positions.
* Placing a variable binding around an EVAL-WHEN reliably captures the
binding because the `compile-time-too' mode cannot occur (because
introducing a variable binding would mean we were not at top level).
For example,
(LET ((X 3))
(EVAL-WHEN (EVAL LOAD COMPILE) (PRINT X)))
will print 3 at execution [load] time, and will not print anything at
compile time. This is important so that expansions of DEFUN and
DEFMACRO can be done in terms of EVAL-WHEN and can correctly capture
the lexical environment.
(DEFUN BAR (X) (DEFUN FOO () (+ X 3)))
might expand into
(DEFUN BAR (X)
(PROGN (EVAL-WHEN (COMPILE)
(COMPILER::NOTICE-FUNCTION-DEFINITION 'FOO '(X)))
(EVAL-WHEN (EVAL LOAD)
(SETF (SYMBOL-FUNCTION 'FOO) #'(LAMBDA () (+ X 3))))))
which would be treated the same as
(DEFUN BAR (X)
(SETF (SYMBOL-FUNCTION 'FOO) #'(LAMBDA () (+ X 3))))
by the above rules.
Test Cases:
;; #1: The EVAL-WHEN in this case is not at top-level, so only the EVAL
;; keyword is considered. At compile time, this has no effect.
;; At load time (if the LET is at top level), or at execution time
;; (if the LET is embedded in some other form which does not execute
;; until later) this sets (SYMBOL-FUNCTION 'FOO1) to a function which
;; returns 1.
(LET ((X 1))
(EVAL-WHEN (EVAL LOAD COMPILE)
(SETF (SYMBOL-FUNCTION 'FOO1) #'(LAMBDA () X))))
;; #2: If this expression occurs at the top-level of a file to be compiled,
;; it has BOTH a compile time AND a load-time effect of setting
;; (SYMBOL-FUNCTION 'FOO2) to a function which returns 2.
(EVAL-WHEN (EVAL LOAD COMPILE)
(LET ((X 2))
(EVAL-WHEN (EVAL LOAD COMPILE)
(SETF (SYMBOL-FUNCTION 'FOO2) #'(LAMBDA () X)))))
;; #3: If this expression occurs at the top-level of a file to be compiled,
;; it has BOTH a compile time AND a load-time effect of setting the
;; function cell of FOO3 to a function which returns 3.
(EVAL-WHEN (EVAL LOAD COMPILE)
(SETF (SYMBOL-FUNCTION 'FOO3) #'(LAMBDA () 3)))
;; #4: This always does nothing. It simply returns NIL.
(EVAL-WHEN (COMPILE)
(EVAL-WHEN (COMPILE)
(PRINT 'FOO4)))
;; #5: If this form occurs at top-level of a file to be compiled, FOO5 is
;; printed at compile time. If this form occurs in a non-top-level
;; position, nothing is printed at compile time. Regardless of context,
;; nothing is ever printed at load time or execution time.
(EVAL-WHEN (COMPILE)
(EVAL-WHEN (EVAL)
(PRINT 'FOO5)))
;; #6: If this form occurs at top-level of a file to be compiled, FOO6 is
;; printed at compile time. If this form occurs in a non-top-level
;; position, nothing is printed at compile time. Regardless of context,
;; nothing is ever printed at load time or execution time.
(EVAL-WHEN (EVAL LOAD)
(EVAL-WHEN (COMPILE)
(PRINT 'FOO6)))
Rationale:
This is compatible with any guarantees made by CLtL, and extends the
behavior usefully to non-top-level situations.
This gives a useful meaning to EVAL-WHEN that supports useful and
predictable behavior if defining macros are used in a non-top-level
situation.
Proposal (EVAL-WHEN-NON-TOP-LEVEL:GENERALIZE-EVAL-NEW-KEYWORDS):
As in GENERALIZE-EVAL, but rename the EVAL keyword to :EXECUTE,
the COMPILE keyword to :COMPILE-TOPLEVEL, and LOAD keyword to
:LOAD-TOPLEVEL.
Deprecate the use of keywords EVAL, COMPILE, and LOAD to EVAL-WHEN.
For compatibility, they are supported in EVAL-WHEN
at top-level, but their meaning is not defined elsewhere.
Rationale:
The fact that the situation keywords chosen are not the same as
those now used means that the change can be added in a way that
is truly upward compatible (not only with CLtL but with existing
practice in implementations which have chosen to extend or `clarify'
the definition given in CLtL) since the meaning of EVAL, COMPILE,
and LOAD in non-top-level situations (which was never spelled
out in CLtL) can legitimately differ from the meaning of these
new keywords.
Using other names and/or the keyword package for the names of
situations solves the EVAL-WHEN shadowing problem.
The name `execute' does not promote the confusion that the body of an
EVAL-WHEN must be executed only in the evaluator. It also does not
promote the confusion that the body of an EVAL-WHEN, regardless of when
executed, must run interpreted.
The names `compile-toplevel' and `load-toplevel' emphasize the fact
that these cases are not interesting in non-top-level positions.
Current Practice:
In Symbolics Genera, the interpreter permits EVAL-WHEN in non-top-level
positions in a way that is compatible with this proposal but both the
COMPILE and COMPILE-FILE functions complain about EVAL-WHEN in a
non-top-level position.
Both Lucid Common Lisp and Kyoto Common Lisp already interpret the
EVAL keyword to mean "execute" in non-top-level situations. Both of
these implementations also make (EVAL-WHEN (LOAD) ...) suppress
compile-time "magic" from defining macros such as DEFMACRO.
IIM describes its EVAL-WHEN as:
(defmacro eval-when (situations &body body &environment env)
(if (not (compiler-environment-p env))
(when (member 'eval situations) `(progn ,@body))
(progn
(when (member 'compile situations)
(if (compiler-at-top-level-p env)
(mapc #'eval body)
(warn "Top-level form encountered at non-top-level.")))
(when (member 'load situations) `(progn ,@body)))))
Note that the interpretation of the EVAL situation and the nesting
behavior is different.
Cost to Implementors:
The actual change to EVAL-WHEN in both cases is probably fairly
localized and straightforward to make in most or all implementations.
The second-order costs of proposal GENERALIZE-EVAL will vary depending
on whether existing implementations have extended the definition of
EVAL-WHEN in incompatible ways. If an implementation has made such
extensions, there may be user and system code which depends on them
and the cost of converting that code may be non-trivial. There is
presumably also documentation impact.
Proposal GENERALIZE-EVAL-NEW-KEYWORDS avoids most or all of the
second-order costs of proposal GENERALIZE-EVAL.
The compiler processing for top-level forms might be implemented
something like:
;;; Forms read by the file compiler are passed to PROCESS-TOP-LEVEL-FORM
;;; with a env compile-time-too both NIL.
(defun process-top-level-form (form env compile-time-too)
(setq form (macroexpand form env))
(cond ((not (consp form))
nil)
((eq (car form) 'progn)
(dolist (f (cdr form))
(process-top-level-form f env compile-time-too)))
((eq (car form) 'compiler-let)
(process-compiler-let form env compile-time-too))
((eq (car form) 'macrolet)
(process-macrolet form env compile-time-too))
((eq (car form) 'symbol-macrolet)
(process-symbol-macrolet form env compile-time-too))
((eq (car form) 'eval-when)
(process-eval-when form env compile-time-too))
(t
(if compile-time-too
(internal-eval form env))
(compile-form form env))
))
(defun process-eval-when (form env compile-time-too)
(let* ((situations (cadr form))
(body (cddr form))
(compile-p (member 'compile situations))
(load-p (member 'load situations))
(eval-p (member 'eval situations)))
(cond ((or (and compile-p load-p)
(and eval-p load-p compile-time-too))
(process-top-level-form `(progn ,@body) env t))
(load-p
(process-top-level-form `(progn ,@body) env nil))
((or compile-p
(and eval-p compile-time-too))
(dolist (f body)
(internal-eval f env)))
(t
nil))))
;;; PROCESS-COMPILER-LET, PROCESS-MACROLET, and PROCESS-SYMBOL-MACROLET
;;; do the obvious things.
;;; INTERNAL-EVAL evaluates "form" in lexical environment "env".
Cost to Users:
Technically, none. Either proposal is technically upward compatible
with CLtL.
Proposal GENERALIZE-EVAL might force some extended implementations to
change incompatibly. As such, some users who depend on
implementation-dependent extensions might have to adjust their code
somewhat to deal with those changes.
Proposal GENERALIZE-EVAL-NEW-KEYWORDS does not force implementations
to change incompatibly, so has no forced impact on users.
Cost of Non-Adoption:
EVAL-WHEN is a mess. Using it as the low-level substrate into which
defining macros should expand, and guaranteeing any predictable effects
of those macros in non-top-level situations is currently difficult and
would continue to be so in the absence of some resolution on this issue.
Benefits:
The costs of non-adoption would be avoided: it would be possible to
use EVAL-WHEN in many situations where it cannot currently be used
reliably.
The portability of many existing tools which use EVAL-WHEN internally
in macros will be enhanced.
Aesthetics:
This generalization of the meaning makes the purpose and uses of
EVAL-WHEN less mysterious. In that sense, aesthetics are simplified
somewhat.
Discussion:
The cleanup issue LOCALLY-TOP-LEVEL would make LOCALLY also "pass
through" top-level-ness to its body. The reason why that is not
addressed in this issue is that it involves making LOCALLY a special
form.
Pitman and Moon don't care whether we say `top level,' `top-level,' or
`toplevel.' The spelling choices in this writeup are arbitrary. If
necessary, the proposal GENERALIZE-EVAL-NEW-KEYWORDS could be amended
to propose :COMPILE-TOP-LEVEL, etc.
Pitman, Moon, and Bob Laddaga (a Symbolics Cloe implementor) support
both of these proposals. Pitman and Laddaga have a preference for
GENERALIZE-EVAL-NEW-KEYWORDS. Moon is neutral about which should be
preferred.
Sandra Loosemore says:
I still feel somewhat uncomfortable with the definition of EVAL-WHEN
presented here, mostly because its nesting behavior is so unintuitive
(as in test case number 6). We have also had a hard time in deciding
what the term "top-level" really means; the definition presented here
is rather arbitrary. However, since we have run out of time in which
to come up with acceptable alternatives, I'm willing to go along with
proposal GENERALIZE-EVAL. It is compatible with the description in
CLtL but presented in a more coherent way, and I think it is an
improvement. On the other hand, I don't really like the idea of
changing the names of the keywords; if we are going to make an
incompatible change, the right thing to do would be to throw out
EVAL-WHEN entirely and start from scratch.
∂13-Mar-89 1601 X3J13-mailer **DRAFT** issue MACRO-ENVIRONMENT-EXTENT, version 3
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 13 Mar 89 15:57:19 PST
Received: from defun.utah.edu by cs.utah.edu (5.61/utah-2.1-cs)
id AA10215; Mon, 13 Mar 89 16:55:08 -0700
Received: by defun.utah.edu (5.61/utah-2.0-leaf)
id AA02585; Mon, 13 Mar 89 16:55:05 -0700
Date: Mon, 13 Mar 89 16:55:05 -0700
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8903132355.AA02585@defun.utah.edu>
To: x3j13@sail.stanford.edu
Reply-To: cl-compiler@sail.stanford.edu
Subject: **DRAFT** issue MACRO-ENVIRONMENT-EXTENT, version 3
This issue is still under discussion. There are three proposals
presented formally and two more mentioned informally in the discussion
section, but it appears that the decision is really between proposal
DYNAMIC and everything else.
Forum: Compiler
Issue: MACRO-ENVIRONMENT-EXTENT
References: CLtL p. 145-146
Issue COMPILER-LET-CONFUSION
Issue MACRO-CACHING
Issue EVAL-WHEN-NON-TOP-LEVEL
Issue SYNTACTIC-ENVIRONMENT-ACCESS
CLOS Chapter 3 (89-003)
Category: CLARIFICATION,CHANGE
Edit History: V1, 10 Jan 1989, Sandra Loosemore
V2, 09 Mar 1989, Sandra Loosemore
V3, 13 Mar 1989, Sandra Loosemore (last-minute discussion)
Status: **DRAFT**
Problem Description:
What is the extent of environment objects received as the &ENVIRONMENT
argument of a macro function?
CLtL says that &ENVIRONMENT is "useful primarily in the rare cases
where a macro definition must explicitly expand any macros in a
subform of the macro call before computing its own expansion". While
this suggests that macro environment objects are typically used within
the dynamic scope of the macro function, the use of the word
"primarily" (rather than "only" or "exclusively" or some similarly
strong language) suggests that there may be other legitimate uses for
environment objects. But, because CLtL is silent about what those
uses might be, many users and implementors are under the impression
that environment objects have only dynamic extent.
There are some situations where using environment objects as if they
had indefinite extent provides a very useful viewpoint from which to
solve a problem. Consider the following example:
(defmacro typed-var (var) var)
(defmacro local-type-declare (declarations &body forms &environment env)
`(macrolet ((typed-var (&whole w var)
(let ((type (assoc var ',declarations)))
(if type
`(the ,(cadr type) ,var)
(macroexpand w ',env)))))
,@forms))
(defun f (x y)
(local-type-declare ((x fixnum) (y float))
(+ (typed-var x) (typed-var y))))
Here, local macro TYPED-VAR is defined to look first in the innermost
lexical environment for information about the variable, and if there
isn't any then it recurses on the next outermost lexical environment.
The global definition of TYPED-VAR provides a terminal case to stop
the recursion.
There are other situations where the extent of macro environment
objects comes into play. For example, if we allow caching of macro
expansions (issue MACRO-CACHING), environments must have indefinite
extent. It is unclear whether CLOS would be affected by allowing
macro environments to have only dynamic extent. (The descriptions of
the CLOS defining macros in document 89-003 seem to imply that the
value of the &ENVIRONMENT argument appears in the expansion of the
macro, but there now seems to be sentiment that the model of how the
defining macros work that is presented there is broken.)
Proposal MACRO-ENVIRONMENT-EXTENT:INDEFINITE:
State that macro environment objects received with the &ENVIRONMENT
argument of a macro function or as the argument to a *MACROEXPAND-HOOK*
function have indefinite extent.
Note that implementations are not permitted to destructively modify
lexical information in environment objects once they have been passed
to a macro function. It is, however, permissible to add or remove
global definitions that are accessible through the environment.
Rationale:
This legitimizes the use of idioms which depend on macro environments
having indefinite extent.
Since data objects in Lisp otherwise have indefinite extent, it is
more consistent to give environment objects indefinite extent as
well.
Proposal MACRO-ENVIRONMENT-EXTENT:DYNAMIC:
State that macro environment objects received with the &ENVIRONMENT
argument of a macro function or with a *MACROEXPAND-HOOK* function
have only dynamic extent; the consequences are undefined if they are
referred to outside the dynamic extent of that macro function or hook
function.
Rationale:
This allows implementations to use somewhat more efficient techniques
for representing environment objects. For example, the storage could
be stack-allocated, or environments could be bashed destructively
instead of always being freshly heap-allocated.
Proposal MACRO-ENVIRONMENT-EXTENT:DYNAMIC-WITH-COPIER:
State that macro environment objects received with the &ENVIRONMENT
argument of a macro function or with a *MACROEXPAND-HOOK* function
have only dynamic extent; the consequences are undefined if they are
referred to outside the dynamic extent of that macro function or hook
function.
Add a new function:
COPY-ENVIRONMENT environment [function]
This function returns an environment object that is semantically
equivalent to "environment" (which must be an object of the type
received with an &ENVIRONMENT argument to a macro or as an argument to
a *MACROEXPAND-HOOK* function), but which may safely be referred to
outside the dynamic extent of the macro function. This function is
permitted to return an object that is EQ to its argument if that
object may be safely used.
Rationale:
This allows implementations to use somewhat more efficient techniques
for representing environment objects. For example, the storage could
be stack-allocated, or environments could be bashed destructively
instead of always being freshly heap-allocated.
It also allows programmers to use idioms that rely on environment
objects having indefinite extent.
Current Practice:
Macro environments appear to have indefinite extent in Lucid Common
Lisp, Kyoto Common Lisp, CMU Common Lisp (at least in the
interpreter), Utah Common Lisp, and A-Lisp. A-Lisp internally uses
the kind of idiom shown in the example above to implement FLET,
LABELS, and FUNCTION as macros.
Macro environments are stack-allocated in Symbolics Genera, and hence
have dynamic extent.
Macro environments also have dynamic extent on the TI Explorer,
because the compiler uses special variables are used to keep track of
lexical definitions.
Cost to implementors:
For proposal INDEFINITE, some implementations would need to change. A
simple implementation of macro environments that would fit the
requirements of this proposal is to represent them as lists, pushing
information for inner contours onto the front of the list as the
contour is entered and popping the list when the contour is exited.
For proposal DYNAMIC, there is no associated implementation cost.
For proposal DYNAMIC-WITH-COPIER, the implementation cost is unknown
but probably fairly small in most implementations.
Cost to users:
For proposal INDEFINITE, there is no associated cost to users.
For proposal DYNAMIC, users would not be able to portably use a
simple and elegant approach to solving certain kinds of problems.
For proposal DYNAMIC-WITH-COPIER, users would have to remember to make
a copy of an environment object in some situations.
Benefits:
It is made clear whether treating environment objects as if they had
indefinite extent is portable usage.
Discussion:
Proposal SYNTACTIC-ENVIRONMENT-ACCESS:ADD-FUNCTIONAL-INTERFACE
includes adding a function called AUGMENT-ENVIRONMENT which could also
be used to create a copy of an environment. However, it returns an
object with the same extent as its argument, and therefore can not
replace the function COPY-ENVIRONMENT under proposal
DYNAMIC-WITH-COPIER.
We have also considered a couple of other alternatives on this
issue.
One alternative would be to give "remote" environments created by
COMPILE-FILE the extent of that call to COMPILE-FILE, while "local"
environments (the null lexical environment and environments created by
COMPILE and EVAL) would have indefinite extent.
Another alternative would be to say that environments created by
COMPILE-FILE, COMPILE, or EVAL have a dynamic extent that includes the
time when any other macro calls appearing lexically within the
expansion returned by the macro function are expanded. This is
similar to the extent of the special bindings made by COMPILER-LET.
Both of these proposals could be combined with adding a copier
function to deal with those implementations where environments are
stack-allocated. They would both solve the extent problem for the
example given in the problem description section, but not the general
problem of macro caching. In conjunction with the proposals for issue
SYNTACTIC-ENVIRONMENT-ACCESS, they would both require some
modifications to implementations that currently give macro
environments dynamic extent.
Loosemore supports proposal MACRO-ENVIRONMENT-EXTENT:INDEFINITE.
Moon says:
My opinion is that anything in CLOS that seems to depend on indefinite
extent for macro environments is broken and needs to be fixed. It's not
broken because of the environment extent, but for other reasons.
Thus I believe in dynamic extent for environments.
Neil Goldman says:
In my code walker I have a pretty ugly way of dealing with MACROLET
that would have been trivial if I could have counted on the
ENVIRONMENT having indefinite extent. There may be some cleaner way
than what I did, but I just looked at PCL's code walker, and it also
is much more complex than would be necessary if environments had
indefinite extent.
∂13-Mar-89 1610 X3J13-mailer **DRAFT** issue PROCLAIM-ETC-IN-COMPILE-FILE (version 4)
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 13 Mar 89 16:10:26 PST
Received: from defun.utah.edu by cs.utah.edu (5.61/utah-2.1-cs)
id AA10862; Mon, 13 Mar 89 17:08:13 -0700
Received: by defun.utah.edu (5.61/utah-2.0-leaf)
id AA02608; Mon, 13 Mar 89 17:08:10 -0700
Date: Mon, 13 Mar 89 17:08:10 -0700
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8903140008.AA02608@defun.utah.edu>
To: x3j13@sail.stanford.edu
Reply-To: cl-compiler@sail.stanford.edu
Subject: **DRAFT** issue PROCLAIM-ETC-IN-COMPILE-FILE (version 4)
This is a new writeup for an issue that was first brought up several
months ago. We haven't had time to review it thoroughly yet.
Issue: PROCLAIM-ETC-IN-COMPILE-FILE
References: CLtL p. 182 [package functions],
p. 156 [PROCLAIM], p. 439 [COMPILE-FILE];
Issue COMPILE-FILE-HANDLING-OF-TOP-LEVEL-FORMS
Issue IN-PACKAGE-FUNCTIONALITY
Issue EVAL-WHEN-NON-TOP-LEVEL
Issue DEFINING-MACROS-NON-TOP-LEVEL
Category: CLARIFICATION, CHANGE, ADDITION
Edit History: 15 Sep 88, V1 by David Gray
23 Sep 88, V2 by Sandra Loosemore (summarize discussion)
11 Mar 89, V3 by Sandra Loosemore (rewrite)
13 Mar 89, V4 by Sandra Loosemore (discussion)
Status: **DRAFT**
Problem Description:
Should the compiler treat top-level calls to PROCLAIM specially?
Page 182 of CLtL says that COMPILE-FILE needs to treat top-level calls
to the following package functions as though they were wrapped in an
(EVAL-WHEN (COMPILE LOAD EVAL) ...):
EXPORT IMPORT IN-PACKAGE MAKE-PACKAGE SHADOW
SHADOWING-IMPORT UNEXPORT UNUSE-PACKAGE USE-PACKAGE
CLtL is silent on whether top-level calls to PROCLAIM should also be
evaluated at compile-time, which presumably means they shouldn't be.
However, some implementations do evaluate PROCLAIM at compile-time.
In the model of how COMPILE-FILE works that is presented in issues
EVAL-WHEN-NON-TOP-LEVEL and DEFINING-MACROS-NON-TOP-LEVEL, the special
form EVAL-WHEN is the only thing that can cause compile-time evaluation
to occur. The compile-time side-effects of macros such as DEFMACRO
and DEFPACKAGE are explained by having them include EVAL-WHEN in their
expansions. Any functions that are treated specially, however, must
be included as special cases in the compiler.
Proposal IN-PACKAGE-FUNCTIONALITY:NEW-MACRO would remove the
requirement that the package functions be treated specially. Do we
wish to make an exception to the model for PROCLAIM?
Proposal PROCLAIM-ETC-IN-COMPILE-FILE:YES:
Require COMPILE-FILE to treat top-level calls to PROCLAIM as if they
were wrapped in an (EVAL-WHEN (COMPILE LOAD EVAL) ...).
Rationale:
Proclamations affect compilation semantics and should be made
available to the compiler.
Proposal PROCLAIM-ETC-IN-COMPILE-FILE:NO:
Clarify that calls to PROCLAIM should be treated the same as any
other function call. Users should wrap an explicit EVAL-WHEN around
top-level calls to PROCLAIM if they want them to affect compilation.
Rationale:
This makes the semantics of COMPILE-FILE more uniform and easier
to understand. In particular, if we remove the magic compile-time
behavior of the package functions, it seems silly to add another
exception for PROCLAIM.
Proposal PROCLAIM-ETC-IN-COMPILE-FILE:NEW-MACRO:
Add a new macro:
DEFPROCLAIM &rest decl-specs [Macro]
This macro PROCLAIMs the given <decl-specs>, which are not
evaluated. If a call to this macro appears at top-level in a file
being processed by the file compiler, the proclamations are also
made at compile-time. As with other defining macros, it is
unspecified whether or not the compile-time side-effects of a
DEFPROCLAIM persist after the file has been compiled.
Clarify that calls to PROCLAIM should be treated the same as any
other function call. Users should wrap an explicit EVAL-WHEN around
top-level calls to PROCLAIM if they want them to affect compilation,
or use the macro DEFPROCLAIM.
Rationale:
The macro makes the proclamations available to the compiler in such
a way that does not require any special exceptions to be made in
the model of how COMPILE-FILE works.
Current Practice:
The TI explorer apparently implements proposal YES, except that
(EVAL-WHEN (LOAD) (PROCLAIM '(OPTIMIZE ...))) doesn't do anything.
The Symbolics compiler has special top-level handling for PROCLAIM,
although the details are not clear.
Lisps developed at Utah (UCL, A-Lisp, PSL/PCLS) do not give PROCLAIM
any special compile-time handling.
Lucid does not evaluate calls to PROCLAIM at compile-time.
The IIM compiler has special top-level handling for PROCLAIM when
the argument is a constant. The information is recorded in the remote
environment.
Cost to implementors:
Since implementations are already required to have a mechanism for
compile-time handling of the package functions, it would probably
only require minor adjustments to add handling for PROCLAIM.
Cost to users:
For proposal YES, users would have no way to suppress compile-time
evaluation of a top-level call to PROCLAIM. Wrapping it in an
(EVAL-WHEN (EVAL LOAD)...) wouldn't work under the model of how
EVAL-WHEN works in proposal EVAL-WHEN-NON-TOP-LEVEL:GENERALIZE-EVAL.
Under any of these proposals, some users would probably have to
make minor changes to their code.
Benefits:
Users will know what to expect when they use PROCLAIM.
Costs of Non-Adoption:
Users will not know what to expect when they use PROCLAIM.
Aesthetics:
At least two people consider requiring magic behavior for certain
top-level function calls to be "semantically bletcherous". Removing
all special cases for functions that are implicitly evaluated at
compile-time would simplify the model of how COMPILE-FILE works.
Programs look cleaner if EVAL-WHEN is only needed for unusual cases
instead of being required for the normal cases.
Discussion:
The first version of this writeup also included REQUIRE with PROCLAIM,
but we have now voted to remove REQUIRE from the language entirely.
It also specified that OPTIMIZE proclamations should only have a local
effect within the file being compiled. This was removed for
consistency with other compile-time side-effects (such as those from
DEFMACRO), where their persistence is explicitly left unspecified.
Loosemore favors proposal NO, but wouldn't oppose proposal NEW-MACRO.
Kim Barrett says:
Proposal YES violates the general approach we've been taking of trying
to limit side-effects on the local environment during compilation.
Proposal NO makes PROCLAIM virtually worthless.
Proposal NEW-MACRO -- While this matches up with other stuff we've
been doing, I'm concerned about two things. First, I really dislike
the name DEFPROCLAIM. This thing isn't defining anything! It sounds
like something that modifies the behavior of PROCLAIM, not something
that actually makes a proclamation. Second, I'm concerned about the
cost to users. I think the statement that
"Under any of these proposals, some users would probably have to make
minor changes to their code."
is rather misleading for this case. There are a lot of PROCLAIMs out
there.
Loosemore replies:
....but all of those uses of PROCLAIM are already nonportable. No
matter what we do here, somebody is going to get burned.
Suggestions for better names for the macro are welcome.
∂13-Mar-89 1622 X3J13-mailer **DRAFT** issue SYNTACTIC-ENVIRONMENT-ACCESS (version 4)
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 13 Mar 89 16:22:04 PST
Received: from defun.utah.edu by cs.utah.edu (5.61/utah-2.1-cs)
id AA11265; Mon, 13 Mar 89 17:19:53 -0700
Received: by defun.utah.edu (5.61/utah-2.0-leaf)
id AA02631; Mon, 13 Mar 89 17:19:48 -0700
Date: Mon, 13 Mar 89 17:19:48 -0700
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8903140019.AA02631@defun.utah.edu>
To: x3j13@sail.stanford.edu
Reply-To: cl-compiler@sail.stanford.edu
Subject: **DRAFT** issue SYNTACTIC-ENVIRONMENT-ACCESS (version 4)
This issue is also still under discussion. This version of the writeup
is fairly new and hasn't been reviewed thoroughly yet.
Forum: Compiler
Issue: SYNTACTIC-ENVIRONMENT-ACCESS
References: CLtL Chapter 8: Macros,
Issue MACRO-FUNCTION-ENVIRONMENT,
Issue GET-SETF-METHOD-ENVIRONMENT,
Issue COMPILE-FILE-ENVIRONMENT
Related Issues: Issue FUNCTION-NAME,
Issue PROCLAIM-LEXICAL
Issue MACRO-ENVIRONMENT-EXTENT
Category: ADDITION
Edit history: Version 1, 2-Oct-88, Eric Benson
Version 2, 17-Feb-89, Kim A. Barrett
Version 3, 9-Mar-89, Kim A. Barrett (respond to comments)
Version 4, 12-Mar-89, Sandra Loosemore (more revisions)
Status: **DRAFT**
Problem description:
When macro forms are expanded, the expansion function is called with
two arguments: the form to be expanded, and the environment in which
the form was found. The environment argument is of limited utility.
The only use sanctioned currently is as an argument to MACROEXPAND or
MACROEXPAND-1 or passed directly as an argument to another macro
expansion function. Recent cleanup issues propose to allow it as an
argument to MACRO-FUNCTION and to GET-SETF-METHOD.
It is very difficult to write a code walker that can correctly handle
local macro and function definitions, due to insufficient access to
the information contained in environments and the inability to
augment environments with local definitions.
Some people believe that the CLOS meta-object protocol will require the
ability to distinguish between remote environments used for compiling
to a file, from local environments used for processing by EVAL or
COMPILE. (However, there is no requirement in chapters 1 & 2 of the
CLOS spec that things be done this way.)
There are three proposals; SMALL, MEDIUM, and LARGE.
Proposal (SYNTACTIC-ENVIRONMENT-ACCESS:SMALL):
The following functions provide information about syntactic
environment objects. In all of these functions the argument named ENV
is an environment of the sort received by the &ENVIRONMENT argument to
a macro or as the environment argument for EVALHOOK. Optional "env"
arguments default to NIL, which respresents the local null lexical
environment (containing only global definitions and proclamations
that are present in the runtime environment). All of these functions
should signal an error of type TYPE-ERROR if the value of an
environment argument is not a syntactic environment.
VARIABLE-KIND variable &optional env [Function]
VARIABLE is a symbol. This function returns one of the following
symbols, depending on the type of definition or binding which is
apparent in ENV.
NIL There is no apparent definition or binding for variable.
:SPECIAL VARIABLE refers to a special variable, either declared
or proclaimed.
:LEXICAL VARIABLE refers to a lexical variable.
:SYMBOL-MACRO VARIABLE refers to a SYMBOL-MACROLET binding.
:CONSTANT VARIABLE refers to a named constant, defined by
DEFCONSTANT.
[Note: If issue PROCLAIM-LEXICAL passes, then the :LEXICAL result
will also refer to variables proclaimed lexical.]
Example:
(DEFMACRO KIND-OF-VARIABLE (VAR &ENVIRONMENT ENV)
`',(VARIABLE-KIND VAR ENV))
(DEFVAR A)
(DEFUN TEST ()
(LET (B)
(LET (C)
(DECLARE (SPECIAL C))
(SYMBOL-MACROLET ((D ANYTHING))
(LIST (KIND-OF-VARIABLE A)
(KIND-OF-VARIABLE B)
(KIND-OF-VARIABLE C)
(KIND-OF-VARIABLE D)
(KIND-OF-VARIABLE E))))))
(TEST) -> (:SPECIAL :LEXICAL :SPECIAL :SYMBOL-MACRO NIL)
FUNCTION-KIND function &optional env [Function]
FUNCTION is a function name. This function returns two values,
depending on the type of function definition or function binding
which is apparent for FUNCTION in ENV.
NIL There is no apparent definition for FUNCTION.
:FUNCTION FUNCTION refers to a function.
:MACRO FUNCTION refers to a macro.
:SPECIAL-FORM FUNCTION refers to a special form.
The second value specifies whether the definition is local or
global. If local, the second value is true, and it is false when
the definition is global.
Some function names may refer to both a global macro and a global
special form. In such a case, the macro takes precedence, and
:MACRO is returned as the first value.
[Note: The use of "function name" rather than "symbol" as the
description of the function argument is intended to be compatible
with the various proposals to extend the syntax of function
specifiers. If no such change actually occurs then this would only
refer to symbols.]
Example:
(DEFMACRO KIND-OF-FUNCTION (FUNCTION-NAME &ENVIRONMENT ENV)
`',(FUNCTION-KIND FUNCTION-NAME ENV))
(DEFUN A ())
(DEFMACRO B ())
(DEFUN TEST ()
(FLET ((C ()))
(MACROLET ((D ()))
(MULTIPLE-VALUE-CALL #'LIST
(KIND-OF-FUNCTION A)
(KIND-OF-FUNCTION B)
(KIND-OF-FUNCTION QUOTE)
(KIND-OF-FUNCTION C)
(KIND-OF-FUNCTION D)
(KIND-OF-FUNCTION E)))))
(TEST) -> (:FUNCTION NIL
:MACRO NIL
:SPECIAL-FORM NIL
:FUNCTION T
:MACRO T
NIL NIL)
VARIABLE-TYPE variable &optional env [Function]
VARIABLE is a symbol. This function returns the type specifier
associated with the variable named by the symbol in the environment.
If no explicit association exists, either by PROCLAIM or DECLARE,
then the result is the type specifier T.
The result of this function may not include all the apparent TYPE
declarations for VARIABLE. In particular, an implementation is free
to ignore TYPE declarations, only returning TYPE information which
was added to ENV by a call to AUGMENT-ENVIRONMENT.
Example:
This example assumes that the implementation records type
information in the environment, rather than ignoring it.
(DEFMACRO VARTYPE (VAR &ENVIRONMENT ENV)
`',(VARIABLE-TYPE VAR ENV))
(DEFVAR A 1)
(PROCLAIM '(FIXNUM A))
(DEFUN TEST ()
(LET ((B (AREF "X" 0))
(C 3))
(DECLARE (STRING-CHAR B))
(LIST (VARTYPE A) (VARTYPE B) (VARTYPE C))))
(TEST) -> (FIXNUM STRING-CHAR NIL)
FUNCTION-FTYPE function &optional env [Function]
FUNCTION is a function name. This function returns the functional
type specifier associated with the function in the environment, or
the symbol FUNCTION if there is no functional type declaration or
proclamation associated with the function.
The result of this function may not include all the apparent FTYPE
declarations for FUNCTION. In particular, an implementation is free
to ignore FTYPE declarations, only returning FTYPE information which
was added to ENV by a call to AUGMENT-ENVIRONMENT.
Example:
This example assumes that the implementation records ftype
information in the environment, rather than ignoring it.
(DEFMACRO FUNTYPE (FUN &ENVIRONMENT ENV)
`',(FUNCTION-FTYPE FUN ENV))
(DEFUN A-FUNCTION (X)
(+ X 3))
(PROCLAIM '(FTYPE (FUNCTION (FIXNUM) FIXNUM) A-FUNCTION))
(DEFUN TEST ()
(FLET ((ANOTHER-FUNCTION (X)
(+ X 2)))
(DECLARE (FTYPE (FUNCTION (INTEGER) INTEGER) ANOTHER-FUNCTION))
(LIST (FUNTYPE A-FUNCTION) (FUNTYPE ANOTHER-FUNCTION))))
(TEST) -> ((FUNCTION (FIXNUM) FIXNUM) (FUNCTION (INTEGER) INTEGER))
AUGMENT-ENVIRONMENT env &KEY variable
symbol-macro
function
macro
declare [Function]
This function returns a copy of ENV, augmented with the information
provided by the keyword arguments. The arguments are supplied as
follows:
:VARIABLE A list of symbols which shall be visible as bound
variables in the new environment. Whether each
binding is to be interpreted as special or lexical
depends on SPECIAL declarations recorded in the
environment or provided in the :DECLARE argument list.
:SYMBOL-MACRO A list of symbol macro definitions, in the same format
as the CADR of a SYMBOL-MACROLET special form. The
new environment will have local symbol-macro bindings
of each symbol to the corresponding expansion, so that
MACROEXPAND will be able to expand them properly.
:FUNCTION A list of function names which shall be visible as local
function bindings in the new environment.
:MACRO A list of local macro definitions, in the same format
as the CADR of a MACROLET special form. The new
environment will have local macro bindings of each
name to the corresponding expander function, which
will be returned by MACRO-FUNCTION and used by
MACROEXPAND.
:DECLARE A list of decl-specs. The new environment will
contain information about SPECIAL, TYPE, and FTYPE
declarations appearing within the list.
An error is signalled if any of the symbols naming macros in the
:SYMBOL-MACRO alist are also included in the :VARIABLE list.
An error is signalled if any of the names specified as keys in the
:MACRO alist are also included in the :FUNCTION list. The consequences
of destructively modifying the list structure of any of the arguments
to this function are undefined.
The extent of the returned environment is the same as the extent of
the argument.
While an environment argument from EVALHOOK may be used as the
environment argument for this function, the reverse is not true. If
an attempt is made to use the result of AUGMENT-ENVIRONMENT as
the environment argument for EVALHOOK, the consequences are undefined.
The environment returned by AUGMENT-ENVIRONMENT may only be used for
syntactic analysis, ie. the functions specified by this proposal and
functions such as MACROEXPAND.
[If PROCLAIM-LEXICAL is adopted, LEXICAL declarations would also
be recognized.]
Rationale:
This proposal defines a minimal set of accessors and a constructor
for environments.
The symbol-macro and macrolet definitions and declarations passed
to AUGMENT-ENVIRONMENT are in the same form as those which would
normally be encountered by a code-walker. This makes it easier to
use. In particular, there is no need for users to write their own
code to destructure macro arguments.
Making TYPE and FTYPE information optional continues to allow
implementations the freedom to simply ignore all such declarations.
Proposal (SYNTACTIC-ENVIRONMENT-ACCESS:MEDIUM):
This is the same as proposal SMALL, but also includes:
There are two kinds of environments, local and remote. Local
environments are created by EVAL and COMPILE, and are used in
situations where the information in the environment pertains
to the immediate running Lisp environment. Remote environments
are used by processors such as COMPILE-FILE to model what the
Lisp environment will look like when the code being processed
is actually loaded.
If AUGMENT-ENVIRONMENT receives a remote environment as an argument,
then the new environment returned by this function will also be
remote, and the two will refer to the same model of the remote
environment.
ENVIRONMENT-REMOTE-P env [Function]
Returns true if ENV is a remote environment, false otherwise.
WITH-REMOTE-ENVIRONMENT var &body body [Macro]
Evaluates the BODY forms with VAR bound to a newly created remote
environment. The extent of the environment is the dynamic extent of
the WITH-REMOTE-ENVIRONMENT form.
This is the only specified mechanism by which a new remote
environment may be created.
Rationale:
The notion of local and remote environments may be useful for
developing the CLOS meta-object protocol. At some future time,
we may wish to tighten the specification of how compile-time
definitions of defining macros such as DEFMACRO or DEFCLASS are
achieved, by saying that the compile-time definitions must be made
only in the remote environment.
Proposal (SYNTACTIC-ENVIRONMENT-ACCESS:LARGE):
This is the same as proposal MEDIUM, but also includes:
ENVIRONMENT-PROPERTY env name property &optional default
This function and its SETF method allow the association of arbitrary
'global' properties with names within an environment. An
environment can be thought of as having a local property list
associated with any name, and this function provides access to that
property list.
A remote environment may be thought of as an extension of the local
environment. Thus, when this function is applied to a remote
environment and the property is not found, the global local environment
is then searched.
The association between names and property lists uses EQUAL to match
names. The search of the property list uses EQ to match properties.
If the property is not found, DEFAULT is returned.
Using SETF of ENVIRONMENT-PROPERTY affects all environments which
refer to the same environment model. In particular, if ENV is a
local environment then all local environments are affected, while if
ENV is a remote environment, then all environments refering to the
same remote environment model as the argument are affected.
[Note: The local property list of a name is not necessarily the
symbol-plist of the name, though that is a possible implementation
for names which are symbols.
Note: The use of EQUAL as the matching function for names is to
allow for proposed extensions to function names. If no such
extension occurs, then EQ could be used instead.]
Rationale:
This would provide a mechanism for making and accessing global
definitions in the remote environment.
Cost to Implementors:
Most implementations already record some of this information in some
form. Providing these functions should not be too difficult, but it
is a more than trivial amount of work.
Cost to Users:
This change is upward compatible with user code.
Current practice:
No implementation provides all of this interface currently. Portable
Common Loops defines a subset of this functionality for its code
walker and implements it on a number of diffent versions of Common
Lisp. IIM uses the functionality provided by ENVIRONMENT-REMOTE-P
and ENVIRONMENT-PROPERTY (under other names) to implement the
association between names and remote metaobjects (macro and type
definitions, CLOS remote metaobjects, &etc).
Discussion:
The first version of this proposal expressly did not deal with the
objects which are used as environments by EVALHOOK. This version is
extended to support them in the belief that such environments share a
lot of functionality with the syntactic environments needed by a
compiler. While the two types of environments may have very
different implementations, there are many operations which are
reasonable to perform on either type, including all of the accessor
functions described by this proposal.
AUGMENT-ENVIRONMENT currently requires signaling an error when
symbol-macro names match variable names in the same call. This could
be reduced to "should signal". By requiring the error signaling, this
proposal is compatable with Proposal SYMBOL-MACROLET-DECLARE:ALLOW,
which says
"... signals an error if a SPECIAL declaration names one of the symbols
being defined as a symbol-macrolet."
Maintaining compatability with the SYMBOL-MACROLET-DECLARE proposal
allows fairly trivial implementations of the SYMBOL-MACROLET
special-form in terms of the AUGMENT-ENVIRONMENT function.
An possible alternative syntax for WITH-REMOTE-ENVIRONMENT might be
WITH-REMOTE-ENVIRONMENT (var &key) &body body
Can anyone suggest candidates for keyword options? We could do this
even if we can't think of any immediately, leaving room for
implementation-specific extensions. One candidate option that some
implementations might want would be to specify a target machine for
the compilation.
Kim Barrett originally suggested that WITH-COMPILATION-UNIT should
provide the mechanism for creating new remote environments. However,
it has been suggested that WITH-COMPILATION-UNIT is intended to serve
a somewhat different purpose.
Sandra Loosemore says:
I support proposal SMALL but would vote against both of the larger
proposals. It's true that they provide functionality which *might* be
useful to implement CLOS, but there is nothing now in the standard
that *requires* this functionality to be added. In fact, the version
of issue COMPILE-FILE-HANDLING-OF-TOP-LEVEL-FORMS that was accepted at
the January meeting explicitly leaves unspecified the mechanism by
which defining macros make definitions available to the compiler. We
have very little practical experience with using environment objects
for this purpose and I think it would be premature to try to
standardize it at this point. In particular, since the meta-object
protocol is still undergoing what appear to be substantial changes,
let's wait until it settles down and then see what kind of compiler
hooks it needs, instead of possibly standardizing the wrong thing.
∂13-Mar-89 1627 X3J13-mailer issue WITH-COMPILATION-UNIT, version 3
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 13 Mar 89 16:27:44 PST
Received: from defun.utah.edu by cs.utah.edu (5.61/utah-2.1-cs)
id AA11422; Mon, 13 Mar 89 17:25:34 -0700
Received: by defun.utah.edu (5.61/utah-2.0-leaf)
id AA02634; Mon, 13 Mar 89 17:25:31 -0700
Date: Mon, 13 Mar 89 17:25:31 -0700
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8903140025.AA02634@defun.utah.edu>
To: x3j13@sail.stanford.edu
Reply-To: cl-compiler@sail.stanford.edu
Subject: issue WITH-COMPILATION-UNIT, version 3
Forum: Compiler
Issue: WITH-COMPILATION-UNIT
References: COMPILE (p438), COMPILE-FILE (p439)
Category: ADDITION
Edit history: 29-Sep-88, Version 1 by Pitman
10-Mar-89, Version 2 by Pitman (merge comments)
13-Mar-89, Version 3 by Loosemore (update discussion)
Status: Ready for release
Problem Description:
Some actions done by the compiler (and particularly the file compiler)
are typically deferred until the "very end" of compilation. For example,
some compilers complain about "functions seen but not defined".
Unfortunately, since COMPILE-FILE is the largest unit of granularity,
and since systems often extend over more than one file, it often happens
that the compiler needlessly complains at the end of compiling one file
about the absence of functions defined in the next file.
Proposal (WITH-COMPILATION-UNIT:NEW-MACRO):
Add the following new macro:
WITH-COMPILATION-UNIT options &BODY forms [Macro]
Executes forms from left to right. Within the dynamic context
of this form, actions deferred by the compiler until "the end of
compilation" will be deferred until the end of the outermost call
to WITH-COMPILATION-UNIT. The result(s) are the same as that of
the last of the FORMS (or NIL if FORMS is null).
OPTIONS is a keyword/value list, where only the values are
evaluated. The set of keywords permitted may be extended by the
implementation, but the only keyword defined by this standard is:
:OVERRIDE boolean
The default is NIL. If nested dynamically only the outer call
to WITH-COMPILATION-UNIT has any effect unless BOOLEAN is T,
in which case warnings are deferred only to the end of the
innermost call.
It follows that the functions COMPILE and COMPILE-FILE should
provide the effect of (WITH-COMPILATION-UNIT (:OVERRIDE NIL) ...)
around their code.
Any implementation-dependent extensions may only be provided
as the result of an explicit programmer request by use of
an implementation-dependent keyword. Implementations are forbidden
from attaching additional meaning to a conforming use of this
macro.
Note also that not all warnings are deferred. In some implementations,
it may be that none are deferred. This proposal only creates an
interface to the capability where it exists, it does not require the
creation of the capability. An implementation which does not do
deferred warnings may correctly implement this as expanding into PROGN.
Test Case:
(DEFUN COMPILE-FILES (&REST FILES)
(WITH-COMPILATION-UNIT ()
(MAPCAR #'(LAMBDA (FILE) (COMPILE-FILE FILE)) FILES)))
(COMPILE-FILES "A" "B" "C")
processes deferred warnings only after compiling all of A, B, and C.
Rationale:
This will make the development of portable system-construction tools
considerably more convenient.
Current Practice:
Lucid has a very similar facility, called WITH-DEFERRED-WARNINGS.
TI Explorer and Symbolics Genera have a similar facility, which they
call COMPILER-WARNING-CONTEXT-BIND.
Cost to Implementors:
In implementations which have no deferred warnings, there is no cost.
In implementations which have deferred warnings, the cost is probably
fairly small -- usually just a matter of writing interfacing the
proposed macro to an existing one.
Cost to Users:
None. This is a compatible addition.
Cost of Non-Adoption:
Portable system-construction tools would continue to print lots of
spurious warnings because they would have no way to tell the system
that a set of files was working together.
Benefits:
The cost of non-adoption is avoided.
Aesthetics:
The ability to create a compilation unit other than a file is important.
Discussion:
Pitman and Benson support this addition.
One could imagine adding more options at a later date.
It was the opinion of the compiler committee that there was room for
expansion here to address issues like bounding the scope of global
proclamations, sharing compile-time environments across files, etc.
However, insufficient work was done on this to justify putting such
a thing into the standard. The only clear need we have at this time
was to defer warnings, but we chose a general name like
WITH-COMPILATION-UNIT rather than a specific name like Lucid's
WITH-DEFERRED-WARNINGS in order to encourage implementations to
experiment with other kinds of options under implementation-specific
keywords. Perhaps by the time of the next standard there will be
sufficient understanding of this area to warrant further elaboration
of this primitive.
Kim Barrett says:
I strongly oppose the behavior you proposed for compile and
compile-file. It is my belief that whether to override or not must be
controlled through an argument to the compile functions, with the
default being to override. Otherwise, all existing code which makes
use of the compile functions must be modified to protect itself by
wrapping a (with-compilation-unit (:override t) ...) around the calls
to the compiler.
Consider a stream system built on an object system which will compose
and compile functions on the fly on an as needed basis. It would be
very strange for the functions so generated while doing file io for
the user's compile-file to have any relationship with said
compile-file.
I agree with your position that implementation-dependent extensions
must be explicitly requested.
∂13-Mar-89 1634 X3J13-mailer summary of active cl-compiler issues
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 13 Mar 89 16:34:43 PST
Received: from defun.utah.edu by cs.utah.edu (5.61/utah-2.1-cs)
id AA11546; Mon, 13 Mar 89 17:32:30 -0700
Received: by defun.utah.edu (5.61/utah-2.0-leaf)
id AA02645; Mon, 13 Mar 89 17:32:27 -0700
Date: Mon, 13 Mar 89 17:32:27 -0700
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8903140032.AA02645@defun.utah.edu>
To: x3j13@sail.stanford.edu
Reply-To: cl-compiler@sail.stanford.edu
Subject: summary of active cl-compiler issues
Here is a list of all the active cl-compiler issues. Writeups for
all of these were mailed out earlier today.
CLOS-MACRO-COMPILATION (**DRAFT** version 2)
Clarify compile-time behavior of CLOS defining macros.
Proposal MINIMAL
Proposal NOT-SO-MINIMAL
(Still under active discussion.)
COMPILE-ENVIRONMENT-CONSISTENCY (version 4)
What kinds of things can/must the compiler "wire in" to the code
it compiles?
Proposal CLARIFY
COMPILE-FILE-SYMBOL-HANDLING (version 2)
How does COMPILE-FILE tell LOAD what package to put symbols in?
Proposal CURRENT-PACKAGE
Proposal HOME-PACKAGE
Proposal REQUIRE-CONSISTENCY
COMPILED-FUNCTION-REQUIREMENTS (version 4)
What does the COMPILED-FUNCTION type imply? Do COMPILE and
COMPILE-FILE construct COMPILED-FUNCTIONs?
Proposal TIGHTEN
Proposal TIGHTEN-COMPILE
COMPILER-DIAGNOSTICS (version 9)
Clarify status and handling of errors and warnings signalled during
compilation.
Proposal USE-HANDLER
COMPILER-LET-CONFUSION (version 7)
The description of COMPILER-LET in CLtL is broken -- should we fix
it or eliminate it entirely?
Proposal REPAIR
Proposal ELIMINATE
COMPILER-VERBOSITY (version 6)
Mechanisms for controlling progress messages issued by the compiler.
Proposal LIKE-LOAD
CONSTANT-CIRCULAR-COMPILATION (version 7)
Must circular or recursive objects be compiled correctly? Must the
compiler preserve sharing of substructures?
Proposal NO
Proposal PRESERVE-SHARING-ONLY
Proposal YES
(Expect amendment to change error terminology.)
CONSTANT-COLLAPSING (version 5)
Should the compiler be allowed to "collapse" or coalesce constants
that satisfy a more general equivalence relationship than EQUAL?
Proposal GENERALIZE
CONSTANT-COMPILABLE-TYPES (version 8)
What types of objects can appear as quoted or self-evaluating constants
in compiled code?
Proposal SPECIFY
(Expect amendments to change requirements for functions.)
DEFCONSTANT-NOT-WIRED (**DRAFT** version 6)
How do you delcare a variable to be constant without giving the
compiler permission to make assumptions about its value?
(None of the proposals are ready to be voted on. This issue
is being distributed only for informational purposes.)
DEFINE-OPTIMIZER (version 5)
Provide a macro-like way of specifying source-level optimizations
on function calls.
Proposal NEW-FACILITY
DEFINING-MACROS-NON-TOP-LEVEL (version 8)
Are defining macros such as DEFUN meaningful in non-top-level locations?
Proposal ALLOW
EVAL-WHEN-NON-TOP-LEVEL (version 6)
What does EVAL-WHEN mean when it appears in non-top-level locations?
Proposal GENERALIZE-EVAL
Proposal GENERALIZE-EVAL-NEW-KEYWORDS
LOAD-TIME-EVAL (version 11)
Add a new special form, LOAD-TIME-VALUE.
Proposal R**2-NEW-SPECIAL-FORM
Proposal R**3-NEW-SPECIAL-FORM
(Proposal R**2-NEW-SPECIAL-FORM was approved at the January meeting,
but some additional suggestions were made after the meeting.)
MACRO-CACHING (version 2)
Is it legitimate to cache macro expansions?
Proposal DISALLOW
Proposal RESTRICT
MACRO-ENVIRONMENT-EXTENT (**DRAFT** version 3)
Do environment objects received as the &ENVIRONMENT argument to a
macro have dynamic or indefinite extent?
Proposal INDEFINITE
Proposal DYNAMIC
Proposal DYNAMIC-WITH-COPIER
(Still under active discussion.)
PROCLAIM-ETC-IN-COMPILE-FILE (**DRAFT** version 4)
Are top-level calls to PROCLAIM handled specially by the compiler?
Proposal YES
Proposal NO
Proposal NEW-MACRO
(New rewrite.)
QUOTE-SEMANTICS (version 2) (replaces QUOTE-MAY-COPY)
May COMPILE and EVAL construct equivalent copies of quoted or
self-evaluating constants, or must constants share structure with
the source code for the program? Do the constraints on what objects
are valid constants also apply to COMPILE and EVAL, or only to
COMPILE-FILE?
Proposal NO-COPYING
Proposal COPYING-ALLOWED-BUT-NO-CONSTRAINTS
Proposal SAME-AS-COMPILE-FILE
SAFE-CODE (version 1)
What does the "safe code" mean?
Proposal SAFETY-3
SYNTACTIC-ENVIRONMENT-ACCESS (**DRAFT** version 4)
Provide accessors and constructors for lexical environment objects.
Proposal SMALL
Proposal MEDIUM
Proposal LARGE
(New rewrite.)
WITH-COMPILATION-UNIT (version 3)
Provide a way to compile a group of files as a unit for the purposes
of error messages.
Proposal NEW-MACRO
∂13-Mar-89 1643 X3J13-mailer issue COMPILER-LET-CONFUSION, version 7
Received: from Think.COM by SAIL.Stanford.EDU with TCP; 13 Mar 89 16:43:27 PST
Return-Path: <barmar@Think.COM>
Received: from OCCAM.THINK.COM by Think.COM; Mon, 13 Mar 89 19:39:46 EST
Date: Mon, 13 Mar 89 19:41 EST
From: Barry Margolin <barmar@Think.COM>
Subject: issue COMPILER-LET-CONFUSION, version 7
To: cl-compiler@sail.stanford.edu
Cc: x3j13@sail.stanford.edu
In-Reply-To: <8903132314.AA02546@defun.utah.edu>
Message-Id: <19890314004109.1.BARMAR@OCCAM.THINK.COM>
Date: Mon, 13 Mar 89 16:14:26 -0700
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
In interpreters which do not do a semantic-prepass, it is necessary
to fully macroexpand the body. Assuming the presence of a
SYSTEM::MACROEXPAND-ALL primitive, the definition of COMPILER-LET
could look like:
(DEFMACRO COMPILER-LET (BINDINGS &BODY FORMS &ENVIRONMENT ENV)
(SETQ BINDINGS ;; Assure no non-atom bindings
(MAPCAR #'(LAMBDA (BINDING)
(IF (ATOM BINDING) (LIST BINDING) BINDING))
BINDINGS))
(PROGV (MAPCAR #'CAR BINDINGS)
(MAPCAR #'CDR BINDINGS)
(SYSTEM::MACROEXPAND-ALL `(PROGN ,@FORMS) ENV)))
Modulo some bugs in the code. Shouldn't the second-to-last line be:
(MAPCAR #'(LAMBDA (BINDING)
(eval (CaDR BINDING)))
BINDINGS)
(my additions are in lowercase)?
barmar
∂14-Mar-89 0859 @Score.Stanford.EDU:chandler@polya.Stanford.EDU Faculty Meeting
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 14 Mar 89 08:59:05 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Tue 14 Mar 89 08:56:34-PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA24539; Tue, 14 Mar 89 08:56:40 -0800
Date: Tue, 14 Mar 1989 8:56:38 PST
From: "Joyce R. Chandler" <chandler@polya.stanford.edu>
To: ac@score
Subject: Faculty Meeting
Message-Id: <CMM.0.87.605897798.chandler@polya.stanford.edu>
Since we have a very long agenda for today's faculty meeting we will begin
PROMPTLY at 2:30.
∂14-Mar-89 0911 aaai@sumex-aim.stanford.edu Reminder/Council Mtg
Received: from sumex-aim.stanford.edu by SAIL.Stanford.EDU with TCP; 14 Mar 89 09:11:38 PST
Received: by sumex-aim.stanford.edu (4.0/inc-1.0)
id AA10748; Tue, 14 Mar 89 09:04:18 PST
Date: Tue, 14 Mar 1989 9:04:17 PST
From: AAAI <aaai@sumex-aim.stanford.edu>
To: officers:;@sumex-aim.stanford.edu
Cc: aaai@sumex-aim.stanford.edu
Subject: Reminder/Council Mtg
Message-Id: <CMM.0.88.605898257.aaai@sumex-aim.stanford.edu>
{
For those who have not responded yet, could ~you please inform me of your
attention to attend the Council meeting, Thursday, March 30, at 1:30 pm
in room 220 in M Jacks Hall, SU.
Thanks,
Claudia
∂14-Mar-89 0938 CL-Compiler-mailer issue COMPILER-LET-CONFUSION, version 7
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 14 Mar 89 09:37:46 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 556615; Tue 14-Mar-89 12:35:04 EST
Date: Tue, 14 Mar 89 12:35 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: issue COMPILER-LET-CONFUSION, version 7
To: cl-compiler@sail.stanford.edu
cc: x3j13@sail.stanford.edu
In-Reply-To: <8903132314.AA02546@defun.utah.edu>
Message-ID: <19890314173505.3.MOON@EUPHRATES.SCRC.Symbolics.COM>
I generally favor the COMPILER-LET-CONFUSION:REPAIR proposal, however
I have a couple of comments and questions. Also of course I would want
to see the typo that BarMar found fixed.
What is the interaction between proposals COMPILER-LET-CONFUSION
and DEFINE-OPTIMIZER? Neither proposal says anything about that
as far as I can see. I believe the body of a optimizer must be
executed in the same dynamic environment as the body of a macro.
Cost to Implementors:
In interpreters which do not do a semantic-prepass, it is necessary
to fully macroexpand the body.
This is not true. A possible implementation technique for such
interpreters, in fact the one I would use, is to save the COMPILER-LET
bindings in a slot in the interpreter's lexical environment in the form
of an alist, and to make the MACROEXPAND-1 function bind those bindings
with PROGV around its call to the macroexpander. Using this technique
instead of fully macroexpanding the body deals with some of the
objections to the REPAIR proposal, I believe. Also promoting this
technique in the proposal would remove the need for the discussion
section to address the side-issue of whether code analyzing programs can
or cannot be written portably (an important issue in its own right, but
not part this one).
Current Practice:
Some implementations have implemented the description in CLtL.
Users of those implementations (quite reasonably) can't figure how to
use COMPILER-LET and so don't use it much.
Some implementations (the ones from which COMPILER-LET originally came)
continue to use their pre-CLtL semantics. These semantics are useful, though
incompatible with CLtL (which they largely consider to simply be in error).
Could you be more explicit about this? I was unable to figure out what you
are talking about, even after twice reading the introductory portion of the
proposal and the writeup in CLtL. I believe Symbolics Genera is one of those
implementations from which COMPILER-LET originally came and at the same time
implements COMPILER-LET exactly as CLtL specifies, so I must be missing some
important distinction. I'd like to see a precise description of these two
competing semantics and I'd also like to know which, if either, of them is
compatible with the REPAIR proposal.
∂14-Mar-89 0956 CL-Compiler-mailer issue DEFINE-OPTIMIZER, version 5
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 14 Mar 89 09:56:35 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 556621; Tue 14-Mar-89 12:54:02 EST
Date: Tue, 14 Mar 89 12:54 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: issue DEFINE-OPTIMIZER, version 5
To: cl-compiler@sail.stanford.edu
cc: x3j13@sail.stanford.edu
In-Reply-To: <8903132331.AA02562@defun.utah.edu>
Message-ID: <19890314175403.4.MOON@EUPHRATES.SCRC.Symbolics.COM>
I generally like DEFINE-OPTIMIZER:NEW-FACILITY, but I would like
to suggest a couple of changes.
I'm not a fan of documentation strings, but shouldn't DEFINE-OPTIMIZER
allow them? Was their omission accidental or intentional?
Instead of returning two values from the body, I suggest returning one
value, or NIL to decline to optimize. If an optimizer wishes to
optimize into a form whose result is NIL, it should return (QUOTE NIL).
After all, if it wishes to optimize into a form whose result is FOO, it
has to return (QUOTE FOO), not FOO. The two values returned by
OPTIMIZE-EXPRESSION-1 are okay, since they are compatible with the two
values returned by MACROEXPAND-1. A reasonable alternative would be to
eliminate the two values at all levels, and also eliminate the special
casing of NIL, and simply specify that one declines to optimize by
returning the original form (compared with EQ). This will work but is
slightly more awkward for the optimizer writer, since &WHOLE would
have to be used. I'd accept this alternative if more people are in
favor of it, but I prefer special-casing NIL. I'd greatly prefer either
of those alternatives over what the proposal says now.
It isn't made clear whether OPTIMIZE-EXPRESSION returns one value
or two. It should be consistent with OPTIMIZE-EXPRESSION-1.
Using FLET and MACROLET shadow...
I assume it was only accidental that LABELS, GENERIC-LABELS, and
GENERIC-FLET were omitted from this list. I am unable to figure
out whether WITH-ADDED-METHODS should be included in this list
or not; I suspect not.
The similar Symbolics Genera facility allows more than one optimizer
to be defined for a given function; the optimizers are invoked in
unspecified order until one succeeds. This feature is actually
used, however I think it is okay to leave it out.
I agree with Barrett's comments quoted in the discussion section.
I'd like to see the proposal amended the way he suggests.
∂14-Mar-89 1005 CL-Compiler-mailer issue WITH-COMPILATION-UNIT, version 3
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 14 Mar 89 10:05:29 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 556623; Tue 14-Mar-89 13:03:02 EST
Date: Tue, 14 Mar 89 13:03 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: issue WITH-COMPILATION-UNIT, version 3
To: cl-compiler@sail.stanford.edu
cc: x3j13@sail.stanford.edu
In-Reply-To: <8903140025.AA02634@defun.utah.edu>
Message-ID: <19890314180303.5.MOON@EUPHRATES.SCRC.Symbolics.COM>
I oppose this because I don't think it's finished, however I expect I
would support it if it were finished. It may be that the amount of work
required to finish this is small and the proposal just needs amending.
I don't think it's acceptable to have something like this if its effect
is only defined for warnings, and its effect on compile-time
proclamations, compile-time macro definitions, compile-time defconstant
definitions, compile-time optimizer definitions, compile-time type
definitions, compile-time setf definitions, and compile-time CLOS
definitions is left unspecified.
I think lumping COMPILE and COMPILE-FILE together here reflects
confusion. COMPILE and COMPILE-FILE have very little to do with each
other, and I think it's clear that COMPILE should not be affected in any
way by WITH-COMPILATION-UNIT. Having COMPILE affected by
WITH-COMPILATION-UNIT is as unreasonable as having MACROEXPAND affected
by WITH-COMPILATION-UNIT, if you ask me. I think removing COMPILE would
address Barrett's complaint in the discussion section; that is, I think
having COMPILE-FILE not override an enclosing WITH-COMPILATION-UNIT is
correct.
∂14-Mar-89 1217 CL-Compiler-mailer **DRAFT** issue MACRO-ENVIRONMENT-EXTENT, version 3
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 14 Mar 89 12:17:12 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 556715; Tue 14-Mar-89 15:09:52 EST
Date: Tue, 14 Mar 89 15:09 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: **DRAFT** issue MACRO-ENVIRONMENT-EXTENT, version 3
To: cl-compiler@sail.stanford.edu
cc: x3j13@sail.stanford.edu
In-Reply-To: <8903132355.AA02585@defun.utah.edu>
Message-ID: <19890314200952.9.MOON@EUPHRATES.SCRC.Symbolics.COM>
I strongly favor MACRO-ENVIRONMENT-EXTENT:DYNAMIC over any of the other four.
∂14-Mar-89 1232 CL-Compiler-mailer **DRAFT** issue PROCLAIM-ETC-IN-COMPILE-FILE (version 4)
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 14 Mar 89 12:32:34 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 556743; Tue 14-Mar-89 15:29:24 EST
Date: Tue, 14 Mar 89 15:29 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: **DRAFT** issue PROCLAIM-ETC-IN-COMPILE-FILE (version 4)
To: cl-compiler@sail.stanford.edu
cc: x3j13@sail.stanford.edu
In-Reply-To: <8903140008.AA02608@defun.utah.edu>
Message-ID: <19890314202917.0.MOON@EUPHRATES.SCRC.Symbolics.COM>
I favor PROCLAIM-ETC-IN-COMPILE-FILE:NEW-MACRO, primarily because this
allows programs to be clear about the scope of the proclamation:
whether they are making a proclamation for purposes of compile-file or
to affect the running Lisp. If you call the macro at top-level, you're
clearly doing it for compilation. If you call the function at any level,
you're clearly doing it with global scope.
In PROCLAIM-ETC-IN-COMPILE-FILE:NO there is no way to say whether a
PROCLAIM inside an (EVAL-WHEN (COMPILE...) ...) is intended to persist
after the compilation is over, which is just about the only reason
why I prefer PROCLAIM-ETC-IN-COMPILE-FILE:NEW-MACRO over :NO.
I'd like PROCLAIM-ETC-IN-COMPILE-FILE:NO better if it also proposed
to add an optional argument to PROCLAIM that expressed the intended
scope of the proclamation. I'd suggest NIL (the default) for the
global scope and the symbol COMPILE-FILE to limit it to the compilation.
Given this, users who liked DEFPROCLAIM could trivially write it
themselves.
The only thing PROCLAIM-ETC-IN-COMPILE-FILE:YES has going for it is
that it's the status quo, in a subset of implementations. I don't like it.
I agree with Barrett's comments quoted in the discussion section.
The proposal says:
As with other defining macros, it is
unspecified whether or not the compile-time side-effects of a
DEFPROCLAIM persist after the file has been compiled.
but never says this about PROCLAIM. In all three proposals,
this needs to be said about PROCLAIM. But as you can see from my
comments above, I would rather that we did not leave this unspecified.
The proposal says:
Current Practice:
The Symbolics compiler has special top-level handling for PROCLAIM,
although the details are not clear.
I'm not sure what you thought was not clear. Symbolics Genera does the
same thing that the current practice section says IIM does. In addition
(and I couldn't tell whether IIM does this too or not), the scope of the
PROCLAIM is only the compilation-unit if the PROCLAIM appears at
top-level, but is global and persists forever if the PROCLAIM appears in
an (EVAL-WHEN (COMPILE...) ...). We might change that.
∂14-Mar-89 1310 CL-Compiler-mailer issue DEFINING-MACROS-NON-TOP-LEVEL, version 8
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 14 Mar 89 13:09:32 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 556774; Tue 14-Mar-89 15:58:28 EST
Date: Tue, 14 Mar 89 15:58 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: issue DEFINING-MACROS-NON-TOP-LEVEL, version 8
To: cl-compiler@sail.stanford.edu
cc: x3j13@sail.stanford.edu
In-Reply-To: <8903132333.AA02565@defun.utah.edu>
Message-ID: <19890314205826.2.MOON@EUPHRATES.SCRC.Symbolics.COM>
I favor DEFINING-MACROS-NON-TOP-LEVEL:ALLOW except for one thing.
This sentence appears in the proposal but does not appear to have
any relation to the main issue:
The order in which
non-top-level subforms of a top-level form are processed by the
compiler is explicitly left unspecified.
I can't figure out what this means and the example in the rationale
section that purports to explain this does not shed any light, since in
the example there is no change of order of evaluation. I wouldn't be
surprised if I opposed this if I did understand what it means. Can we
deal with this as a separate issue? In fact the whole point (3) of the
proposal should be moved. That issue should also discuss whether there
are any constraints on whether one top-level form is processed before
the next top-level form is read, in case the one form changes package,
changes readtable, defines a read-syntax, or defines a structure used in
#S read-syntax.
Also, when you say:
Clarify
that all defining macros which create functional objects (including
DEFMACRO, DEFTYPE, DEFINE-SETF-METHOD, and the complex form of
DEFSETF, as well as DEFUN) must ensure that those functions are
defined in the lexical environment in which the defining form is
evaluated.
I strongly believe that MACROLET must be consistent with this, which
would be a change. Has that been dealt with as a separate issue? If
not, it should either be added to this issue or brought up as a
separate issue, with the interdependency noted in both writeups to
minimize the chance of an inconsistent vote.
∂14-Mar-89 1326 CL-Compiler-mailer issue COMPILE-FILE-SYMBOL-HANDLING, version 2
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 14 Mar 89 13:25:58 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 556792; Tue 14-Mar-89 16:23:12 EST
Date: Tue, 14 Mar 89 16:23 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: issue COMPILE-FILE-SYMBOL-HANDLING, version 2
To: cl-compiler@sail.stanford.edu
cc: x3j13@sail.stanford.edu
In-Reply-To: <8903132312.AA02542@defun.utah.edu>
Message-ID: <19890314212313.3.MOON@EUPHRATES.SCRC.Symbolics.COM>
I favor COMPILE-FILE-SYMBOL-HANDLING:CURRENT-PACKAGE.
COMPILE-FILE-SYMBOL-HANDLING:HOME-PACKAGE seems superficially simpler,
but my experience when we tried it at MIT indicates that it does not
work very well. Too often a symbol that had been moved from one package
to another, or had its export status changed, would be silently moved
back to its original package by loading a file. I sort-of agree with
JonL's comment at the end of the discussion section: if we can't agree
on one solution to his issue, I think that in practice there would be
little harm to portable programs if we left it unspecified. The issue
really affects development environments much more than it affects the
language in which portable programs are written, although it does have
some effect on that as well.
∂14-Mar-89 1340 CL-Compiler-mailer issue COMPILE-ENVIRONMENT-CONSISTENCY, version 4
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 14 Mar 89 13:40:33 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via INTERNET with SMTP id 556802; 14 Mar 89 16:37:50 EST
Date: Tue, 14 Mar 89 16:37 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: issue COMPILE-ENVIRONMENT-CONSISTENCY, version 4
To: cl-compiler@sail.stanford.edu
cc: x3j13@sail.stanford.edu
In-Reply-To: <8903132250.AA02499@defun.utah.edu>
Message-ID: <19890314213750.4.MOON@EUPHRATES.SCRC.Symbolics.COM>
All the things I didn't like in version 3 have been fixed.
I would favor COMPILE-ENVIRONMENT-CONSISTENCY:CLARIFY if one change
were made. The proposal says:
Except where some other behavior is explicitly stated, when
the compiletime and runtime definitions are different, it is
unspecified which will prevail within the compiled code.
This means that either the compiletime or the runtime definition
will prevail, but nothing else can happen. It must also be
permissible to signal an error complaining about the discrepancy.
∂14-Mar-89 1351 CL-Compiler-mailer issue SAFE-CODE, version 1
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 14 Mar 89 13:51:31 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 556829; Tue 14-Mar-89 16:49:05 EST
Date: Tue, 14 Mar 89 16:49 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: issue SAFE-CODE, version 1
To: cl-compiler@sail.stanford.edu
cc: x3j13@sail.stanford.edu
In-Reply-To: <8903131726.AA02193@defun.utah.edu>
Message-ID: <19890314214907.7.MOON@EUPHRATES.SCRC.Symbolics.COM>
I agree with SAFE-CODE:SAFETY-3.
I disagree with the usage (in the examples) of "unsafe code" to mean
"all code where the OPTIMIZE quality of SAFETY is not 3." I believe
that "unsafe code" should mean code that is actually unsafe, not code
that an implementation is permitted to treat as unsafe if it wishes. I
believe there should be no portable way to write unsafe code. This is
only a matter of wording. If we need a shorter term for "all code where
the OPTIMIZE quality of SAFETY is not 3" I would suggest "potentially
unsafe code."
∂14-Mar-89 1357 CL-Compiler-mailer issue COMPILER-VERBOSITY, version 6
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 14 Mar 89 13:56:56 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 556842; Tue 14-Mar-89 16:54:22 EST
Date: Tue, 14 Mar 89 16:54 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: issue COMPILER-VERBOSITY, version 6
To: cl-compiler@sail.stanford.edu
cc: x3j13@sail.stanford.edu
In-Reply-To: <8903131546.AA02078@defun.utah.edu>
Message-ID: <19890314215423.8.MOON@EUPHRATES.SCRC.Symbolics.COM>
I like COMPILER-VERBOSITY:LIKE-LOAD. This fixes all of the
problems I had with the version 5 proposal.
Like BarMar, I question the need for either of :PRINT and :VERBOSE in
either of LOAD and COMPILE-FILE. But that might be my own cultural
bias, due to the type of systems I use, where it's easy to see what's
going on inside. If other people claim they need these, I'll believe
them.
∂14-Mar-89 1419 X3J13-mailer Issue: ERROR-NOT-HANDLED (Version 1)
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 14 Mar 89 14:19:42 PST
Received: from Semillon.ms by ArpaGateway.ms ; 14 MAR 89 14:03:50 PST
Date: 14 Mar 89 14:02 PST
From: masinter.pa@Xerox.COM
to: X3J13@sail.stanford.edu
Subject: Issue: ERROR-NOT-HANDLED (Version 1)
reply-to: cl-cleanup@sail.stanford.edu
line-fold: NO
Message-ID: <890314-140350-1917@Xerox>
Cleanup issues for the next meeting will be tricking out over the next
week.
This issue was distributed prior to the October 1988 meeting,
but not voted on.
!
Issue: ERROR-NOT-HANDLED
References: Interactive Condition Handling (Condition System, Rev 18, p19)
Category: CLARIFICATION/CHANGE
Edit history: 25-Sep-88, Version 1 by Pitman
Problem Description:
For delivery purposes, some implementations will want to leave out
major sections of runtime support in programs that do not require
them. The debugger is one such section.
However, since ERROR may be called implicitly by a number of Common
Lisp built-in functions, and since the condition system as currently
described insists that the interactive debugger be entered if a
condition is unhandled, the interactive debugger must be retained in
a saved image of any program that might signal an error unless the
compiler can prove that the error will never go unhandled. This
may be undesirable in some cases and may cause unnecessary bloating
of the saved image.
Proposal (ERROR-NOT-HANDLED:PERMIT-TERMINATION):
Permit implementors to designate an implementation-specific mechanism
for asking that unhandled errors cause `termination of the running
program' rather than entry into the system's debugger.
Implementations choosing to offer such a facility must clearly define
the nature and scope of such program termination, since the concept
of `program termination' is an ill-defined concept in present-day
Common Lisp.
Even when program termination rather than debugger entry would be
the ultimate effect of an unhandled error, the value of
*DEBUGGER-HOOK* (if non-NIL) must be called to provide programmers
the ability of customized debugging.
All implementations must at least provide the option of a system
debugger for use in program development.
Test Case:
(ERROR "Foo"), if unhandled, must now enter the debugger.
Under this proposal, it might also `terminate program execution'
in implementations which choose to provide such a facility and to
clearly define that concept.
Rationale:
Although technically an incompatible change, we're dealing at
the very edge of what the user can expect from the system. Once
an error is signalled and not handled, we're in the domain of
implementation-dependent effect anyway.
Current Practice:
Probably no one does this yet.
Cost to Implementors:
None. This change is upward compatible with existing implementations.
Cost to Users:
None.
Cost of Non-Adoption:
Saved Lisp images might be forced to be gratuitously larger than
they need to be in some implementations.
Benefits:
Addressing this issue will make Lisp more able to compete with
other languages which permit small saved images to result from
small user programs.
Aesthetics:
No significant impact.
Discussion:
This change was requested by Christian Queinnec of France
(queinnec@inria.inria.fr). Pitman supports the change.
∂14-Mar-89 1438 CL-Compiler-mailer issue COMPILER-DIAGNOSTICS, version 9
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 14 Mar 89 14:38:21 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 556909; Tue 14-Mar-89 17:35:56 EST
Date: Tue, 14 Mar 89 17:35 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: issue COMPILER-DIAGNOSTICS, version 9
To: cl-compiler@sail.stanford.edu
cc: x3j13@sail.stanford.edu
In-Reply-To: <8903131545.AA02075@defun.utah.edu>
Message-ID: <19890314223550.1.MOON@EUPHRATES.SCRC.Symbolics.COM>
I favor COMPILER-DIAGNOSTICS:USE-HANDLER, but there are two
things that I think need to be changed:
Conditions of type WARNING may be signalled by the compiler in
situations where ... the compiler can determine
that a situation that "is an error" would result at runtime.
We don't use the term "is an error" any more, do we? In the old
CLtL terms, I think both "is an error" and "signals an error"
situations would justify a warning. I think this part should
be updated to the new error terminology and also should state that
all error situations justify warnings. Of course explicit calls
to the function ERROR don't justify warnings; I don't know whether
the proposal can be phrased in such a way as to make that clear,
or whether it will have to be left to common sense.
(3) Require COMPILE and COMPILE-FILE to handle the ABORT restart by
aborting the smallest feasible part of the compilation.
I think this is wrong. The only documentation of the ABORT restart
that I could find says
The purpose of the ABORT restart is generally to allow return to the
innermost ``command level.''
I agree with this, and I believe it means that it is wrong for any
function other than one that establishes a read-eval-print loop or
a command-level to establish an ABORT restart. It would be useful
to have some restart that aborts a portion of the compilation, but
it should be given some other name.
∂14-Mar-89 1505 CL-Cleanup-mailer Issue: ERROR-NOT-HANDLED (Version 1)
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 14 Mar 89 15:04:58 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 556941; Tue 14-Mar-89 18:02:30 EST
Date: Tue, 14 Mar 89 18:02 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: Issue: ERROR-NOT-HANDLED (Version 1)
To: cl-cleanup@sail.stanford.edu
cc: X3J13@sail.stanford.edu
In-Reply-To: <890314-140350-1917@Xerox>
Message-ID: <19890314230224.2.MOON@EUPHRATES.SCRC.Symbolics.COM>
ERROR-NOT-HANDLED:PERMIT-TERMINATION is okay with me. I would
also support a proposal to replace "the condition system as currently
described insists that the interactive debugger be entered if a
condition is unhandled" with wording that allowed implementations
to do whatever they want, with perhaps an implementation note that
many implementations prefer an interactive debugger.
∂14-Mar-89 1544 CL-Compiler-mailer **DRAFT** issue SYNTACTIC-ENVIRONMENT-ACCESS (version 4)
Received: from YUKON.SCRC.Symbolics.COM (SCRC-YUKON.ARPA) by SAIL.Stanford.EDU with TCP; 14 Mar 89 15:44:06 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by YUKON.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 438041; Tue 14-Mar-89 18:42:58 EST
Date: Tue, 14 Mar 89 18:41 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: **DRAFT** issue SYNTACTIC-ENVIRONMENT-ACCESS (version 4)
To: cl-compiler@sail.stanford.edu
cc: x3j13@sail.stanford.edu
In-Reply-To: <8903140019.AA02631@defun.utah.edu>
Message-ID: <19890314234118.3.MOON@EUPHRATES.SCRC.Symbolics.COM>
This looks good so far. A few comments that might help you
along with the draft:
VARIABLE-KIND should return the same second value that FUNCTION-KIND
returns.
It's a good idea to avoid the ambiguous word "may" and say "might",
"must", or "is permitted to".
I would assume that VARIABLE-TYPE is not required to return the
exact declared type specifier, but could return another type
specifier that is equivalent, or possibly another type specifier
that is a supertype. An implementation that canonicalizes type
declarations would do this. For example, if A was declared
(INTEGER 0 4999), VARIABLE-TYPE might return that list, another
list that was EQUAL to it but not EQ, the list (INTEGER (-1) (5000)),
the symbol FIXNUM, or perhaps something else. Similarly OR's and
AND's might be reduced to simpler type specifiers in an implementation
dependent way. If, on the other hand, VARIABLE-TYPE is not permitted
to do this, but must return the exact type specifier used in the
declaration, that would be okay, but should be stated explicitly.
Similar comments apply to FUNCTION-FTYPE of course.
I assume AUGMENT-ENVIRONMENT is permitted to share structure with
its env argument, although the proposal says "a copy of ENV".
The :MACRO argument to AUGMENT-ENVIRONMENT shouldn't look like the CADR
of a MACROLET special form, instead it should be a list of lists (name
function). That is, the expander functions should be supplied in the
form of functions rather than in the form of the source text used by
MACROLET. Your rationale argues against this but I strongly believe
that the rationale is wrong. I wouldn't mind seeing the parsing portion
of MACROLET made available as a separate function.
No way is provided to retrieve declarations other than SPECIAL, TYPE,
FTYPE, and LEXICAL (if PROCLAIM-LEXICAL passes). I think all
declarations should be retrievable, but OPTIMIZE declarations seem
particularly useful to retrieve in macros or optimizers that expand into
different code depending on the safety level or the speed/space
tradeoff. The irregular structure of declarations makes retrieving
them a bit complex, but here's my suggestion:
DECLARATION decl-type name &optional env [Function]
decl-type is a symbol. The interpretation of name depends
on decl-type. If a declaration of that type and name is
in force in the specified environment, it is returned, otherwise
NIL is returned. The following decl-types are specified,
additional implementation-dependent types could be added:
INLINE function-name => T or NIL
NOTINLINE function-name => T or NIL
IGNORE variable-name => T or NIL
OPTIMIZE quality => integer
DECLARATION decl-type => T or NIL
The possible interpreter implementation of COMPILER-LET I mentioned
in another message earlier today would seem to require another
keyword argument to AUGMENT-ENVIRONMENT. Does this mean that we
have to dictate some particular interpreter implementation of
COMPILER-LET? I'm unsure.
Symbolics Genera includes an undocumented internal macro, used
quite a bit in the implementation of the interpreter and code
analyzers, that could have been called WITH-AUGMENTED-ENVIRONMENT,
taking keywords like AUGMENT-ENVIRONMENT and also body forms,
and producing an environment with dynamic extent bound to a
variable within the body forms. Would it be useful to have this
too, or instead of AUGMENT-ENVIRONMENT? I'm unsure.
On SYNTACTIC-ENVIRONMENT-ACCESS:MEDIUM, my feeling today is that
this should be left out for now, even though I think we will want
something like it later, at the same time that CLOS metaobjects
go in.
Ditto for SYNTACTIC-ENVIRONMENT-ACCESS:LARGE.
∂14-Mar-89 1555 X3J13-mailer LETTER BALLOT -- Sun Microsystems
Received: from Sun.COM by SAIL.Stanford.EDU with TCP; 14 Mar 89 15:55:09 PST
Received: from snail.Sun.COM (snail.Corp.Sun.COM) by Sun.COM (4.1/SMI-4.0)
id AA21551; Tue, 14 Mar 89 15:16:32 PST
Received: from clam.sun.com by snail.Sun.COM (4.1/SMI-4.0)
id AA11449; Tue, 14 Mar 89 15:12:40 PST
Received: by clam.sun.com (4.0/SMI-4.0)
id AA26931; Tue, 14 Mar 89 15:16:13 PST
Date: Tue, 14 Mar 89 15:16:13 PST
From: cperdue@Sun.COM (Cris Perdue)
Message-Id: <8903142316.AA26931@clam.sun.com>
To: chapman%aitg.DEC@decwrl.dec.com
Subject: LETTER BALLOT -- Sun Microsystems
Cc: kempf%clam@Sun.COM, peck%clam@Sun.COM, sgadol%clam@Sun.COM,
x3j13@sail.stanford.edu
This is the Sun Microsystems vote.
________________________________________________________________________
Issue or section name | Version | Y | I | A |
------------------------------------------------------------------------
CUT-OFF-DATES | 4 | | I | |
------------------------------------------------------------------------
ERROR-TERMINOLOGY | 5 | | I | |
------------------------------------------------------------------------
FONTS | 2 | Y | | |
------------------------------------------------------------------------
TOC | 1 | Y | | |
------------------------------------------------------------------------
Section 1.8 | 5.8 | Y | | |
------------------------------------------------------------------------
Section 2.3 | 5.8 | Y | | |
------------------------------------------------------------------------
Section 2.4 | 5.8 | Y | | |
------------------------------------------------------------------------
Section 2.5 | 5.8 | | | A |
------------------------------------------------------------------------
Section 6.1 | 5.8 | | I | |
------------------------------------------------------------------------
Overall, I'm impressed with the work that has been done on
writing the standard, but not entirely comfortable with the process
I can see for getting from where we are to an actual standard.
CUT-OFF-DATES
I have both general and specific comments about the CUT-OFF-DATES
proposal. The general comments first:
The cutoff dates question causes me some discomfort, and I think
that is because the proposal is not as explicit as it might be.
First, how about stating what the goal for 12/89 is? E.g. a
draft standard approved by X3J13 and ready for release and
outside comments.
Second, as I understand it, the "final changes" dates are for
final changes from the selected reviewers for each section of
the standard, though this is not stated.
The process, as I understand it, is that a set of reviewers will
read each section (or set of tool descriptions) carefully and
submit corrections, etc.. The full committee will then vote on
these.
A proper review will need to be done by subject rather than by sections
of the alphabet. In fact at least one person at Sun has volunteered to
work on a particular subject. Note that Moon expects Symbolics
internal reviewers to do likewise. To me that implies the catalog of
tools must be voted on by subject rather than alphabetically, so I
recommend reorganizing those cutoff dates and votes by subject.
Moon suggests that it will take "several months" for Symbolics
to review the draft standard, and that the availability of
the cleanup process will be important for fixing problems
in the statement of the draft standard. I second this.
Being active in the compiler committee, I feel confident that a
well-constructed section on compilation will *not* be ready by
4/22/89. We need to bring the compiler work to a conclusion as close
to that date as we can, though, even if all is not perfect. The full
committee needs to help make this happen. (Thanks especially to David
Moon for his recent input.)
ERROR-TERMINOLOGY
The error terminology is OK, except for "consequences
are unspecified". That concept is broken, though it
has serious defenders. For example, Dick Gabriel says,
"If we were to drop this term, then every time we are
``explicitly vague'' a valid possibility is that a fatal
error can occur. How is it any better to say that what happens
when some operation happens is ``explicitly vague''."
A typical area of "explicit vagueness" is the destructive operations
on lists. The explicit vagueness here is quite limited. For
some operations any top level cell of certain lists may or may
not be modified. Similar statements apply to other operations.
The consequences are far from being unspecified but harmless.
They are CONSTRAINED but meaningful.
In other situations we may say that order of certain actions
is unspecified or we may say that a side effect may or may not
occur. (For example, numerical operations may be performed
in any of various orders.) All of these are appropriate ways
to state a specification.
Maybe someone will make me suddenly see the light and I'll realize
how silly I've been, but so far the idea of consequences being
"unspecified but harmless" seems more like a witticism than
a useable idea.
SECTION 6.1
Under "Other Information", many of the terms are actually
type specifiers. Wouldn't it be better to say that if a name
is the same as a type specifier, that argument must satisfy
the type specifier?
arguments to the function -- unclear to me
boolean -- I presume this are to be arguments where
all non-NIL values are *treated* alike.
Note that for macros we truly specify *syntax* (at least
for some, e.g. defstruct. For most functions we actually
give a lambda list.
p6-8, item 2b, the keyword :test-not has been flushed from
the sequence functions.
∂14-Mar-89 1610 X3J13-mailer Re: Issue: UNSOLICITED-MESSAGES
Received: from NSS.Cs.Ucl.AC.UK by SAIL.Stanford.EDU with TCP; 14 Mar 89 16:09:57 PST
Received: from aiai.edinburgh.ac.uk by NSS.Cs.Ucl.AC.UK via Janet with NIFTP
id aa07509; 14 Mar 89 18:01 GMT
Date: Tue, 14 Mar 89 17:58:24 GMT
Message-Id: <8289.8903141758@subnode.aiai.ed.ac.uk>
From: Jeff Dalton <jeff%aiai.edinburgh.ac.uk@NSS.Cs.Ucl.AC.UK>
Subject: Re: Issue: UNSOLICITED-MESSAGES
To: Kent M Pitman <KMP@scrc-stony-brook.arpa>, barmar@think.com
Cc: chapman <@decwrl.dec.com:chapman@aitg.dec>, x3j13@sail.stanford.edu
> Why is this problem unique to Lisp? Is there any wording in the C
> standard that explicitly prohibits malloc() from causing output? I
> doubt it, yet I don't think they find this disturbing.
>
> Maybe it's because C people have traditionally been willing to settle
> for less. :-) Seriously, I think it's a clear hole in their standard.
> People would probably flame if things that weren't documented as doing
> I/O were to suddenly start doing it.
As far as I know, the C standard also doesn't say that assignment
doesn't print out "I'm doing an assignment" or, indeed, that y = 6
doesn't also assign 17 to xyzzy. But does it need to make explicit
prohibitions?
The C standard says "In the abstract machine, all expressions are
evaluated as specified by the semantics." Presumably there is an
implication that it doesn't do random other things.
-- Jeff
∂14-Mar-89 1629 CL-Compiler-mailer issue CONSTANT-COMPILABLE-TYPES, version 8
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 14 Mar 89 16:29:32 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 557038; Tue 14-Mar-89 19:27:03 EST
Date: Tue, 14 Mar 89 19:27 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: issue CONSTANT-COMPILABLE-TYPES, version 8
To: cl-compiler@sail.stanford.edu
cc: x3j13@sail.stanford.edu
In-Reply-To: <8903131612.AA02083@defun.utah.edu>
Message-ID: <19890315002703.4.MOON@EUPHRATES.SCRC.Symbolics.COM>
I apologize in advance for the length of this message.
This is good except for a few typos and the controversial business about
functions. I'd really like to see another round of editing to clean up
these problems before we're asked to vote on this.
I suggest moving everything having to do with functions to a
separate proposal. What's currently in the body of the proposal for
functions does not make any sense to me. I basically agree with the
comments from both Loosemore and Gabriel about this quoted in the
discussion section. However, we need to be careful when we discuss this
to distinguish between a function as a constant in compiled code, and a
form whose result is a function appearing in compiled code. The former
is `(quote ,#'(lambda ...)), the latter is `#'(lambda ...). The meaning
of the latter is clear, of course, and a useful question would be
whether it can fully satisfy the need for functions in compiled code and
eliminate any demand for the former.
I've said this before, but I still think the proposal would be
easier to understand if it explicitly dealt separately with
(1) relation of objects in the input of COMPILE-FILE to corresponding
objects in the result of LOAD of the output of COMPILE-FILE.
(2) relation of two objects in the output of a single COMPILE-FILE.
(3) relation of two objects in the output of two different COMPILE-FILEs.
instead of smushing these together in a fuzzy way. Look at the discussion
of uninterned symbols, for example: I found it incomprehensible.
Typos:
For any object that
appears in a constant, but is not supported by the language as part of
a constant, the behavior of the compiler is unspecified; either the
the compiler and/or loader will handle that constant (in an
implementation-dependent manner) or the compiler will detect the
situation and signal an error.
This says that the behavior of the compiler is unspecified and then
proceeds to specify it!
Because hash keys can be aggregate objects and because we treat hash
tables as unordered sets of <key, value> pairs, similarity of hash
tables is more complex. See under "Hash Tables", below, for the
definition.
I have no idea how this paragraph got into the middle of the discussion
of uninterned symbols.
References to packages are permitted in any constant.
This sentence is redundant, or else it implies that references to some
other types are permitted in some constants but not in other constants,
which I don't think you intended.
At load time, the package becomes the same as returned by
I don't know what it means for a package to "become". I think
this is just fractured syntax, though. See again my suggestion
for distinguishing the three types of similarity, which I think
indicates how to rewrite this sentence to be clear.
Under hash table:
The table's test is unchanged also.
Unchanged from what? I think what this was supposed to say was
that the table's test is a "basic attribute."
Consider a hash table as an unordered set of key and
value pairs. Two hash tables are similar as constants
exactly if there is a one-to-one correspondence between
the key and value pairs of each and a one-to-one
correspondence between the uninterned symbols of each
such that the two keys of each corresponding pair are
similar as constants and the two values are also similar
as constants. The correspondence of uninterned symbols
must be consistent with the correspondence defined for
the entire set of constants in the file.
This paragraph is totally garbled. If you took out the
stuff about uninterned symbols it might make sense.
Structure, Standard-object
<<There is a cl-cleanup issue, LOAD-OBJECTS, pending
which proposes a mechanism for dealing with objects.>>
For structure instances with no method defined at compile
time for MAKE-LOAD-FORM, the slot values and the name of
structure type (a symbol reference) are recorded by the
compiler and reconstructed by the loader.
The text not enclosed in french quotation marks directly contradicts
the LOAD-OBJECTS proposal. It should be removed so we don't have two
proposals trying to talk about the same thing.
This sentence in the discussion section:
The full extension of the concept of coalescing of constants is to say
that they can be coalesced exactly when they are similar as constants.
seems to be in the wrong document, since this issue is not about
coalescing of constants and does not otherwise mention it, except
incidentally in connection with a bug in Coral Lisp.
∂14-Mar-89 1636 CL-Compiler-mailer issue CONSTANT-COMPILABLE-TYPES, version 8
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 14 Mar 89 16:36:44 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 557048; Tue 14-Mar-89 19:34:07 EST
Date: Tue, 14 Mar 89 19:34 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: issue CONSTANT-COMPILABLE-TYPES, version 8
To: cl-compiler@sail.stanford.edu
cc: x3j13@sail.stanford.edu
In-Reply-To: <8903131612.AA02083@defun.utah.edu>
Supersedes: <19890315002703.4.MOON@EUPHRATES.SCRC.Symbolics.COM>
Comments: Fix some typos in the definitions of the three concepts that I claim
should not be smushed together. Cris Perdue pointed out these typos
earlier, but I forgot to fix them before sending the first copy of this
message.
Message-ID: <19890315003408.5.MOON@EUPHRATES.SCRC.Symbolics.COM>
I apologize in advance for the length of this message.
This is good except for a few typos and the controversial business about
functions. I'd really like to see another round of editing to clean up
these problems before we're asked to vote on this.
I suggest moving everything having to do with functions to a
separate proposal. What's currently in the body of the proposal for
functions does not make any sense to me. I basically agree with the
comments from both Loosemore and Gabriel about this quoted in the
discussion section. However, we need to be careful when we discuss this
to distinguish between a function as a constant in compiled code, and a
form whose result is a function appearing in compiled code. The former
is `(quote ,#'(lambda ...)), the latter is `#'(lambda ...). The meaning
of the latter is clear, of course, and a useful question would be
whether it can fully satisfy the need for functions in compiled code and
eliminate any demand for the former.
I've said this before, but I still think the proposal would be
easier to understand if it explicitly dealt separately with
(1) relation of objects in the input of COMPILE-FILE to corresponding
objects in the result of LOAD of the output of COMPILE-FILE.
(2) relation of two objects in the result of LOAD of the output
of a single COMPILE-FILE.
(3) relation of two objects in the result of LOAD of the output
of two different COMPILE-FILEs.
instead of smushing these together in a fuzzy way. Look at the discussion
of uninterned symbols, for example: I found it incomprehensible.
Typos:
For any object that
appears in a constant, but is not supported by the language as part of
a constant, the behavior of the compiler is unspecified; either the
the compiler and/or loader will handle that constant (in an
implementation-dependent manner) or the compiler will detect the
situation and signal an error.
This says that the behavior of the compiler is unspecified and then
proceeds to specify it!
Because hash keys can be aggregate objects and because we treat hash
tables as unordered sets of <key, value> pairs, similarity of hash
tables is more complex. See under "Hash Tables", below, for the
definition.
I have no idea how this paragraph got into the middle of the discussion
of uninterned symbols.
References to packages are permitted in any constant.
This sentence is redundant, or else it implies that references to some
other types are permitted in some constants but not in other constants,
which I don't think you intended.
At load time, the package becomes the same as returned by
I don't know what it means for a package to "become". I think
this is just fractured syntax, though. See again my suggestion
for distinguishing the three types of similarity, which I think
indicates how to rewrite this sentence to be clear.
Under hash table:
The table's test is unchanged also.
Unchanged from what? I think what this was supposed to say was
that the table's test is a "basic attribute."
Consider a hash table as an unordered set of key and
value pairs. Two hash tables are similar as constants
exactly if there is a one-to-one correspondence between
the key and value pairs of each and a one-to-one
correspondence between the uninterned symbols of each
such that the two keys of each corresponding pair are
similar as constants and the two values are also similar
as constants. The correspondence of uninterned symbols
must be consistent with the correspondence defined for
the entire set of constants in the file.
This paragraph is totally garbled. If you took out the
stuff about uninterned symbols it might make sense.
Structure, Standard-object
<<There is a cl-cleanup issue, LOAD-OBJECTS, pending
which proposes a mechanism for dealing with objects.>>
For structure instances with no method defined at compile
time for MAKE-LOAD-FORM, the slot values and the name of
structure type (a symbol reference) are recorded by the
compiler and reconstructed by the loader.
The text not enclosed in french quotation marks directly contradicts
the LOAD-OBJECTS proposal. It should be removed so we don't have two
proposals trying to talk about the same thing.
This sentence in the discussion section:
The full extension of the concept of coalescing of constants is to say
that they can be coalesced exactly when they are similar as constants.
seems to be in the wrong document, since this issue is not about
coalescing of constants and does not otherwise mention it, except
incidentally in connection with a bug in Coral Lisp.
∂14-Mar-89 1651 CL-Compiler-mailer issue QUOTE-SEMANTICS, version 2
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 14 Mar 89 16:51:17 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 557056; Tue 14-Mar-89 19:48:51 EST
Date: Tue, 14 Mar 89 19:48 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: issue QUOTE-SEMANTICS, version 2
To: cl-compiler@sail.stanford.edu
cc: x3j13@sail.stanford.edu
In-Reply-To: <8903131721.AA02184@defun.utah.edu>
Message-ID: <19890315004852.6.MOON@EUPHRATES.SCRC.Symbolics.COM>
I favor QUOTE-SEMANTICS:NO-COPYING for two reasons:
(1) it's clearly more aesthetic.
(2) I can't support either of the other two proposals because they use
the words "copying" and "coalescing" without defining their meaning.
My position could be changed to
QUOTE-SEMANTICS:COPYING-ALLOWED-BUT-NO-CONSTRAINTS by adding definitions
for those two words and by a strong argument that the implementation
cost of QUOTE-SEMANTICS:NO-COPYING is too high, since I believe to some
extent JonL's argument (quoted in the discussion section) that EQL of
(some types of) constants does not matter.
I can't imagine any argument that would convince me to
support QUOTE-SEMANTICS:SAME-AS-COMPILE-FILE. I believe Kent's
arguments against it (quoted in the discussion section).
∂14-Mar-89 1700 CL-Compiler-mailer issue MACRO-CACHING, version 2
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 14 Mar 89 17:00:30 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 557059; Tue 14-Mar-89 19:57:55 EST
Date: Tue, 14 Mar 89 19:57 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: issue MACRO-CACHING, version 2
To: cl-compiler@sail.stanford.edu
cc: x3j13@sail.stanford.edu
In-Reply-To: <8903131647.AA02151@defun.utah.edu>
Message-ID: <19890315005756.7.MOON@EUPHRATES.SCRC.Symbolics.COM>
I support MACRO-CACHING:DISALLOW. I'd like to point out that the
"correct" way to do macro caching is not mentioned anywhere in this
writeup. Perhaps that was justified because there is no portable way to
do it (an implementation can do it, but a user cannot), however I think
omitting it leaves a false impression.
The "correct" way to do macro caching is via a table inside the lexical
environment structure, which has very different properties from a table
keyed by the lexical environment structure, mentioned in the writeup.
I think a shorter writeup might be better. It could simply say that
there is no correct portable way to use *MACROEXPANSION-HOOK* to cache
macro expansions, and that there is no requirement that an implementation
call the macro expansion function more than once for a given form
and lexical environment. This prohibits the incorrect user code discussed
at some length in the existing writeup, leaves implementations license
to do macro caching correctly, and avoids a lot of unnecessary detail.
∂14-Mar-89 1704 CL-Compiler-mailer issue LOAD-TIME-EVAL, version 11
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 14 Mar 89 17:04:49 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via INTERNET with SMTP id 557069; 14 Mar 89 20:02:04 EST
Date: Tue, 14 Mar 89 20:02 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: issue LOAD-TIME-EVAL, version 11
To: cl-compiler@sail.stanford.edu
cc: x3j13@sail.stanford.edu
In-Reply-To: <8903131631.AA02140@defun.utah.edu>
Message-ID: <19890315010205.8.MOON@EUPHRATES.SCRC.Symbolics.COM>
I like LOAD-TIME-EVAL:R**3-NEW-SPECIAL-FORM.
∂14-Mar-89 1722 CL-Compiler-mailer issue CONSTANT-CIRCULAR-COMPILATION, version 7
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 14 Mar 89 17:21:59 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 557096; Tue 14-Mar-89 20:15:39 EST
Date: Tue, 14 Mar 89 20:15 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: issue CONSTANT-CIRCULAR-COMPILATION, version 7
To: cl-compiler@sail.stanford.edu
cc: x3j13@sail.stanford.edu
In-Reply-To: <8903131619.AA02090@defun.utah.edu>
Message-ID: <19890315011539.0.MOON@EUPHRATES.SCRC.Symbolics.COM>
I favor CONSTANT-CIRCULAR-COMPILATION:YES except that all references to
EQ should be changed to EQL. There is no reason to require
implementations to be careful about EQ of numbers and characters.
∂14-Mar-89 1731 X3J13-mailer Issue: GENSYM-NAME-STICKINESS (Version 1)
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 14 Mar 89 17:31:12 PST
Received: from Semillon.ms by ArpaGateway.ms ; 14 MAR 89 14:57:16 PST
Date: 14 Mar 89 14:56 PST
From: masinter.pa@Xerox.COM
Subject: Issue: GENSYM-NAME-STICKINESS (Version 1)
To: x3j13@SAIL.Stanford.EDU
reply-to: cl-cleanup@sail.stanford.edu
line-fold: no
Message-ID: <890314-145716-2049@Xerox>
Additional Comments include:
"... it's ... late to consider things like this ..."
"YAY!!! This is what "cleanup" is for. Go For It! "
"Sounds like a good idea to me."
!
Issue: GENSYM-NAME-STICKINESS
Forum: Cleanup
References: GENSYM (p169)
Category: CHANGE
Edit history: 14-Feb-89, Version 1 by Pitman
Problem Description:
Many people avoid use of the argument to GENSYM because the argument
is `sticky' and such stickiness can lead to confusion. The problem is
that if any application (usually a macro) uses the gensym argument at
all, then all applications are forced to. If they do not, they risk
finding that the `helpful' argument supplied in some previous call will
be harmful to them.
Proposal (GENSYM-NAME-STICKINESS:WASH-HANDS):
Define that if an optional argument is given to GENSYM, it does NOT
have a side-effect on GENSYM's internal state.
Rationale:
Conscientious programmers are forced now to write their own GENSYM
lookalikes because they know the system's GENSYM has an invasive
effect. This defeats the primary intended function of GENSYM, which
is to satisfy the most common idiomatic use of MAKE-SYMBOL.
The stickiness of the GENSYM prefix was an attempt to be gratuitously
compatible with Maclisp, at the expense of good programming pratice.
Users who need the old behavior of GENSYM can trivially implement
that behavior using MAKE-SYMBOL.
Test Case:
(CHAR-EQUAL (CHAR (SYMBOL-NAME (SECOND (LIST (GENSYM "A") (GENSYM)))) 0)
#\G)
=> NIL ;under CLtL
=> T ;under this proposal
Current Practice:
Symbolics Cloe and Genera are compatible with CLtL, so this would be an
incompatible change.
Cost to Implementors:
Very small.
Cost to Users:
Most uses of GENSYM do not depend on the stickiness of the name, so the
change would be compatible. In some cases, the change would be an
improvement. Even in the worst case where someone depends on stickiness,
it's extremely straightforward to write the couple of lines of code to
produce an application based on MAKE-SYMBOL that is at least as flexible
as GENSYM, and often moreso.
Cost of Non-Adoption:
Good programmers would avoid using the argument to GENSYM (or using
GENSYM altogether) in many situations where they ought not have to.
Benefits:
Gensyms which appear to convey information through their name would not
accidentally pop out and cause confusion in places where they oughtn't.
Aesthetics:
Unnecessary global state changes are hard to reason about. This would
be a small simplification.
Discussion:
Pitman claims to have written a non-sticky GENSYM function for nearly
every one of the dozen or so large systems that he's written or worked
on in the last decade in order to get around the stated problem.
Others have suggested similar experience.
Pitman supports the proposal.
----- End Forwarded Messages -----
∂14-Mar-89 1730 CL-Compiler-mailer issue COMPILED-FUNCTION-REQUIREMENTS, version 4
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 14 Mar 89 17:29:45 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via INTERNET with SMTP id 557112; 14 Mar 89 20:27:21 EST
Date: Tue, 14 Mar 89 20:27 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: issue COMPILED-FUNCTION-REQUIREMENTS, version 4
To: cl-compiler@sail.stanford.edu
cc: x3j13@sail.stanford.edu
In-Reply-To: <8903131544.AA02070@defun.utah.edu>
Message-ID: <19890315012722.1.MOON@EUPHRATES.SCRC.Symbolics.COM>
I much prefer the option FLUSH, which was in version 2 but has been
removed. That option was to remove the COMPILED-FUNCTION type.
This type has no portable meaning and never should have existed.
I have no objection to the proposed specification of what the COMPILE
and COMPILE-FILE functions do, but it should be decoupled from the
COMPILED-FUNCTION type and discussed under the rubric of those two
functions. The parts about COMPILER-LET and EVAL-WHEN can probably be
removed (assuming the COMPILER-LET-CONFUSION proposal that eliminates
the possibility of COMPILER-LET binding any variables at run time
passes, and the EVAL-WHEN-NON-TOP-LEVEL proposal passes) since they are
redundant; there is never any interpeter/compiler difference for
COMPILER-LET or EVAL-WHEN any more.
∂14-Mar-89 1722 CL-Compiler-mailer issue CONSTANT-COLLAPSING, version 5
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 14 Mar 89 17:21:52 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 557083; Tue 14-Mar-89 20:10:42 EST
Date: Tue, 14 Mar 89 20:10 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: issue CONSTANT-COLLAPSING, version 5
To: cl-compiler@sail.stanford.edu
cc: x3j13@sail.stanford.edu
In-Reply-To: <8903131622.AA02093@defun.utah.edu>
Message-ID: <19890315011043.9.MOON@EUPHRATES.SCRC.Symbolics.COM>
The proposal says:
State the an implementation is permitted to coalesce constants
appearing in code to be compiled if they are equivalent under the
relationship defined in proposal CONSTANT-COMPILABLE-TYPES:SPECIFY.
I can't understand what this means. The referenced proposal uses
the word "similar", not "equivalent". I'd support this alternate
wording:
Suppose that A and B are two objects used as quoted constants in the
input to COMPILE-FILE, and that A' and B' are the corresponding
objects used as constants in the result of loading the output of
that COMPILE-FILE. If A' is similar as a constant to both A and B,
then it is valid for A' and B' to be EQL even if A and B are not EQL.
This may still be too vague, since "objects in the input to
COMPILE-FILE" means not in the input text file, which doesn't contain
objects, but in the result of applying READ to the input file, and since
"corresponding objects" is not defined.
∂14-Mar-89 1731 X3J13-mailer Issue: COERCE-INCOMPLETE (Version 3)
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 14 Mar 89 17:31:00 PST
Received: from Semillon.ms by ArpaGateway.ms ; 14 MAR 89 14:29:58 PST
Date: 14 Mar 89 14:24 PST
From: masinter.pa@Xerox.COM
Subject: Issue: COERCE-INCOMPLETE (Version 3)
To: X3J13@sail.stanford.edu
reply-to: cl-cleanup@sail.stanford.edu
line-fold: no
Message-ID: <890314-142958-1976@Xerox>
There are a couple of "additional comments" on the proposal
at the end.
!
Issue: COERCE-INCOMPLETE
Reference: COERCE (p50)
Category: ADDITION/CHANGE
Edit history: Version 1 of COERCE-INCOMPLETE, 26-Feb-88 by M. Ida
Version 1 of COERCE-FROM-TYPE, 20-Jun-88 by Pitman
Version 2 of COERCE-INCOMPLETE, 21-Nov-88 by Pitman
(consolidate previous two proposals)
Version 3 of COERCE-INCOMPLETE, 07-Mar-89 by Pitman
(eliminate unpopular proposal, two new options)
Problem Description:
COERCE is difficult to extend because ambiguities arise about the
source type of the coercion.
For example, if the symbol STRING were permitted as a second argument
to coerce, as in (COERCE NIL 'STRING), there would be two posssible
return values: "" or "NIL". The choice would be arbitrary and would
have to be specified by the documentation. No matter which was chosen,
it would probably turn out to be a problem for some applications at
some times.
Another example is (COERCE (CHAR-CODE #\A) 'STRING). This might
return the same as (FORMAT NIL "~D" (CHAR-CODE #\A)) -- "65" in
most ASCII-based implementations -- or it might return "A". Again,
the choice would be arbitrary.
There is clear desire on the part of the user community to lift some of
the existing restrictions on arguments to COERCE, but because of legitimate
concerns about ambiguities, the Common Lisp designers have thus far
refused to do so.
Unfortunately, the failure of COERCE to handle these cases means it is
very difficult to learn to use COERCE. And the fact that COERCE is not
easily learned contributes to difficulty in learning Common Lisp because
instead of a single coercion operator with general purpose semantics, a
number of very special purpose coercion operators must be learned instead.
Some middle ground needs to be found, which neither compromises the
clear semantics and portable nature of COERCE nor complicates COERCE
in a way that makes it unlearnable.
Also, some people have expressed a desire for COERCE to be more
`symmetric.' Usually they seem to mean that they want it to be the case
that if (COERCE x y) works, then (COERCE (COERCE x y) (TYPE-OF x))
should also work. Although this is not an essential desire, it would
certainly be nice to achieve.
Proposal (COERCE-INCOMPLETE:LIMITED-ARBITRARY-EXTENSION):
Define COERCE to accept the following equivalences:
1. (COERCE x 'STRING) == (STRING x)
2. (COERCE x 'PATHNAME) == (PATHNAME x)
3. (COERCE x 'RATIONAL) == (RATIONAL x)
Clarify that
4. (COERCE x 'FLOAT) == (FLOAT x)
Rationale:
Many users think of STRING, for example, as ``the way to coerce
something to a string'' and are baffled why COERCE and STRING
disagree on how to do this.
Such users think that if there's a moral battle to be waged
over how to coerce an object to a STRING, the battle has already
been lost by defining the STRING function -- that whatever
decision is made for STRING must also apply to COERCE for the
sake of simplicity.
Similar arguments can be made for PATHNAME, FLOAT, and RATIONAL.
Proposal (COERCE-INCOMPLETE:DEPRECATE):
Deprecate COERCE.
Rationale:
COERCE is not functionally necessary -- no operation that it does
cannot be done in some other way. As such, it is basically just
a matter of syntactic convenience, and perhaps isn't worth having
around if it will be the subject of endless debate. Deprecating
it would allow us to declare this issue a `dead end' and focus our
attention on matters of greater substance.
Current Practice:
Presumably No one implements either of the proposals at this time,
since none are compatible with CLtL.
Cost to Implementors:
COERCE: Small to moderate.
DEPRECATE: None.
Cost to Users:
COERCE: This is an incompatible change. (COERCE 'NIL 'STRING) => ""
but (STRING NIL) => "NIL". How many applications are impacted by
this change is not clear. It would be straightforward to shadow
COERCE with an alternate definition that did the old thing in
cases where people were worried. Once such cases have been
identified, rewriting
(COERCE X 'STRING)
as
(IF X (COERCE X 'STRING) "")
will suffice in most cases.
DEPRECATE: No immediate work would be needed, although many maintained
applications would get upgraded in order to use the primitives that
are `in vogue.'
Cost of Non-Adoption:
People will continue to see and debate the issues alluded to in
the Problem Description.
Benefits:
The cost of Non-Adoption will be avoided.
Aesthetics:
COERCE: Many people will probably see the idea of making
COERCE consistent with STRING, PATHNAME, FLOAT, and
RATIONAL as a clear improvement -- possibly outweighing
the costs of both an incompatible change and a decision
to arbitrarily favor one treatment over the other.
DEPRECATE: Some may take the deprecation of COERCE as an
aesthetic improvement because it eliminates the need to
debate this issue further. Others may see the
``de-centralization'' of coercion as a step backward.
Discussion:
Pitman supports COERCE-INCOMPLETE:LIMITED-ARBITRARY-EXTENSION.
Hopefully Moon and Masinter support it, too, since it's
basically patterned after a bunch of mail they were sending
back and forth.
A proposal to extend COERCE to permit a ``view type'' argument
was considered and rejected as too extreme to consider seriously
in the timeframe available.
Pierson suggests that COERCE ought to be a candidate for
generic function status.
Pitman thinks that making [two-argument] COERCE generic would
be a -very- bad idea but believes that his earlier proposal
involving a third `view type' argument might be able to
accomodate such extension.
!
Additional comments
I agree that this is ready to send out. The thing about
COERCE-INCOMPLETE:LIMITED-ARBITRARY-EXTENSION that strikes fear
into my heart is that it wipes out CLtL's simple statement that
any sequence type may be converted to any other sequence type,
and starts people asking questions like does
(coerce nil '(vector character)) => "" or "NIL"?
This concern is not reflected at all in the writeup.
I agree that this is ready to send out but I'm inclined to vote
no on both proposals and keep the (unsatisfactory) status quo.
----- -----
I believe that any change to the status quo is incomplete without
providing a coercion mechanism whose "viewpoint" is that of a sequence.
That is effectively what the current COERCE is, overloaded with those
types which do not conflict with SEQUENCE.
Because of the problem of differing viewpoints, I'm inclined to think
that COERCE should be shrunk down to only being a sequence coercion
function, and all other coercions should be handled by the appropriate
functions.
----- -----
∂15-Mar-89 0520 X3J13-mailer Issue: ADJUST-ARRAY-NOT-ADJUSTABLE (Version 8)
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 15 Mar 89 05:19:57 PST
Received: from Cabernet.ms by ArpaGateway.ms ; 15 MAR 89 05:14:05 PST
Date: 15 Mar 89 05:13 PST
From: masinter.pa@Xerox.COM
to: X3J13@Sail.stanford.edu
Subject: Issue: ADJUST-ARRAY-NOT-ADJUSTABLE (Version 8)
reply-to: cl-cleanup@sail.stanford.edu
line-fold: NO
Message-ID: <890315-051405-3472@Xerox>
At the January '89 meeting, Version 4 of this issue was amended,
and then accepted.
We think there were some wording problems with the amendment,
in that it ended up not saying what we think was intended.
The amendment made some meaningful programs have undefined
behavior, and left the meaning of SIMPLE-ARRAY unclear.
After a good deal of work by the members of the cleanup committee,
we've arrived at the following version, which we would like
to submit to you for consideration as to whether it more
properly reflects the intent of the group.
!
Issue: ADJUST-ARRAY-NOT-ADJUSTABLE
References: ADJUST-ARRAY (p297), ADJUSTABLE-ARRAY-P (p293),
MAKE-ARRAY (pp286-289), simple arrays (p28, 289)
Category: CLARIFICATION
Edit history: 22-Apr-87, Version 1 by Pitman
15-Nov-88, Versions 2a,2b,2c by Pitman
02-Dec-88, Version 3 by Pitman
11-Jan-89, Version 4 by Pitman
16-Jan-89, Version 5, by Gabriel. Amended at the meeting to shorten.
23-Jan-89, Version 6, by Moon. Shorten without the bug introduced
by the amendment, add clarification of SIMPLE-ARRAY type.
15-Feb-89, Version 7, by Pitman. Minor changes per comments from
RPG and Dalton.
11-Mar-89, Version 8, by Pitman. Change category, add endorsements.
Problem Description:
The description of the :ADJUSTABLE option to MAKE-ARRAY on p288
says that ``the argument, if specified and not NIL, indicates that
it must be possible to alter the array's size dynamically after
it is created. This argument defaults to NIL.''
The description of the :ADJUSTABLE option does not say what
MAKE-ARRAY will do if the argument is unsupplied or explicitly NIL.
The description of ADJUSTABLE-ARRAY-P on p293 says that it is
true ``if the argument (which must be an array) is adjustable, and
otherwise false.'' However, the description of MAKE-ARRAY makes
it clear that this is not necessarily the same as asking if
the array was created with :ADJUSTABLE T. If ADJUSTABLE-ARRAY-P
returns NIL, you know that :ADJUSTABLE NIL was supplied (or no
:ADJUSTABLE option was supplied), but if ADJUSTABLE-ARRAY-P returns
T, then there is no information about whether :ADJUSTABLE was used.
The description of ADJUST-ARRAY on pp297-298 says that it is
``not permitted to call ADJUST-ARRAY on an array that was not
created with the :ADJUSTABLE option.'' This is inconsistent with
ADJUSTABLE-ARRAY-P.
A problem which comes up in practice is that some programmers
expect runtime error checking if they have done
(MAKE-ARRAY ... :ADJUSTABLE NIL) and they later try to adjust
the array using ADJUST-ARRAY.
The definition of the SIMPLE-ARRAY type and its subtypes needs
clarification of its relationship to adjustability.
Proposal (ADJUST-ARRAY-NOT-ADJUSTABLE:CLARIFY):
1. ADJUSTABLE-ARRAY-P is true of all arrays created with a true
:ADJUSTABLE option to MAKE-ARRAY. Whether ADJUSTABLE-ARRAY-P is
true of some other arrays is unspecified.
2. If MAKE-ARRAY is called with the :ADJUSTABLE, :FILL-POINTER,
and :DISPLACED-TO arguments each either unspecified or false, the
resulting array is a simple array. (This just repeats what CLtL
says on page 289, it's here to aid in understanding the next point.)
3. If MAKE-ARRAY is called with one or more of the :ADJUSTABLE,
:FILL-POINTER, or :DISPLACED-TO arguments true, whether the
resulting array is simple is unspecified.
4. ADJUST-ARRAY ``should signal'' an error if ADJUSTABLE-ARRAY-P
of its first argument is false. ADJUST-ARRAY must not signal an
`array not adjustable' error if ADJUSTABLE-ARRAY-P of its first
argument is true.
5. The value of ADJUSTABLE-ARRAY-P on a simple array is unspecified.
Note: ``should signal'' is taken from the new error terminology.
It means that in ``safe code'' (code compiled with highest safety)
an error must be signalled, but that in unsafe code (code not compiled
with highest safety), an error might or might not be signalled.
Clarifications and Logical Consequences:
a. Whether an array can be both simple and adjustable is unspecified.
b. There is no specified way to create an array for which ADJUSTABLE-ARRAY-P
definitely returns NIL.
c. There is no specified way to create an array that is non-simple.
d. This legitimizes ADJUSTABLE-ARRAY-P as an appropriate predicate to
determine whether ADJUST-ARRAY will reliably succeed.
e. If ADJUST-ARRAY is invoked on an array that was created without
supplying :ADJUSTABLE true, an `array not adjustable' error
``should be signalled'' unless ADJUSTABLE-ARRAY-P returns true on
that array (in which case it must not signal an `array not adjustable'
error).
Rationale:
This effectively makes the status quo explicit. This preserves the
raison d'etre of simple arrays, which is to provide a portable interface
to implementation-dependent specialized arrays that trade decreased
functionality for faster access.
Specifying the points left unspecified (requiring all simple arrays to be
non-adjustable and all adjustable arrays to be non-simple) would require
large changes to some implementations and would be of little benefit to
users, merely making one kind of nonconforming program fail in all
implementations instead of failing only in some implementations. The
argument here is not that the error checking would not be useful for
developers of portable code, but only that the cost of introducing that
error checking would be exceedingly high for some implementations.
Users need to know that certain arrays are simple, so they can put in
declarations and get higher performance, but users have no need to be
able to create arrays that are definitely non-simple (for lower
performance) or definitely non-adjustable (to cause errors).
Examples:
1. The following program is conforming. It is unspecified which branch
of the IF it follows.
(defun double (a)
(if (adjustable-array-p a)
(adjust-array a (* (length a) 2))
(let ((new (make-array (* (length a) 2))))
(replace new a :end1 (length a))
new)))
(double (make-array 30))
2. The following program is conforming. In no implementation is the
type declaration violated.
(let ((a (make-array 100)))
(declare (simple-array a))
(frob a))
Current Practice:
Probably everyone is compatible with this proposal.
Symbolics Genera makes :ADJUSTABLE NIL arrays adjustable in most cases,
and ignores adjustability in deciding whether an array is simple,
and is compatible with this proposal.
Lucid, IIM, and Symbolics Cloe make :ADJUSTABLE NIL arrays non-adjustable
in all cases, and make all arrays non-simple unless the Common Lisp
language requires them to be simple, and are compatible with this proposal.
Cost to Implementors:
It's in principle possible that some implementation would have to change,
but in practice there are no known implementations that would have to change.
Cost to Users:
None. This is a fully compatible change from the user's standpoint.
Benefits:
Users would know what to expect.
Non-Benefits:
Users who expect adjusting arrays created with :ADJUSTABLE NIL to signal
an error would not get the desired error checking.
Aesthetics:
Most people believe the status quo is unaesthetic. Having an aspect of
the language explicitly unspecified is more aesthetic than having it
implicitly unspecified on account of vague or inconsistent documentation.
Discussion:
Pitman, Moon, Gabriel, and Steele support this amended proposal.
MACSYMA ran into portability problems due to the status quo.
If the issue had been documented, that would have helped.
Encouraging implementations that are able to at least make
(MAKE-ARRAY ... :ADJUSTABLE NIL) create non-adjustable arrays
where possible would help, too.
We considered proposals to incompatibly change this primitive in a
variety of ways, but the community was very split with strong proponents
and opponents of each alternate proposal.
The overriding concern driving this proposal is that Symbolics
has asserted that most of the other really interesting proposals would
likely involve a sizable cost to implementors (and their installed bases)
to implement what were judged by some as gratuitous changes from the
status quo.
Pitman wishes some of the other proposals were economically feasible to
pursue but reluctantly agrees that maintaining (and clearly documenting)
the status quo is probably the most reasonable avenue left to us.
∂15-Mar-89 0622 X3J13-mailer BASE-CHARACTER
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 15 Mar 89 06:22:19 PST
Received: from Semillon.ms by ArpaGateway.ms ; 15 MAR 89 06:09:24 PST
Date: 15 Mar 89 06:07 PST
From: masinter.pa@Xerox.COM
Subject: BASE-CHARACTER
To: CL-Characters@SAIL.STANFORD.EDU
cc: X3J13@SAIL.STANFORD.EDU
Message-ID: <890315-060924-3563@Xerox>
There were a couple of points that were only tersly alluded to in my note
on the character proposal.
BASE-CHARACTER
I think most of the confusions and problems with BASE-CHARACTER in the
proposal result from its definition in terms of the 'natural' encoding of
an implementation.
I think defining BASE-CHARACTER exactly as
(UPGRADED-ARRAY-ELEMENT-TYPE 'STANDARD-CHAR)
has all of the right properties. (Recall that UPGRADED-ARRAY-ELEMENT-TYPE
was added by the (passed) proposal in ARRAY-TYPE-ELEMENT-TYPE-SEMANTICS.)
This definition is unambiguous and shows the relationship between the
string encoding and array upgrading strategies of the implementation and
the important character types. It ensures STANDARD-CHAR is a subtype of
BASE-CHARACTER.
Whether a character is "base" really only depends on the way that an
implementation represents strings, and not any other properties of the
implementation or the host operating system. Imagine two implementations on
a Unix machine, one of which encodes all strings as 16-bit characters, and
another which has two kinds of strings: 8-bit strings and 16-bit strings.
In the first implementation, the BASE-CHARACTER is CHARACTER: there's only
one kind of string. In the second implementation, the BASE-CHARACTER would
be those that could be stored in an 8-bit string, and it would be a proper
sub-type of CHARACTER.
To make this change requires leaving STANDARD-CHAR in the standard and then
merely defining BASE-CHARACTER in terms of it. Clearly BASE-STRING, if such
a name is necessary, would then just be a shorthand for (VECTOR
BASE-CHARACTER) with all the semantics implied by the array-element-type
proposals.
∂15-Mar-89 0636 X3J13-mailer Issue IN-PACKAGE-FUNCTIONALITY (Version 8)
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 15 Mar 89 06:35:51 PST
Received: from Semillon.ms by ArpaGateway.ms ; 15 MAR 89 06:27:41 PST
Date: 15 Mar 89 06:27 PST
From: masinter.pa@Xerox.COM
Subject: Issue IN-PACKAGE-FUNCTIONALITY (Version 8)
To: X3J13@sail.stanford.edu
reply-to: cl-cleanup@sail.stanford.edu
line-fold: NO
Message-ID: <890315-062741-3597@Xerox>
Version 4 of this issue (with only a version of
the SELECT-ONLY proposal) was discussed and tabled
at the last meeting.
This version includes two proposals; NEW-MACRO
(favored by many members of the cleanup committee)
and a new version of SELECT-ONLY.
!
Issue: IN-PACKAGE-FUNCTIONALITY
References: IN-PACKAGE (p182-183)
Category: CHANGE
Edit history: 07-Jul-88, Version 1 by Pitman
7-Oct-88, Version 2 by Masinter (discussion)
8-Dec-88, Version 3 by Masinter
12-Dec-88, Version 4 by Masinter
20-Jan-89, Version 5 by Loosemore
30-Jan-89, Version 6 by Loosemore
10-Mar-89, Version 7 by Loosemore
15-Mar-89, Version 8 by Masinter
(add back SELECT-ONLY)
Related-Issues: DEFPACKAGE (passed)
COMPILE-FILE-SYMBOL-HANDLING
Problem Description:
There are two typical uses for IN-PACKAGE -- to define/create a package
and to select a package. The fact that these two purposes have been
given to the same function has led to reduced error checking.
A more general problem is that the "Put In Seven Extremely Randoms"
convention described in CLtL is now recognized by many people as being
unsatisfactory for both package definition and package selection.
The DEFPACKAGE macro provides a much cleaner mechanism for package
definition, but there is still a need for a convenient way to select
a package that has well-defined compilation semantics.
Proposal (IN-PACKAGE-FUNCTIONALITY:NEW-MACRO):
Add a new macro:
SELECT-PACKAGE name [macro]
This macro causes *PACKAGE* to be set to the package named NAME,
which must be a symbol or string. An error is signalled if the
package does not already exist. Everything this macro does is also
performed at compile time if the call appears at top-level.
Remove the function IN-PACKAGE from the standard.
Remove the second paragraph of section 11.7 in CLtL. (This includes
the requirement for special compile-time treatment of the various
package functions.)
Rationale:
This could allow improved error checking and modularity, with only
minimal loss of functionality.
The rationale for proposing SELECT-PACKAGE as a replacement for
IN-PACKAGE, rather than simply changing IN-PACKAGE to have this
behavior, is that such an incompatible change would be confusing to
many people, and would make it more difficult to detect obsolete
usages. There is nothing in this proposal that would prevent
implementations from continuing to provide IN-PACKAGE as an extension.
Making SELECT-PACKAGE a macro rather than a function means that there
is no need to require COMPILE-FILE to handle it specially. Since
DEFPACKAGE is also defined to side-effect the compilation environment,
there is no need to require any of the package functions to be treated
specially by the compiler.
The language in section 11.7 of CLtL puts the burden on
implementations of ensuring that all symbols in a file which is
compiled and loaded end up in the same package that they would if the
source file were loaded interpretively. No implementation can
possibly meet this requirement because, in general, the runtime
behavior of the program cannot be predicted by the compiler.
Current Practice:
Probably no one implements this behavior exactly since it's an
incompatible change to CLtL.
Cost to Implementors:
The SELECT-PACKAGE macro can be implemented trivially by using
EVAL-WHEN in its expansion:
(defmacro select-package (name)
`(eval-when (eval compile load)
(setq *package*
(or (find-package ',name)
(error "Package ~s does not exist." ',name)))))
The changes required to COMPILE-FILE to remove the magic treatment
of the package functions are also likely to be small.
Cost to Users:
In most cases, minor syntactic changes to some files would be
necessary. Programmers that are now using the "Put In Seven
Extremely Randoms" convention will probably find it straightforward
to convert their code to do a DEFPACKAGE followed by a
SELECT-PACKAGE.
Cost of Non-Adoption:
The specification of COMPILE-FILE will be much more difficult to
understand.
The standard will require compilers to solve the halting problem.
Benefits:
Modular package declarations would be encouraged and errors due
to demand-creation of packages would be easier to detect.
The specification of COMPILE-FILE will be simplified.
There will be a clear statement of the requirements for program
conformance, as relating to usage of packages.
Aesthetics:
The fact that IN-PACKAGE is currently ambiguous about intent (whether
the package should exist already or not) is clearly not aesthetic.
Removing it can't be any worse.
The fact that the currently stated requirements for handling of
the package functions by the compiler are not implementable is
clearly not aesthetic.
!
Proposal (IN-PACKAGE-FUNCTIONALITY:SELECT-ONLY):
Eliminate the ability of IN-PACKAGE to create a package on demand.
Eliminate the :NICKNAMES and :USE arguments to IN-PACKAGE, since they
are no longer needed.
The results of calling IN-PACKAGE if the package does not already
exist are implementation dependent; implementations "should signal"
an error, or otherwise provide the user with a way to recover from
the situation.
Examples:
#1: (IN-PACKAGE 'NO-SUCH-PACKAGE) ;would signal an error
#2: (DEFPACKAGE FOO ...options...) ;defines/creates a package
(IN-PACKAGE 'FOO) ;selects an existing package
Rationale:
This could allow improved error checking and modularity, with only
minimal loss of functionality.
Current Practice:
Probably no one implements this behavior since it's in direct
contradiction of both the definitions and numerous examples in CLtL.
Cost to Implementors:
As written, no change to implementations is required, but many will
want to make IN-PACKAGE signal an error. This change would be
straightforward to implement. The cost may not be trivial in all
cases, but should not be very large.
Cost to Users:
In most cases, minor syntactic changes to some files would be
necessary.
In some cases, no changes would be necessary since files may
already be doing IN-PACKAGE in situations where the author is
hoping he's made sure the real package declaration is already
loaded.
Cost of Non-Adoption:
Reduced error checking.
Less modular code.
Benefits:
Errors due to demand-creation of a package by IN-PACKAGE without
appropriate uses of the :USE or :NICKNAMES or without appropriate
calls to EXPORT, etc. afterward would be easier to detect.
Modular package declarations would be encouraged.
Aesthetics:
The fact that IN-PACKAGE is currently ambiguous about intent (whether
the package should exist already or not) is clearly not aesthetic.
Some people feel this change would be an aesthetic improvement.
Others feel that an incompatible change to IN-PACKAGE would merely
be confusing.
!
Discussion:
The dual use of IN-PACKAGE has not been helpful and is confusing.
Some people may find proposal NEW-MACRO more palatable if it merely
deprecated IN-PACKAGE, instead of removing it entirely.
Loosemore and Moon support proposal IN-PACKAGE-FUNCTIONALITY:NEW-MACRO.
Pitman says:
I support NEW-MACRO, though would really prefer you change "remove" to
"deprecate". Making this an incompatible change is gratuitous.
∂15-Mar-89 0912 @Score.Stanford.EDU:nilsson@Tenaya.Stanford.EDU candidates
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 15 Mar 89 09:12:21 PST
Received: from Tenaya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Wed 15 Mar 89 09:08:31-PST
Received: by Tenaya.Stanford.EDU (NeXT-0.8/NeXT-0.8)
id AA08580; Wed, 15 Mar 89 09:05:51 PST
Date: Wed, 15 Mar 89 09:05:51 PST
From: nilsson@tenaya.Stanford.EDU (Nils Nilsson)
Message-Id: <8903151705.AA08580@Tenaya.Stanford.EDU>
To: faculty@score.Stanford.EDU
Subject: candidates
Cc: nilsson@Tenaya.Stanford.EDU
At the faculty meeting yesterday, I was reminded of
the need for search committee chairs to publicize
talks by candidates. We have been interviewing various
people lately, and it would be helpful if the entire
CS/CSL faculty were informed of visits and talks
by candidates. So, please, in addition to sending
announcements out to the search committee and to
people in your own specialty areas, also send
to "faculty@score." Thanks, -Nils
∂15-Mar-89 0929 @Score.Stanford.EDU:jcm@ra.stanford.edu efficient use of computers
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 15 Mar 89 09:29:45 PST
Received: from ra.stanford.edu by SCORE.STANFORD.EDU with TCP; Wed 15 Mar 89 09:26:42-PST
Received: by ra.stanford.edu (5.59/25-eef) id AA09562; Tue, 14 Mar 89 20:48:12 PDT
Date: Tue, 14 Mar 89 20:48:12 PDT
From: John Mitchell <jcm@ra.stanford.edu>
Message-Id: <8903150448.AA09562@ra.stanford.edu>
To: faculty@score
Subject: efficient use of computers
Reflecting on Dertouzos' talk, I'm not sure that we use
computers effeciently in this department. For example,
it would be useful to have an easy way to see how much
grant money I have spent this year, and how much is left
in each budgeted category. This must be on-line somewhere,
but I only get paper copy, which is in my office, and I
am at home.
∂15-Mar-89 0924 CL-Characters-mailer BASE-CHARACTER
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 15 Mar 89 09:24:27 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 557489; Wed 15-Mar-89 12:22:00 EST
Date: Wed, 15 Mar 89 12:22 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: BASE-CHARACTER
To: CL-Characters@SAIL.STANFORD.EDU
cc: X3J13@SAIL.STANFORD.EDU
In-Reply-To: <890315-060924-3563@Xerox>
Message-ID: <19890315172201.1.MOON@EUPHRATES.SCRC.Symbolics.COM>
After thinking it over, I agree with Larry Masinter's comments
in the referenced message and the suggestion to define BASE-CHARACTER
as (UPGRADED-ARRAY-ELEMENT-TYPE 'STANDARD-CHAR).
∂15-Mar-89 0948 X3J13-mailer Issue: GENSYM-NAME-STICKINESS (Version 1)
Received: from Think.COM by SAIL.Stanford.EDU with TCP; 15 Mar 89 09:48:17 PST
Received: from fafnir.think.com by Think.COM; Wed, 15 Mar 89 12:44:45 EST
Return-Path: <gls@Think.COM>
Received: from verdi.think.com by fafnir.think.com; Wed, 15 Mar 89 12:46:05 EST
Received: by verdi.think.com; Wed, 15 Mar 89 12:42:51 EST
Date: Wed, 15 Mar 89 12:42:51 EST
From: Guy Steele <gls@Think.COM>
Message-Id: <8903151742.AA02653@verdi.think.com>
To: cl-cleanup@sail.stanford.edu
Cc: x3j13@sail.stanford.edu
In-Reply-To: masinter.pa@xerox.com's message of 14 Mar 89 14:56 PST <890314-145716-2049@Xerox>
Subject: Issue: GENSYM-NAME-STICKINESS (Version 1)
Does KMP intend that GENSYM not be sticky for an integer argument
as well? That is, there is no way to reset the counter?
--Guy
∂15-Mar-89 0936 CL-Cleanup-mailer Issue: ADJUST-ARRAY-NOT-ADJUSTABLE (Version 8)
Received: from Aquinas.Think.COM by SAIL.Stanford.EDU with TCP; 15 Mar 89 09:36:35 PST
Received: from OCCAM.THINK.COM by Aquinas.Think.COM via INTERNET with SMTP id 124413; 15 Mar 89 12:34:29 EST
Date: Wed, 15 Mar 89 12:34 EST
From: Barry Margolin <barmar@FAFNIR.THINK.COM>
Subject: Issue: ADJUST-ARRAY-NOT-ADJUSTABLE (Version 8)
To: cl-cleanup@sail.stanford.edu
cc: X3J13@sail.stanford.edu
In-Reply-To: <890315-051405-3472@Xerox>
Message-ID: <19890315173420.1.BARMAR@OCCAM.THINK.COM>
Date: 15 Mar 89 05:13 PST
From: masinter.pa@xerox.com
Proposal (ADJUST-ARRAY-NOT-ADJUSTABLE:CLARIFY):
Hooray! We finally got our collective acts together on this one!
barmar
∂15-Mar-89 1016 X3J13-mailer Issue: EXTRA-RETURN-VALUES (Version 2)
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 15 Mar 89 10:16:01 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 557537; Wed 15-Mar-89 13:12:57 EST
Date: Wed, 15 Mar 89 13:12 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: Issue: EXTRA-RETURN-VALUES (Version 2)
To: chapman%aitg.DEC@decwrl.dec.com
cc: x3j13@sail.stanford.edu
In-Reply-To: <8902242235.AA14585@decwrl.dec.com>
Message-ID: <19890315181252.6.MOON@EUPHRATES.SCRC.Symbolics.COM>
This one took longer than the others to answer because it is
a more difficult issue.
Date: 24 Feb 89 17:35
From: chapman%aitg.DEC@decwrl.dec.com
Problem: Is it OK to return extra values from Common Lisp functions?
Proposal: EXTRA-RETURN-VALUES:NO
Unless it is explicitly allowed in the standard,
if a standard function
returns a different number of return values from the number
specified by the standard, the results are unspecified.
I see a couple of problems with this. First, it is bootless to
prohibit extra return values without also forbidding returning
fewer values than specified. For example, when SUBTYPEP returns
NIL NIL, both NILs must actually be returned, not defaulted.
Second, I don't understand how "the results are unspecified" can be
correct here. First of all, that term doesn't appear in the error
terminology, and I don't know whether you meant "the return values are
unspecified" or "the consequences are unspecified". But I don't see
how you could mean either of those, since in fact what happens when
a certain number of values is returned is fully specified by the
language, and there is neither ambiguity nor implementation freedom.
If we look at the Rationale:
The reason is that
additional arguments are visible to otherwise portable programs. "For
instance, (multiple-value-call #'cons (floor x y)) looks portable, but it
will try to pass the wrong number of arguments to CONS if FLOOR returns an
extra value."
I think what you must have actually meant to propose is: Functions
specified in the standard must return exactly the number of values
specified in the standard, no more and no fewer. You could phrase this
as a requirement on implementations or as something that a conforming
program is permitted to assume, I don't much care which.
I found 21 functions in the LISP package in Symbolics Genera 7.4 that
return multiple values. Is this the correct number? Just as it was
useful to know that there are exactly 775 symbols in the LISP package
(in CLtL Common Lisp), it would be a useful check to publish the number
of functions that are supposed to return more than one value, and also
the number that are supposed to return no values.
I found two functions that return a different number of values than
CLtL specifies. GETHASH returns a third value, the key it found,
to go with the value it found (this might not be EQL to the argument
when the test is EQUAL or EQUALP). READ-LINE returns two additional
values, the delimiter character and the input-editor argument given
to the delimiter character. The first of these is a useful feature
that Common Lisp ought to have, the second is a necessary extension
for our environment that is not obviously useful in other environments.
After making and thinking about that assessment, my feeling is that I
would vote for this proposal if it was reworded in a way that I could
understand (which might or might not be what I suggested above) and if a
few specific functions (list to be supplied later) were specified to
allow additional values. I think this list would include all of the I/O
functions and would not include any of the arithmetic functions. I
haven't yet consulted with anyone else at Symbolics on this opinion,
though.
∂15-Mar-89 1018 X3J13-mailer BASE-CHARACTER
Received: from Think.COM by SAIL.Stanford.EDU with TCP; 15 Mar 89 10:17:14 PST
Received: from fafnir.think.com by Think.COM; Wed, 15 Mar 89 13:13:21 EST
Return-Path: <gls@Think.COM>
Received: from verdi.think.com by fafnir.think.com; Wed, 15 Mar 89 13:14:40 EST
Received: by verdi.think.com; Wed, 15 Mar 89 13:11:29 EST
Date: Wed, 15 Mar 89 13:11:29 EST
From: Guy Steele <gls@Think.COM>
Message-Id: <8903151811.AA02727@verdi.think.com>
To: CL-Characters@sail.stanford.edu
Cc: X3J13@sail.stanford.edu
Subject: BASE-CHARACTER
Larry's suggestion about defining BASE-CHARACTER to be simply
(UPGRADED-ARRAY-ELEMENT-TYPE 'STANDARD-CHAR) has a great deal
of charm, and I don't see anything wrong about it.
So I support it.
--Guy
∂15-Mar-89 1026 STAGER@Score.Stanford.EDU Grade Sheets
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 15 Mar 89 10:26:24 PST
Date: Wed 15 Mar 89 10:22:26-PST
From: Claire Stager <STAGER@Score.Stanford.EDU>
Subject: Grade Sheets
To: faculty@Score.Stanford.EDU
cc: stager@Score.Stanford.EDU
Office: CS-TAC 29, 723-6094
Message-ID: <12478255093.12.STAGER@Score.Stanford.EDU>
The end-quarter grade sheets have arrived and will be delivered by courier
to your box today or tomorrow.
Please return them to Claire Stager in CS-TAC by ****MONDAY MARCH 27***.
Thank.
-------
∂15-Mar-89 1044 @Score.Stanford.EDU:nilsson@Tenaya.Stanford.EDU ICOT
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 15 Mar 89 10:44:18 PST
Received: from Tenaya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Wed 15 Mar 89 10:40:33-PST
Received: by Tenaya.Stanford.EDU (NeXT-0.8/NeXT-0.8)
id AA08672; Wed, 15 Mar 89 10:33:20 PST
Date: Wed, 15 Mar 89 10:33:20 PST
From: nilsson@Tenaya.Stanford.EDU (Nils Nilsson)
Message-Id: <8903151833.AA08672@Tenaya.Stanford.EDU>
To: faculty@score.Stanford.EDU
Subject: ICOT
Cc: nilsson@Tenaya.Stanford.EDU
FYI:
-------
Begin forwarded message:
To: cise.news@note.nsf.gov
Cc: bbarnes@note.nsf.gov
Subject: ICOT
From: "J. Mack Adams" <jadams@note.nsf.gov>
Dear Colleague:
I would like to call your attention to a special program we
have in the Computer and Information Science and Engineering
Directorate (CISE). The enclosed announcement describes the
National Science Foundation (NSF) and the Japanese Institute for
New Generation Computer Technology (ICOT) Visitors Program, which
support U. S. scientists and engineers to conduct research at
ICOT. In order to make it a more valuable experience, we have
modified the program.
The major modification is that we will now consider providing
research support for the visitor after his or her return from
Japan. Those who have a research grant in the same area of
research can apply for an extension to their grant. Those who
don't have a current grant can apply for research support for
up to two years after their return from Japan. Japanese language
training could be provided through the NSF International
Programs. Also, we have changed the eligibility criteria to
include advanced graduate students and post doctorates.
While ICOT has broad research interest, their current efforts
are focused in the following areas:
o AI Languages and Architectures
o Knowledge Representation and Machine Learning
o AI Applications
o Parallel Languages and their Semantics
o Software Science and Engineering
ICOT provides a unique cultural and research environment,
especially in areas closely related to the above.
If you have any interest in this program, please contact
your Program Director or Dr. Bruce Barnes at (202) 357-9572 or on
E-Mail on bbarnes@note.nsf.gov.
Sincerely,
William A. Wulf
Assistant Director
Directorate for Computer and
Information Science and Engineering
∂15-Mar-89 1051 @Score.Stanford.EDU:nilsson@Tenaya.Stanford.EDU possible faculty meeting
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 15 Mar 89 10:50:54 PST
Received: from Tenaya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Wed 15 Mar 89 10:42:19-PST
Received: by Tenaya.Stanford.EDU (NeXT-0.8/NeXT-0.8)
id AA08687; Wed, 15 Mar 89 10:39:38 PST
Date: Wed, 15 Mar 89 10:39:38 PST
From: nilsson@tenaya.Stanford.EDU (Nils Nilsson)
Message-Id: <8903151839.AA08687@Tenaya.Stanford.EDU>
To: ac@score.Stanford.EDU
Subject: possible faculty meeting
Cc: nilsson@Tenaya.Stanford.EDU
Please reserve the time Tuesday, March 21,
2:30-4:00 for a possible faculty meeting. Whether or
not we have the meeting depends on progress I
make on offers to theory candidate(s) and whether
the theory committee has new suggestions or wants
additional guidance. If it happens, it will
be in mjh 146. Thanks, -Nils
∂15-Mar-89 1054 @Score.Stanford.EDU:chandler@polya.Stanford.EDU Yesterday's Faculty Meeting
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 15 Mar 89 10:54:42 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Wed 15 Mar 89 10:46:25-PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA11584; Wed, 15 Mar 89 10:46:19 -0800
Date: Wed, 15 Mar 1989 10:46:16 PST
From: "Joyce R. Chandler" <chandler@polya.stanford.edu>
To: ac@score
Subject: Yesterday's Faculty Meeting
Message-Id: <CMM.0.87.605990776.chandler@polya.stanford.edu>
Someone left some papers in MJH-146 yesterday after the faculty meeting. One
was a paper "Languages under concatenation and shuffling (preliminary)) by
Steven T. Tschantz with a note on it to mail to Jay Gischer and initialled
"V". You can claim your papers in my office.
∂15-Mar-89 1131 GENESERETH@Score.Stanford.EDU Re: efficient use of computers
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 15 Mar 89 11:31:08 PST
Date: Wed 15 Mar 89 11:15:19-PST
From: Mike Genesereth <GENESERETH@Score.Stanford.EDU>
Subject: Re: efficient use of computers
To: jcm@ra.Stanford.EDU
cc: faculty@Score.Stanford.EDU
In-Reply-To: <8903150448.AA09562@ra.stanford.edu>
Message-ID: <12478264718.37.GENESERETH@Score.Stanford.EDU>
John,
You may recall that about a year ago Arturs Keller and I proposed to
exploit computer power within our own setting more effectively (Faculty lunch
entitled "Overcomputerizing the Depraatment"). Since then, Artur has
chaired a committee that has selected an appropirate global database for the
department. Hopefuilly, once this is in place and the university databses
are coordinated, we can give you the service you request. I'd
be interested in hearing other suggestions you might have on how
we might use computers more effectively.
mrg
-------
∂15-Mar-89 1222 misha@polya.Stanford.EDU AFLB tomorrow!
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 15 Mar 89 12:22:34 PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA06226; Wed, 15 Mar 89 12:19:25 -0800
Date: Wed, 15 Mar 89 12:19:25 -0800
From: Michael Kharitonov <misha@polya.Stanford.EDU>
Message-Id: <8903152019.AA06226@polya.Stanford.EDU>
To: aflb-all@polya.Stanford.EDU
Subject: AFLB tomorrow!
The last AFLB of this quarter is tomorrow, March 16, at 12:30 in room 352.
\title{Pseudo-random generation from one-way functions}
\author{Michael Luby\thanks{joint work with Russell Impagliazzo and
Leonid Levin} \\ International Computer Science Institute \\ Berkeley, California}
\date{}
\maketitle
\begin{abstract}
We show that the existence of one-way functions are necessary and sufficient
for the existence of pseudo-random generators in the following sense.
Let $f$ be an easily computable function such that when $x$ is chosen
randomly: (1) from $f(x)$ it is hard to recover an $x'$ with
$f(x')=f(x)$ by a small circuit, or; (2) $f$ has small degeneracy
and from $f(x)$ it is hard to recover $x$ by a fast algorithm.
>From one-way functions of type (1) or (2) we show how to construct
pseudo-random generators secure against small circuits or fast
algorithms, respectively, and vice-versa. Previous results show how
to construct pseudo-random generators from one-way functions that
have special properties ([Blum, Micali 82], [Yao 82], [Levin 85],
[Goldreich, Krawczyk, Luby 88]).
We use the results of [Goldreich, Levin 89] in a fundamental way.
\vspace{.1in}
\end{abstract}
\end{document}
∂15-Mar-89 1227 X3J13-mailer Re: Issue ERROR TERMINOLOGY, dpANS C
Received: from Sun.COM by SAIL.Stanford.EDU with TCP; 15 Mar 89 12:27:28 PST
Received: from snail.Sun.COM (snail.Corp.Sun.COM) by Sun.COM (4.1/SMI-4.0)
id AA14532; Wed, 15 Mar 89 12:27:45 PST
Received: from clam.sun.com by snail.Sun.COM (4.1/SMI-4.0)
id AA13443; Wed, 15 Mar 89 12:23:50 PST
Received: by clam.sun.com (4.0/SMI-4.0)
id AA28038; Wed, 15 Mar 89 12:27:22 PST
Date: Wed, 15 Mar 89 12:27:22 PST
From: cperdue@Sun.COM (Cris Perdue)
Message-Id: <8903152027.AA28038@clam.sun.com>
To: jeff%aiai.edinburgh.ac.uk@NSS.Cs.Ucl.AC.UK
Subject: Re: Issue ERROR TERMINOLOGY, dpANS C
Cc: x3j13@sail.stanford.edu
Discussion continued on cl-editorial.
∂15-Mar-89 1342 HEMENWAY@Score.Stanford.EDU Peterson's Guide Information
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 15 Mar 89 13:42:22 PST
Date: Wed 15 Mar 89 13:39:41-PST
From: Sharon Hemenway <HEMENWAY@Score.Stanford.EDU>
Subject: Peterson's Guide Information
To: ac@Score.Stanford.EDU
Reply-To: Hemenway@Score.Stanford.EDU
Message-ID: <12478290999.26.HEMENWAY@Score.Stanford.EDU>
This is just a reminder that I must have all revisions to the
Peterson's guide faculty research entries by this Friday, March 17.
(I put copies of this year's sheet in your mailboxes on March 3.) I
will be sending the revised copy to Peterson's on the 20th so if you
do want changes, I *must* have them by Friday.
Thanks,
Sharon
-------
∂15-Mar-89 1347 @Score.Stanford.EDU:chandler@polya.Stanford.EDU CSD Retreat
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 15 Mar 89 13:47:34 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Wed 15 Mar 89 13:43:06-PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA12685; Wed, 15 Mar 89 13:43:02 -0800
Date: Wed, 15 Mar 1989 13:42:59 PST
From: "Joyce R. Chandler" <chandler@polya.stanford.edu>
To: faculty@score
Subject: CSD Retreat
Message-Id: <CMM.0.87.606001379.chandler@polya.stanford.edu>
On Friday the folks from Chaminade will call me and ask for a definite head
count. They will prepare a contract that we must sign in order to reserve
space for the retreat. We will be bound by this contract to pay for the
rooms which we reserve. I will use the information you have sent me to make
arrangements for our space requirement. If your situation has changed,
please let me know ASAP. If you asked for accommodations and then do not
attend, we will be charged anyway. If I have not heard from you, please let
me know if you plan to attend. Thanks for your help.
∂15-Mar-89 1414 aaai@sumex-aim.stanford.edu Symposium Meeting
Received: from sumex-aim.stanford.edu by SAIL.Stanford.EDU with TCP; 15 Mar 89 14:13:59 PST
Received: by sumex-aim.stanford.edu (4.0/inc-1.0)
id AA18408; Wed, 15 Mar 89 14:11:20 PST
Date: Wed, 15 Mar 1989 14:11:20 PST
From: AAAI <aaai@sumex-aim.stanford.edu>
To: officers:;@sumex-aim.stanford.edu
Cc: aaai@sumex-aim.stanford.edu, bobrow.pa@xerox.com
Subject: Symposium Meeting
Message-Id: <CMM.0.88.606003080.aaai@sumex-aim.stanford.edu>
Hector and Peter would like to hold a breakfast meeting on Wednesday, March
29, at 7:30 am in the coffee shop at the Holiday Inn in Palo ALto to
review this year's symposium series.
If you can make the meeting, please inform me as soon as possible.
Claudia
∂15-Mar-89 1417 aaai@sumex-aim.stanford.edu Opps!
Received: from sumex-aim.stanford.edu by SAIL.Stanford.EDU with TCP; 15 Mar 89 14:14:47 PST
Received: by sumex-aim.stanford.edu (4.0/inc-1.0)
id AA18440; Wed, 15 Mar 89 14:12:24 PST
Date: Wed, 15 Mar 1989 14:12:23 PST
From: AAAI <aaai@sumex-aim.stanford.edu>
To: officers:;@sumex-aim.stanford.edu
Cc: aaai@sumex-aim.stanford.edu
Subject: Opps!
Message-Id: <CMM.0.88.606003143.aaai@sumex-aim.stanford.edu>
OPPS! Wrong .dis list!
Claudia
∂15-Mar-89 1446 X3J13-mailer Issue ERROR TERMINOLOGY
To: x3j13@SAIL.Stanford.EDU
From: Dick Gabriel <RPG@SAIL.Stanford.EDU>
Is it the case that ``fatal'' is well-defined? If so, ``harmless'' is
simply something that is not fatal. According to my mathematics
education, that renders the term well-defined.
``Indeed, there is no way to invoke GC in Common Lisp and with a few
exceptions such as messages, GC must have NO side effects.''
Unsolicited messages can happen, and there is a proposal on the
cl-editorial table to render them harmless. If GC can have no side
effects, then why not state that and not wonder about unsolicited
messages? If we did that, then any Common Lisp that does print a
progress note is *out* of conformance.
Also, as I've said several times, rehashing, termination of processes,
progress messages, flushing IO buffers, closing streams, and a list of
possibly hundreds of things are side effects of GC that should be
guaranteed harmless (that is, not fatal).
``> Some things are not immediately harmful but may cause
> trouble later on.
Yes, lots of things are that way.''
The definition of fatal puts no time constraints on the fatality. Therefore,
neither does its negation.
``> By ``unpredictable but harmless'', I think we are in effect saying
> ``not completely unpredictable''. That is, we promise something but
> don't quite say what it is. For example, Lisp will presumably not
> break off and start playing chess. But maybe it's harmless to start
> playing chess.''
The beauty of a specification is knowing what not to say in order to
allow rational interpreters the freedom to interpret rationality now
and in the unpredictable future. There is considerable genius in the
fine line that Steele tread in CLtL on this. Does anyone rationally
think that a Common Lisp would be taken seriously that while GCing
broke out in a game of chess or an Irish gig? I refuse to seriously
debate with anyone who would use that as an example of something that
we must utter one word in the specification to prevent.
``As far as I can see, the only reasonable option is to specify
some range of possible consequences. The constraints, whatever
they may be, make it possible to reason about what the program
will do.''
The reason this won't easily work is that it presumes that we are able
to accurately predict future implementation techniques and even to
fully comprehend current ones. I'm sure that KMP or I could supply an
endless stream of new and bizarre cases that have to be explicitly
dealt with. (I single out KMP because he has uncanny creativity.)
But, I'll change the debate a little. I've claimed that ``harmless''
is well-defined if and only if ``fatal'' is well-defined or at least
defined well enough. So, to convince me that ``harmless'' should be
pitched, you must convince me that ``fatal'' must be pitched.
-rpg-
∂15-Mar-89 1451 CL-Compiler-mailer Issue SAFE-CODE, version 1
To: cl-compiler@SAIL.Stanford.EDU, x3j13@SAIL.Stanford.EDU
From: Dick Gabriel <RPG@SAIL.Stanford.EDU>
According to my understanding of the dictionary definitions,
``unsafe'' means primarily ``the opposite or reversal of `safe' '' and
secondarily ``not safe.'' This coincides with Moon's reading.
Therefore, I propose we use the term ``nonsafe'' which clearly means
``not safe.'' This, coupled with the already very explicit definition
of ``unsafe,'' which explains that unsafe code might actually be safe,
should take care of his objection.
-rpg-
∂15-Mar-89 1506 CL-Editorial-mailer Re: Issue ERROR TERMINOLOGY, dpANS C
Received: from NSS.Cs.Ucl.AC.UK by SAIL.Stanford.EDU with TCP; 15 Mar 89 15:06:13 PST
Received: from aiai.edinburgh.ac.uk by NSS.Cs.Ucl.AC.UK via Janet with NIFTP
id aa11469; 15 Mar 89 19:24 GMT
Date: Wed, 15 Mar 89 19:21:20 GMT
Message-Id: <2039.8903151921@subnode.aiai.ed.ac.uk>
From: Jeff Dalton <jeff%aiai.edinburgh.ac.uk@NSS.Cs.Ucl.AC.UK>
Subject: Re: Issue ERROR TERMINOLOGY, dpANS C
To: Cris Perdue <cperdue@sun.com>, chapman <@decwrl.dec.com:chapman@aitg.dec>
Cc: kempf <@sun.com:kempf@clam>, peck <@sun.com:peck@clam>,
sgadol <@sun.com:sgadol@clam>, x3j13@sail.stanford.edu,
cl-editorial@sail.stanford.edu, rpg <@sail.stanford.edu:rpg@lucid.com>
Perhaps this discussion should be in cl-editorial...
> From: Cris Perdue <cperdue@com.sun>
> The error terminology is OK, except for "consequences
> are unspecified". That concept is broken, though it
> has serious defenders. For example, Dick Gabriel says,
>
> "If we were to drop this term, then every time we are
> ``explicitly vague'' a valid possibility is that a fatal
> error can occur. How is it any better to say that what happens
> when some operation happens is ``explicitly vague''."
Perhaps the problem is that "harmless" is not very well defined.
Maybe we can convince ourselves that ``the consequences of the garbage
collector when invoked'' are harmless, but how many other examples can
we find? Some things are not immediately harmful but may cause
trouble later on. For example, are the consequences of using EQ to
compare numbers harmless? Suppose we know that a fatal error will not
immediately occur. Is that enough to make it harmless (in this case)?
[I know this is most likely to be a case where the ``return values are
unspecified'', but it was the best I could do on short notice, and we
can ask whether these consequences would be ``harmless'' even if they
wouldn't be described as such in the standard.]
By ``unpredictable but harmless'', I think we are in effect saying
``not completely unpredictable''. That is, we promise something but
don't quite say what it is. For example, Lisp will presumably not
break off and start playing chess. But maybe it's harmless to start
playing chess.
> A typical area of "explicit vagueness" is the destructive operations
> on lists. The explicit vagueness here is quite limited. For
> some operations any top level cell of certain lists may or may
> not be modified. Similar statements apply to other operations.
> The consequences are far from being unspecified but harmless.
> They are CONSTRAINED but meaningful.
This is an interesting example. First, there's the question ``the
consequences of what?'' The consequences of applying the destructive
operation? The consequences of doing anything that depends on whether
or not cells were modified? We really have to see how these phrases
are used in the actual description of a function.
Maybe what we want is this:
The result is a list with certain (specified) properties.
The side effects on cells in the argument list are unspecified.
In addition, there might be a general warning that the consequences of
depending on unspecified side effects are undefined.
In an earlier message, Cris Perdue said:
Let's pick a few actual examples where the language definition is
proposed to say "consequences are unspecified". (Go ahead, I
challenge you.) I think we will find that the description will
have to be more specific than that. It can make sense to say that
"effect X may or may not occur". It can make sense to say that
"data structure Y may be modified arbitrarily". If we can define a
set of effects that we consider harmless, and change "unpredictable
but harmless" to just "harmless", or some such, that could also
make sense, but not the current language.
I am not quite convinced by this argument. We have to be careful not
to make too much undefined. If we consider some operation, some
things may be specified, some things left open, and so on. The
description may have to be ``more specific'' in that we shouldn't
describe the whole thing as ``unspecified'' when we can instead say
something more precise; but that doesn't show that some parts of the
description cannot reasonably use ``unspecified'' or ``undefined''.
Besides, this argument applies just as well to ``undefined'' as it
does to ``unspecified'' -- there would be the same need to be more
specific. So again I suspect it is the ``harmless'' that is really at
fault.
Anyway, the draft C standard makes a somewhat different distinction
between ``unspecified'' and ``undefined''. In particular, correct
programs may have unspecified behavior; those with undefined behavior
are incorrect, or at least nonportable:
Unspecified behavior -- behavior, for a correct program construct
and correct data, for which the Standard imposes no requirements.
Undefined behavior -- behavior, upon use of a nonportable or
erroneous program construct, of erroneous data, or of
indeterminately-values objects, for which the Standard imposes no
requirements. Permissible undefined behavior ranges from ignoring
the situation completely with unpredictable results, to behaving
during translation or program execution in a documented manner
characteristic of the environment (with or without the issuance of a
diagnostic message), to terminating translation or execution (with
the issuance of a diagnostic message).
There is also a category of ``implementation-defined behavior".
An example: in a function call if the argument types or the number of
arguments are wrong [this is said more precisely in the standard]
``the behavior is undefined''. However: ``The order of evaluation of
the function designator, the arguments, and subexpressions within the
arguments is unspecified, but there is a sequence point before the
actual call."
The Rationale (a separate document) says:
The terms unspecified behavior, undefined behavior, and
implementation-defined behavior are used to categorize the result of
writing programs whose properties the Standard does not, or cannot,
completely describe. The goal of adopting this categorization is to
allow a certain variety among implementations which permits quality
of implementation to be an active force in the marketplace, as well
as to allow certain popular extensions, without removing the cachet
of conformance to the standard. An appendix to the standard, A.6,
catalogs those behaviors that fall into one of these three
categories.
Unspecified behavior gives the implementor some latitude in
translating programs. This latitude does not extend so far as
failing to translate the program.
Undefined behavior gives the implementor license not to catch
certain program errors that are difficult to diagnose. It also
identifies areas of possible conforming language extension: the
implementor may augment the language by providing a definition of
the officially undefined behavior.
From all this I conclude that we probably do need both unspecified and
undefined. However, it is unclear exactly what distinction they
should express.
[The C standard also distinguishes between strictly conforming [more or
less: portable] programs and conforming programs.]
-- Jeff
∂15-Mar-89 1553 X3J13-mailer Re: Issue: EXTRA-RETURN-VALUES
Received: from ti.com by SAIL.Stanford.EDU with TCP; 15 Mar 89 15:52:37 PST
Received: by ti.com id AA13974; Wed, 15 Mar 89 15:08:09 CST
Received: from Kelvin by tilde id AA23610; Tue, 14 Mar 89 11:36:42 CST
Message-Id: <2814888931-7906489@Kelvin>
Sender: GRAY@Kelvin.csc.ti.com
Date: Tue, 14 Mar 89 11:35:31 CST
From: David N Gray <Gray@DSG.csc.ti.com>
To: chapman%aitg.DEC@decwrl.dec.com
Cc: x3j13@sail.stanford.edu
Subject: Re: Issue: EXTRA-RETURN-VALUES
In-Reply-To: Msg of 24 Feb 89 17:35 from chapman%aitg.DEC@decwrl.dec.com
> Proposal: EXTRA-RETURN-VALUES:NO
> Unless it is explicitly allowed in the standard,
> if a standard function
> returns a different number of return values from the number
> specified by the standard, the results are unspecified.
>
>
> Rationale:
>
> The reason is that
> additional arguments are visible to otherwise portable programs. "For
> instance, (multiple-value-call #'cons (floor x y)) looks portable, but it
> will try to pass the wrong number of arguments to CONS if FLOOR returns an
> extra value."
This may be a bit of over-kill. I suggest making this restriction only
for functions which the standard specifies as returning multiple values.
For functions that the standard says return one value, there would be no
reason for a portable program to go out of its way to accept more than
one value from them, so additional values shouldn't hurt.
Also, "the results are unspecified" doesn't seem to be the right
terminology to use here since this is intended to be a restriction on
the implementation. How about:
Unless it is explicitly allowed in the standard, functions which are
specified to return other than one value may not be extended by
implementations to return more values than specified.
∂15-Mar-89 1603 X3J13-mailer Feb. 21 letter ballot
Received: from ti.com by SAIL.Stanford.EDU with TCP; 15 Mar 89 16:00:39 PST
Received: by ti.com id AA14034; Wed, 15 Mar 89 15:09:30 CST
Received: from home by tilde id AA26164; Tue, 14 Mar 89 13:07:13 CST
Received: by home id AA15845; Tue, 14 Mar 89 13:07:05 CST
Date: Tue, 14 Mar 89 13:07:05 CST
From: David Bartley <bartley@home.csc.ti.com>
Message-Id: <8903141907.AA15845@home>
To: x3j13@sail.stanford.edu
Subject: Feb. 21 letter ballot
Reply-To: Bartley@ti-csl.csc.ti.com
This is TI's vote on the Feb. 21 letter ballot:
________________________________________________________________________
Issue or section name | Version | Y | I | A |
------------------------------------------------------------------------
CUT-OFF-DATES | 4 | Y | | |
------------------------------------------------------------------------
ERROR-TERMINOLOGY | 5 | | I | |
------------------------------------------------------------------------
FONTS | 2 | Y | | |
------------------------------------------------------------------------
TOC | 1 | Y | | |
------------------------------------------------------------------------
Section 1.8 | 5.8 | | I | |
------------------------------------------------------------------------
Section 2.3 | 5.8 | | I | |
------------------------------------------------------------------------
Section 2.4 | 5.8 | Y | | |
------------------------------------------------------------------------
Section 2.5 | 5.8 | Y | | |
------------------------------------------------------------------------
Section 6.1 | 5.8 | Y | | |
------------------------------------------------------------------------
Concerning ERROR-TERMINOLOGY: We understand that this section is
undergoing a significant rewrite.
(By the way, in the definition of CONFORMING CODE, shouldn't there be
a third point saying that conforming code does not depend on the
results of any "undefined" or "unspecified" situations?)
Concerning Section 1.8: This writeup is too terse to be very meaningful
---it looks like a preliminary outline instead of a final draft.
Concerning Section 2.3: Page 2-13 of the draft concerns David Gray
because it does not include any of the classes from page 1-17 of
88-002R. Why did we go through all that hassle of redefining the
FUNCTION type if it is not going to be defined here as a class?
Shouldn't all of the classes on page 1-17 be included?
--db--
∂15-Mar-89 1722 X3J13-mailer Bartley's Comments
To: x3j13@SAIL.Stanford.EDU
From: Dick Gabriel <RPG@SAIL.Stanford.EDU>
David writes:
``(By the way, in the definition of CONFORMING CODE, shouldn't there be
a third point saying that conforming code does not depend on the
results of any "undefined" or "unspecified" situations?)''
The descriptions of unspecified and undefined already state exactly this.
Do you think it should be repeated in the definition of conforming code?
-rpg-
∂15-Mar-89 1747 @polya.Stanford.EDU:tah@linz MTC Seminar
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 15 Mar 89 17:46:57 PST
Received: from [36.8.0.142] by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA01761; Wed, 15 Mar 89 17:43:35 -0800
Received: by linz.stanford.edu (5.59/25-eef) id AA00292; Wed, 15 Mar 89 17:43:27 PDT
Message-Id: <8903160143.AA00292@linz.stanford.edu>
To: lop@polya, csd@score
Subject: MTC Seminar
Date: 15 Mar 89 17:43:24 PST (Wed)
From: Tom Henzinger <tah@linz>
Friday, March 17, 12 noon, MJH 301:
ALGEBRAIC OPERATIONAL SEMANTICS
Yuri Gurevich
University of Michigan, Stanford University and IBM
Abstract:
We distinguish between explaining a programming language $L$
(explaining, say, to somebody who wants to write a compiler for $L$)
and explaining programs in $L$. The first task is easier and may be
accomplished, in the case of sequential languages, by providing an
abstract machine M (a transition system). The second task is more
difficult and is done usually by induction; the denotation $[P_1;P_2]$
of the concatenation of programs $P_1$, $P_2$ may be the composition of
the denotations $[P_1]$, $[P_2]$, etc. To convince yourself that the
first task is indeed easier, you may think about gotos.
However, the easier task is not that easy. What are states of $M$,
what are transition rules, how much can be accomplished in one step,
can one get away with just one machine or there is a need to consider
a family of machines, should one represent resources and if yes then
how, etc.? In our approach, a state is what an algebraist may call a
many-sorted algebra and a logician would call a many-sorted
first-order structure. Surprisingly, a very restrictive and simple
syntax of transition rules allows modeling of involved, full-scale,
real-life languages like Modula-2.
Distributed computing is a challenge to the naive approach of
transition systems. To explain a language like Occam in an honest and
undistorted way, one is forced to admit that sometimes the model does
not have a global state. But the challenge can be met.
In the talk we will illustrate the approach on examples of sequential
and -- if time permits -- distributed nature.
∂15-Mar-89 1756 X3J13-mailer Issue: BREAK-ON-WARNINGS-OBSOLETE (Version 1)
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 15 Mar 89 17:56:25 PST
Received: from Cabernet.ms by ArpaGateway.ms ; 15 MAR 89 17:17:14 PST
Date: 15 Mar 89 17:16 PST
From: masinter.pa@Xerox.COM
Subject: Issue: BREAK-ON-WARNINGS-OBSOLETE (Version 1)
To: x3J13@sail.stanford.edu
line-fold: NO
reply-to: CL-CLEANUP@Sail.stanford.edu
Message-ID: <890315-171714-1269@Xerox>
!
Issue: BREAK-ON-WARNINGS-OBSOLETE
Forum: Cleanup
References: *BREAK-ON-WARNINGS* (CLtL p432, CL Condition System p40)
*BREAK-ON-SIGNALS* (CL Condition System p25)
Category: CLARIFICATION/CHANGE
Edit history: 07-Mar-89, Version 1 by Pitman
Problem Description:
With the advent of *BREAK-ON-SIGNALS*, *BREAK-ON-WARNINGS* is
redundant and unnecessary.
Proposal (BREAK-ON-WARNINGS-OBSOLETE:DEPRECATE):
Deprecate *BREAK-ON-WARNINGS*.
Test Case:
N/A
Rationale:
This will lead to simplification of the description of WARN.
Not only are the two variables overkill, but they have an effect
in an identifiably but uselessly distinct place.
Current Practice:
Since deprecation is not removal, presumably everyone who conforms
is compatible.
Cost to Implementors:
Since the feature is deprecated rather than flushed: none.
Cost to Users:
Since the feature is deprecated rather than flushed: none.
Users should get used to writing (SETQ *BREAK-ON-SIGNALS* 'WARNING)
rather than (SETQ *BREAK-ON-WARNINGS* T).
Cost of Non-Adoption:
The definition of WARN will be gratuitously cluttered.
Benefits:
Cost of non-adoption is avoided.
Aesthetics:
Slight improvement.
Discussion:
Pitman thinks this is a good idea, but doesn't think a lot of time
should be wasted discussing the issue if there is strong opposition.
∂15-Mar-89 1814 @polya.Stanford.EDU:goldberg@Jinn.stanford.edu Interior study group
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 15 Mar 89 18:14:04 PST
Received: from Jinn.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA03325; Wed, 15 Mar 89 18:11:31 -0800
Received: by Jinn.stanford.edu (4.0/25-eef) id AA23513; Wed, 15 Mar 89 18:11:44 PST
Date: Wed, 15 Mar 89 18:11:44 PST
From: Andrew Goldberg <goldberg@Jinn.stanford.edu>
Message-Id: <8903160211.AA23513@Jinn.stanford.edu>
To: aflb-su@polya
Subject: Interior study group
Next quarter I would like to organize a group to study interior-point
methods for linear programming, which are the most exciting recent
developments in the area. This will be a very informal group, every
member of which will be expected to contribute by presenting results
from the literature (possibly in cooperation with another group member).
The group will be meeting once a week. Participants are expected to know
elementary linear programming, such as the duality theorem and the
simplex method. We will study Karmarkar- and Renegar- type algorithms,
and selected topics from linear programming which are needed for the
understanding of these methods.
Please let me know if you would like to participate. Feel free to contact
me if you have any questions.
Although I am not sure about the time yet, I would like to keep the length
of each meeting flexible. To do this, I suggest to start around 4:30, and
maybe have take-out food to make prevent people from leaving for diner.
Is it a good idea?
--Andy
∂15-Mar-89 1853 X3J13-mailer Re: Issue: EXTRA-RETURN-VALUES
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 15 Mar 89 18:53:34 PST
Received: from defun.utah.edu by cs.utah.edu (5.61/utah-2.1-cs)
id AA03073; Wed, 15 Mar 89 17:50:24 -0700
Received: by defun.utah.edu (5.61/utah-2.0-leaf)
id AA04907; Wed, 15 Mar 89 17:50:16 -0700
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8903160050.AA04907@defun.utah.edu>
Date: Wed, 15 Mar 89 17:50:14 MST
Subject: Re: Issue: EXTRA-RETURN-VALUES
To: David N Gray <Gray@DSG.csc.ti.com>
Cc: chapman%aitg.DEC@decwrl.dec.com, x3j13@sail.stanford.edu
In-Reply-To: David N Gray <Gray@DSG.csc.ti.com>, Tue, 14 Mar 89 11:35:31 CST
> Date: Tue, 14 Mar 89 11:35:31 CST
> From: David N Gray <Gray@DSG.csc.ti.com>
>
> This may be a bit of over-kill. I suggest making this restriction only
> for functions which the standard specifies as returning multiple values.
> For functions that the standard says return one value, there would be no
> reason for a portable program to go out of its way to accept more than
> one value from them, so additional values shouldn't hurt.
I disagree. I've been known to use an idiom like
(multiple-value-call #'foo (fn1) (fn2))
where FN1 is a standard Common Lisp function which is supposed to return
one value, and FN2 is a function that returns multiple values. If FN1
is allowed to return extra values, this won't work.
-Sandra
-------
∂15-Mar-89 1941 CL-Compiler-mailer issue COMPILE-ENVIRONMENT-CONSISTENCY, version 4
Received: from moon.src.honeywell.com (ALTURA.HONEYWELL.COM) by SAIL.Stanford.EDU with TCP; 15 Mar 89 19:40:55 PST
Return-Path: <alarson@src.honeywell.com>
Received: from pavo.SRC.Honeywell.COM by moon.src.honeywell.com (5.59/smail2.6.3/06-17-88);
Wed, 15 Mar 89 21:39:48 CST id AA08835 for cl-compiler@sail.stanford.edu
Posted-Date: Wed, 15 Mar 89 21:38:06 CST
Received: by pavo.src.honeywell.com (3.2/SMI-3.2)
id AA16529; Wed, 15 Mar 89 21:38:06 CST
Date: Wed, 15 Mar 89 21:38:06 CST
From: alarson@src.honeywell.com (Aaron Larson)
Message-Id: <8903160338.AA16529@pavo.src.honeywell.com>
To: cl-compiler@sail.stanford.edu
Cc: x3j13@sail.stanford.edu
In-Reply-To: Sandra J Loosemore's message of Mon, 13 Mar 89 15:50:07 -0700 <8903132250.AA02499@defun.utah.edu>
Subject: issue COMPILE-ENVIRONMENT-CONSISTENCY, version 4
If we permit the compiler to signal warnings for functions where the
compile-time environment signature is different from the function call
being compiled, why do we prohibit it for generic functions?
From COMPILE-ENVIRONMENT-CONSISTENCY:
(3) The compiler *must not* make any additional assumptions about
consistency between the compiletime and runtime environments. In
particular:
(a) The compiler may not ... It is, however,
permissible for the compiler to emit warning messages when
compiling calls to functions that are defined in the compiletime
environment, but where the wrong number or type of arguments
are supplied.
But then in CLOS-MACRO-COMPILATION:
DEFMETHOD:
* The method is not callable at compile-time. If there is a generic
function with the same name at compile-time, compiling a DEFMETHOD
will not add the method to that generic function. The compiler may
perform tests for lambda-list congruence only between the DEFGENERICs
and DEFMETHODs for a given generic function name that appear within
the file being compiled, and not against a generic function of the
same name which exists in the compile-time environment.
∂15-Mar-89 2041 @Score.Stanford.EDU:jlh@vsop.Stanford.EDU Re: efficient use of computers
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 15 Mar 89 20:41:22 PST
Received: from vsop.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Wed 15 Mar 89 20:37:50-PST
Received: by vsop.Stanford.EDU (5.57/Ultrix2.4-C)
id AA28411; Wed, 15 Mar 89 20:34:07 PST
Message-Id: <8903160434.AA28411@vsop.Stanford.EDU>
To: Mike Genesereth <GENESERETH@score.stanford.edu>
Cc: jcm@ra.stanford.edu, faculty@score.stanford.edu, jlh@vsop.Stanford.EDU
Subject: Re: efficient use of computers
In-Reply-To: Your message of Wed, 15 Mar 89 11:15:19 -0800.
<12478264718.37.GENESERETH@Score.Stanford.EDU>
Date: Wed, 15 Mar 89 20:34:01 PST
From: jlh@vsop.Stanford.EDU
We currently download budget information from the university databases
directly into our projection spreadsheets.
John
∂15-Mar-89 2152 @Score.Stanford.EDU:wheaton@Athena.Stanford.EDU efficient use of computers
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 15 Mar 89 21:52:47 PST
Received: from Athena.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Wed 15 Mar 89 21:49:30-PST
Received: by Athena.Stanford.EDU (5.61/25-eef) id AA00224; Wed, 15 Mar 89 21:47:37 -0800
Date: Wed, 15 Mar 89 21:47:37 -0800
From: George S Wheaton <wheaton@Athena.Stanford.EDU>
Message-Id: <8903160547.AA00224@Athena.Stanford.EDU>
To: jlh@vsop.Stanford.EDU
Cc: GENESERETH@score.Stanford.EDU, jcm@ra.Stanford.EDU,
faculty@score.Stanford.EDU, jlh@vsop.Stanford.EDU
In-Reply-To: jlh@vsop.Stanford.EDU's message of Wed, 15 Mar 89 20:34:01 PST <8903160434.AA28411@vsop.Stanford.EDU>
Subject: efficient use of computers
The SU financial system is flexible enough so you can design your own
format for downloading. I use the same system for departmental
budget/actual comparisons and dump the data into a "custom" Excel
spreadsheet.
gw
∂16-Mar-89 0601 X3J13-mailer Re: issue COMPILER-VERBOSITY, version 6
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 16 Mar 89 06:01:53 PST
Received: from Cabernet.ms by ArpaGateway.ms ; 16 MAR 89 05:48:37 PST
Date: 16 Mar 89 05:47 PST
From: masinter.pa@Xerox.COM
Subject: Re: issue COMPILER-VERBOSITY, version 6
To: cl-compiler@sail.stanford.edu
cc: x3J13@sail.stanford.edu
Message-ID: <890316-054837-3596@Xerox>
The current practice of this proposal says that one implementation has a
:VERBOSE that is used for what this proposal calls :PRINT, gives no current
examples of :VERBOSE, etc. I'm suspicious of a proposal to add something
that is significantly more complex than what any current implementation
already has.
COMPILE-FILE is significantly more part of the "environment" than LOAD is,
and I think that the less we specify its behavior, the better off we are.
While there are useful programmatic portable invocations of LOAD where
controlling the output behavior portably is important, the case for
portable control of output behavior of COMPILE-FILE is much less strong.
What about environments that support incremental compilation? Where
compilation is handled by a background process? Wouldn't this be
unnecessary junk for them to add?
If we have some doubts about whether some of these 'puppies' are really
useful, shouldn't we leave them behind? Not require them?
Larry
∂16-Mar-89 0632 X3J13-mailer Re: issue COMPILED-FUNCTION-REQUIREMENTS, version 4
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 16 Mar 89 06:32:40 PST
Received: from Cabernet.ms by ArpaGateway.ms ; 16 MAR 89 06:23:30 PST
Date: 16 Mar 89 06:22 PST
From: masinter.pa@Xerox.COM
Subject: Re: issue COMPILED-FUNCTION-REQUIREMENTS, version 4
In-reply-to: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>'s message
of Tue, 14 Mar 89 20:27 EST
To: cl-compiler@sail.stanford.edu
cc: X3J13@sail.stanford.edu
Message-ID: <890316-062330-3633@Xerox>
I think the previous sentiment was more strongly toward removing
COMPILED-FUNCTION rather than tightening its definition. However, in the
heat of the FUNCTION-TYPE discussion, this seemed to be a controversial
backward incompatibility (why not just leave it in, but leave it
unspecified?)
I've extracted some quotes about COMPILED-FUNCTION from the CL-CLEANUP
discussion on FUNCTION-TYPE. Of course, these are taken out of context...
Return-Path: <@SAIL.STANFORD.EDU:Moon@STONY-BROOK.SCRC.Symbolics.COM>
Received: from SAIL.STANFORD.EDU by Xerox.COM ; 02 MAR 87 21:29:49 PST
Received: from SCRC-STONY-BROOK.ARPA by SAIL.STANFORD.EDU with TCP; 2 Mar
87 21:27:23 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by
STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 82Date: Tue, 3
Mar 87 00:26 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Date: Tue, 3 Mar 87 00:26 EST
It might be wise to add LEXICAL-CLOSURE and INTERPRETED-FUNCTION data
types, to go along with the COMPILED-FUNCTION type that already exists.
These three would be disjoint subtypes of FUNCTION, but not necessarily
an exhaustive partition. There might be other ways to slice the space
of types, since it's not so clear what a function not inside a closure
is good for. Alternatively we could flush COMPILED-FUNCTION and say
that the subtypes of FUNCTION are all implementation-dependent. But I
think having COMPILED-FUNCTION without the others is weird.
- - - - - - - - -
Return-Path: <@SAIL.STANFORD.EDU:FAHLMAN@C.CS.CMU.EDU>
Received: from SAIL.STANFORD.EDU by Xerox.COM ; 08 MAR 87 21:56:23 PST
Received: from C.CS.CMU.EDU by SAIL.STANFORD.EDU with TCP; 8 Mar 87
21:53:10 PST
Received: ID <FAHLMAN@C.CS.CMU.EDU>; Mon 9 Mar 87 00:53:51-EST
Date: Mon, 9 Mar 87 00:53 EST
From: "Scott E. Fahlman" <Fahlman@C.CS.CMU.EDU>
Probably we should explicitly name COMPILED-FUNCTION and
INTERPRETED-FUNCTION as subtypes of FUNCTION, and make TYPEP work for
them.
- - - - - - - - -
Return-Path: <RPG@SAIL.STANFORD.EDU>
Received: from SAIL.STANFORD.EDU by Xerox.COM ; 08 MAR 87 23:54:05 PST
Date: 08 Mar 87 23:51 PST
From: Dick Gabriel <RPG@SAIL.STANFORD.EDU>
Possibly these should not be required to be pairwise disjoint (?).
I think we shouldn't presume that all implementations implement
functions as closures. I can imagine an implementation with
COMPILED-FUNCTIONs, INTERPRETED-FUNCTIONs, COMPILED-CLOSUREs,
and INTERPRETED-CLOSUREs.
- - - - - - - - -
Return-Path: <@SAIL.STANFORD.EDU:FAHLMAN@C.CS.CMU.EDU>
Received: from SAIL.STANFORD.EDU by Xerox.COM ; 09 MAR 87 08:07:46 PST
Received: from C.CS.CMU.EDU by SAIL.STANFORD.EDU with TCP; 9 Mar 87
08:01:49 PST
Received: ID <FAHLMAN@C.CS.CMU.EDU>; Mon 9 Mar 87 10:57:49-EST
Date: Mon, 9 Mar 87 10:57 EST
From: "Scott E. Fahlman" <Fahlman@C.CS.CMU.EDU>
Well, these make sense only in systems that do support both compiled and
interpreted code. In compiler-only or interpreter-only systems, I guess
the best move would be to say that every function is a member of both of
these subtypes: it is both a fast function and a slow function.
Now you're the one who is letting the user see internal stuff that is
none of his concern. All of these functions are closures, in that they
no longer have any free variables waiting to be closed. In some cases,
there may have been none in the first place, and implementors may want
to use some efficient internal form in such cases, but is there any
reason the user needs to know that? A confusing concept that does him
no good (I think).
- - - - - - - - -
Return-Path: <@SAIL.STANFORD.EDU:Moon@STONY-BROOK.SCRC.Symbolics.COM>
Received: from SAIL.STANFORD.EDU by Xerox.COM ; 10 MAR 87 07:54:56 PST
Received: from SCRC-STONY-BROOK.ARPA by SAIL.STANFORD.EDU with TCP; 10 Mar
87 07:48:09 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by
STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 89098; Tue
10-Mar-87 01:57:50 EST
Date: Tue, 10 Mar 87 01:57 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
... I vacillate between
saying that all of the subtypes of FUNCTION are implementation-dependent
and shouldn't be standardized (thus COMPILED-FUNCTION should be
removed), and saying that programs might want to know this information,
so all the plausible subtypes should have standard names, even if they
aren't distinct in some implementations. The only thing I feel strongly
and consistently about is that COMPILED-FUNCTION should not be the only
standardized subtype of FUNCTION; it should either acquire some siblings
or go away.
- - - - - - - - -
Return-Path: <@SAIL.STANFORD.EDU:KMP@STONY-BROOK.SCRC.Symbolics.COM>
Received: from SAIL.STANFORD.EDU by Xerox.COM ; 13 MAY 87 00:13:57 PDT
Received: from SCRC-STONY-BROOK.ARPA by SAIL.STANFORD.EDU with TCP; 13 May
87 00:12:36 PDT
Received: from TSUKUBA.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM
via CHAOS with CHAOS-MAIL id 138655; Wed 13-May-87 03:10:55 EDT
Date: Wed, 13 May 87 03:10 EDT
From: Kent M Pitman <KMP@STONY-BROOK.SCRC.Symbolics.COM>
* It seems to me that we might as well go ahead and create types
INTERPRETED-FUNCTION and COMPILED-FUNCTION since the combination of
the FUNCTION type and the COMPILED-FUNCTION-P predicate already
implements
this distinction. Perhaps eventually COMPILED-FUNCTION-P could be
flushed.
- - - - - - - - -
Return-Path: <@SAIL.STANFORD.EDU:FAHLMAN@C.CS.CMU.EDU>
Received: from SAIL.STANFORD.EDU by Xerox.COM ; 17 MAY 87 19:32:45 PDT
Received: from C.CS.CMU.EDU by SAIL.STANFORD.EDU with TCP; 17 May 87
19:31:22 PDT
Received: ID <FAHLMAN@C.CS.CMU.EDU>; Sun 17 May 87 22:30:44-EDT
Date: Sun, 17 May 87 22:30 EDT
Message-ID: <FAHLMAN.12303231779.BABYL@C.CS.CMU.EDU>
Sender: FAHLMAN@C.CS.CMU.EDU
One possibility is not to define any of these and to eliminate
COMPILED-FUNCTION-P. That's what I proposed in version 3. The other
possibility is to define COMPILED-FUNCTION and INTERPRETED-FUNCTION as
subtypes of FUNCTION, but then we have to spell out what happens in
implementations that have only one internal representation or that have
more than two -- raw interpreted, transformed, and fully compiled, for
example. Then there's the question of whether closures are, or can be,
a separate subtype. In some sense, all true functions are closures,
since to get one you close a lambda expression in some lexical
environment. However, we might want to reserve the word "closure" for
functions that actually capture some part of the lexical context outside
the function itself, and to create CLOSURE types based on this idea.
In my view, we are better off avoiding this whole thing and leaving it
to the individual implementations.
- - - - - - - - -
Date: 29 May 87 21:18 PDT
Subject: Issue: FUNCTION-TYPE (version 4)
From: Masinter.pa
Proposal FUNCTION-TYPE:REDEFINE
...
No sub-types of FUNCTION are defined in Common Lisp, but implementations
are free to define subtypes of FUNCTION. Examples might be
COMPILED-FUNCTION, INTERPRETED-FUNCTION, and so on. Note that this
is a change from the current Common Lisp definition which explicitly
defines a COMPILED-FUNCTION type. This proposal removes the predicate
COMPILED-FUNCTION-P from the standard language.
- - - - - - - - -
Return-Path: <@SAIL.STANFORD.EDU:Moon@STONY-BROOK.SCRC.Symbolics.COM>
Received: from SAIL.STANFORD.EDU by Xerox.COM ; 01 JUN 87 21:23:10 PDT
Received: from SCRC-STONY-BROOK.ARPA by SAIL.STANFORD.EDU with TCP; 1 Jun
87 21:21:48 PDT
Received: from EUPHRATES.SCRC.Symbolics.COM by
STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 161267; Tue
2-Jun-87 00:11:30 EDT
Date: Tue, 2 Jun 87 00:11 EDT
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
This proposal removes the predicate
COMPILED-FUNCTION-P from the standard language.
If it also removes the COMPILED-FUNCTION type-specifier, say so here.
- - - - - - - - -
Return-Path: <@SAIL.STANFORD.EDU:Masinter.pa@Xerox.COM>
Received: from SAIL.STANFORD.EDU by Xerox.COM ; 13 JUL 87 12:58:35 PDT
Received: from XEROX.COM by SAIL.STANFORD.EDU with TCP; 13 Jul 87 12:54:07
PDT
Received: from Cabernet.ms by ArpaGateway.ms ; 13 JUL 87 12:54:07 PDT
Date: 13 Jul 87 12:53 PDT
From: Masinter.pa
... My notes [from X3J13 meeting] include ... that we be more consistent
about justifying removing COMPILED-FUNCTION-P (i.e., why bother?) ...
- - - - - - - - -
Date: 23 Oct 87 11:51 PDT
From: Masinter.pa
Subject: Issue: FUNCTION-TYPE (Version 6)
here is a revised version... I left COMPILED-FUNCTION and
COMPILED-FUNCTION-P as subtypes of FUNCTION.
...
Proposal FUNCTION-TYPE:STRICT-REDEFINITION
...
The COMPILED-FUNCTION subtype of FUNCTION is defined; implementations are
free to define other subtypes of FUNCTION, e.g., INTERPRETED-FUNCTION.
- - - - - - - - -
(wording preserved through several iterations)
- - - - - - - - -
Return-Path: <CL-Cleanup-mailer@SAIL.Stanford.EDU>
Redistributed: xerox-cl-cleanup↑.pa
Received: from SAIL.Stanford.EDU by Xerox.COM ; 16 FEB 88 09:41:39 PST
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 16 Feb 88
09:39:23 PST
Received: by cs.utah.edu (5.54/utah-2.0-cs)
id AA23751; Tue, 16 Feb 88 10:39:08 MST
Received: by orion.utah.edu (5.54/utah-1.0-slave)
id AA25191; Tue, 16 Feb 88 10:39:04 MST
From: sandra%orion@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8802161739.AA25191@orion.utah.edu>
Date: Tue, 16 Feb 88 10:39:02 MST
Also, I have a question about 1b, where it states that COMPILED-FUNCTION
is a subtype of FUNCTION. Does this imply that it must be a *proper*
subtype? For example, in the Lisp I've been working on sporadically for
my Atari, the interpreted version of (FUNCTION (LAMBDA ...)) returns a
compiled function object (it's a closure which will apply the lambda
expression to the function arguments). Likewise I can conceive of
implementations which compile everything and don't have an "interpreter"
at all. I think this needs to be clarified.
- - - - - - - - -
Return-Path: <CL-Cleanup-mailer@SAIL.Stanford.EDU>
Redistributed: xerox-cl-cleanup↑.pa
Received: from SAIL.Stanford.EDU by Xerox.COM ; 19 FEB 88 14:37:22 PST
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 19 Feb 88 14:34:11
PST
Received: from Cabernet.ms by ArpaGateway.ms ; 19 FEB 88 14:17:33 PST
Date: 19 Feb 88 14:17 PST
From: Masinter.pa
I intended not to require that it not be a "proper" subtype in the sense
that
there may be no data items that are FUNCTIONP but not COMPILED-FUNCTIONP.
This can be clarified.
- - - - - - - - -
Return-Path: <edsel!jonl@labrea.Stanford.EDU>
Received: from labrea.Stanford.EDU by Xerox.COM ; 24 FEB 88 10:14:38 PST
Received: by labrea.Stanford.EDU; Wed, 24 Feb 88 09:35:20 PST
Received: from bhopal.lucid.com by edsel id AA21578g; Wed, 24 Feb 88
10:03:43 PST
Received: by bhopal id AA26979g; Wed, 24 Feb 88 10:09:26 PST
Date: Wed, 24 Feb 88 10:09:26 PST
From: Jon L White <edsel!jonl@labrea.Stanford.EDU>
Lucid Common Lisp distinguishes "compiled" closures which exist for the
purpose of supporting entry into the interpreter from functions which are
truly compiled. It only takes a bit in a header word. If an
implementation
really doesn't support an interpreter, then having every function be
COMPILED-FUNCTIONP doesn't sound like much of a loss.
But most implementations in fact do support an interpreter -- which
typically runs code at anywhere from 30 to 600 times slower than when
compiled. Thus it seems reasonable to require COMPILED-FUNCTIONP in
those implementations to be false on, say,
(eval '#'(lambda (x) (list x)))
no matter what underlying technique is used to support interpreter
closures.
- - - - - - - - -
Date: 4 Sep 88 13:39 PDT
From: Masinter.pa
Subject: Issue: FUNCTION-TYPE (version 12)
line-fold: NO
This is the final version of the FUNCTION-TYPE issue, as passed at the June
88 X3J13 meeting; that is, it incorporates the amendments that were adopted
before the issue was adopted.
...
1b. Define that the type COMPILED-FUNCTION is a subtype of FUNCTION.
Implementations are free to define other subtypes of FUNCTION.
∂16-Mar-89 0701 @Score.Stanford.EDU:ball@polya.Stanford.EDU efficient use of computers
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 16 Mar 89 07:01:48 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Thu 16 Mar 89 06:58:15-PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA21360; Thu, 16 Mar 89 06:57:57 -0800
Date: Thu, 16 Mar 89 06:57:57 -0800
From: Jim Ball <ball@polya.Stanford.EDU>
Message-Id: <8903161457.AA21360@polya.Stanford.EDU>
To: wheaton@Athena.Stanford.EDU
Cc: jlh@vsop.Stanford.EDU, GENESERETH@score.Stanford.EDU, jcm@ra.Stanford.EDU,
faculty@score.Stanford.EDU, jlh@vsop.Stanford.EDU
In-Reply-To: George S Wheaton's message of Wed, 15 Mar 89 21:47:37 -0800 <8903160547.AA00224@Athena.Stanford.EDU>
Subject: efficient use of computers
CF uses various parts of the SU system for monitoring and control of
the status of purchase orders on-line. We also tie into some of the
student database information for Sharon Hemenway.
-Jim
∂16-Mar-89 0713 X3J13-mailer Issue: TIME-ZONE-NON-INTEGER, v.1
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 16 Mar 89 07:13:51 PST
Received: from Cabernet.ms by ArpaGateway.ms ; 16 MAR 89 07:07:49 PST
Date: 16 Mar 89 07:07 PST
From: masinter.pa@Xerox.COM
To: x3J13@sail.stanford.edu
Subject: Issue: TIME-ZONE-NON-INTEGER, v.1
line-fold: NO
Message-ID: <890316-070749-3717@Xerox>
!
Issue: TIME-ZONE-NON-INTEGER
References: Section 25.4.1 (Time Functions) (p. 443-444)
Category: CLARIFICATION
Edit history: 1-MAR-89, Version 1 by Chapman
Problem Description:
CLtL states that the time zone part of Decoded Time is an integer. However,
it is possible to have a non-integer time-zone.
Proposal (TIME-ZONE-NON-INTEGER:ALLOW)
Specify that the time zone part of Decoded Time is a rational number
(either an integer or a ratio).
Rationale:
For CL to accommodate all possible time designations, it is necessary
to allow time zone to be non-integer.
Some places in the world are on half-hour or quarter-hour times.
Current Practice:
VAX LISP allows time zone to be non-integer.
Adoption Cost:
Shouldn't be too big a change.
Benefits:
See Rationale.
Conversion Cost:
See Adoption Cost.
Aesthetics:
None.
Discussion:
∂16-Mar-89 0708 CL-Compiler-mailer Re: Issue SAFE-CODE, version 1
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 16 Mar 89 07:08:22 PST
Received: from Cabernet.ms by ArpaGateway.ms ; 16 MAR 89 07:03:17 PST
Date: 16 Mar 89 07:02 PST
From: masinter.pa@Xerox.COM
Subject: Re: Issue SAFE-CODE, version 1
In-reply-to: Dick Gabriel <RPG@SAIL.Stanford.EDU>'s message of 15 Mar 89
14:51 PST
To: Dick Gabriel <RPG@SAIL.Stanford.EDU>
cc: cl-compiler@SAIL.Stanford.EDU, x3j13@SAIL.Stanford.EDU
Message-ID: <890316-070317-3708@Xerox>
I'm guessing that Moon's objections are more serious than yours.
Frankly, as long as we're playing definitions, I think the problem lies
with
"Define that, formally, the term ``safe code'' is code refers to any
code in which the OPTIMIZE quality for SAFETY has a value of 3."
I don't think this is a good definition. It is probably good to define that
"any code in which the OPTIMIZE quality for SAFETY has a value 3" is "safe
code", but there is other code that is "safe" too.
It seems pretty awkward to say that:
(locally (declare (optimize (safety 0))) (list 1 2 3))
is "unsafe" or "nonsafe" or "potentially non-safe". We could use the words
that way, but it is pretty confusing.
Counter-proposal: say "declared safe" or "not declared safe", since the
issue is not the (English) safety of the code but the declarations in
effect?
∂16-Mar-89 0719 X3J13-mailer Re: issue LOAD-TIME-EVAL, version 11
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 16 Mar 89 07:19:03 PST
Received: from defun.utah.edu by cs.utah.edu (5.61/utah-2.1-cs)
id AA21484; Thu, 16 Mar 89 08:16:34 -0700
Received: by defun.utah.edu (5.61/utah-2.0-leaf)
id AA05509; Thu, 16 Mar 89 08:16:32 -0700
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8903161516.AA05509@defun.utah.edu>
Date: Thu, 16 Mar 89 08:16:30 MST
Subject: Re: issue LOAD-TIME-EVAL, version 11
To: masinter.pa@Xerox.COM
Cc: x3j13@sail.stanford.edu
In-Reply-To: masinter.pa@Xerox.COM, 16 Mar 89 06:45 PST
> Date: 16 Mar 89 06:45 PST
> From: masinter.pa@Xerox.COM
>
> Um, I looked for and didn't find a justification for why what was passed at
> the last meeting was inadequate. I'm puzzled as to why there are now two
> proposals when there was one before, what the differences are between them,
> etc.
What happened is that we got some e-mail on this issue after the
meeting, describing in more detail some objections to the wording of
the proposal that had been discussed very briefly at the meeting.
This person thought that the original wording was too vague and that
we would have trouble being more explicit about the semantics it was
intended to specify, and suggested some new wording for slightly
different semantics. I think it is the consensus of the compiler
committee that the new language is an improvement.
The changed section of the proposal is clearly marked in the writeup
that was distributed. It has to do with under what circumstances it
is permissible to cache LOAD-TIME-VALUE expressions.
-Sandra
-------
∂16-Mar-89 0720 X3J13-mailer Issue: LOAD-TRUENAME (Version 1)
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 16 Mar 89 07:20:34 PST
Received: from Cabernet.ms by ArpaGateway.ms ; 16 MAR 89 07:13:53 PST
Date: 16 Mar 89 07:13 PST
From: masinter.pa@Xerox.COM
Subject: Issue: LOAD-TRUENAME (Version 1)
To: x3J13@SAIL.Stanford.EDU
Message-ID: <890316-071353-3747@Xerox>
!
Issue: LOAD-TRUENAME
Forum: Cleanup
References: LOAD (p426), PROVIDE (p188), REQUIRE (p188),
Issue REQUIRE-PATHNAME-DEFAULTS
Category: ADDITION
Edit history: 13-Mar-89, Version 1 by Pitman
Problem Description:
It is difficult to construct sets of software modules which work
together as a unit and which port between different implementations.
REQUIRE and PROVIDE were intended to provide this level of support
but have `failed' to be portable in practice.
Typical user configurations involve a `system definition' file which
loads the modules of a `system' (collection of software modules).
Among the specific problems which arise are:
- File system types may vary. Different file syntax must be used for
each site.
- Even with the same Lisp implementation and host file system type,
the directory in which a software system resides may differ from
delivery site to delivery site.
- Multiple `copies' of the same system may reside in different
directories on the same machine.
Proposal (LOAD-TRUENAME:NEW-PATHNAME-VARIABLES):
Introduce new variables:
*LOAD-TRUENAME* [Variable]
This special variable is initially NIL, but is bound by LOAD to
hold the truename of the pathname of the file being loaded.
*COMPILE-FILE-TRUENAME* [Variable]
This special variable is initially NIL, but is bound by
COMPILE-FILE to hold the truename of the pathname of the file
being compiled.
Example:
------ File SETUP ------
(IN-PACKAGE 'MY-STUFF)
(DEFMACRO COMPILE-TRUENAME () `',*COMPILE-FILE-TRUENAME*)
(DEFVAR *SOURCE-FILE* (COMPILE-TRUENAME) "Just for debugging.")
(DEFVAR *LOADED-FILE* *LOAD-TRUENAME*)
(DEFUN LOAD-MY-SYSTEM ()
(DOLIST (MODULE-NAME '("FOO" "BAR" "BAZ"))
(LOAD (MERGE-PATHNAMES MODULE-NAME *LOAD-TRUENAME*))))
------------------------
(LOAD "SETUP")
(LOAD-MY-SYSTEM)
Rationale:
This satisfies the most common instances of the frequently reported
problem in the Problem Description.
Current Practice:
Wide variation.
In some implementations, calling LOAD binds or sets
*DEFAULT-PATHNAME-DEFAULTS* so that pathnames named in a file being
LOADed will default to being `nearby.'
Some implementations provide special variables that are similar or
identical to one or both of those proposed.
Some implementations have a way to represent the pathname for the
current working directory, and make the default pathname default
to that, so that loading without specifying a default again tends to
get `nearby' files.
None of these techniques is portable, unfortunately, because there
is no agreement.
Cost to Implementors:
Very small.
Cost to Users:
None. This change is upward compatible.
Cost of Non-Adoption:
Continued difficulty for anyone trying to put a system of modules
in a form where they can be conveniently delivered using portable code.
Benefits:
The cost of non-adoption is avoided.
Aesthetics:
Negligible.
Discussion:
Touretzky raised the issue most recently on Common-Lisp. A number
of people immediately jumped on the bandwagon, indicating it was
important to them, too.
Pitman made three suggestions in response, of which the above is
the first. The others included:
2. Variables *LOAD-TRUENAMES* and *COMPILE-FILE-TRUENAMES* which hold
lists of the truenames of all files being loaded or compiled,
respectively, during the dynamic invocation of LOAD and COMPILE-FILE.
3. Variable *LOAD-OR-COMPILE-FILE-TRUENAMES* which holds a list like
((LOAD truename) (COMPILE-FILE truename) ...)
during the dynamic invocation of LOAD and COMPILE-FILE.
Touretzky responded:
``I like KMP's proposals. I like the second one best: have separate
variables for files being loaded and files being compiled, and use
them to maintain a stack so we can see the nesting of loads within
files.''
Pitman ultimately chose to present the first rather than the second
because it seemed simpler, easier to explain, and more likely to
pass at this late date.
!
Additional Comments:
"I favor LOAD-TRUENAME:NEW-PATHNAME-VARIABLES. I think this
proposal would be greatly improved by adding two more variables,
*LOAD-PATHNAME* and *COMPILE-FILE-PATHNAME*, whose values are
the pathname opened by LOAD or COMPILE-FILE, rather than the
truename. The need for these is more obvious if you think
about systems where the pathname cannot be easily reconstructed
from the truename. This includes file systems with symbolic
links and some pathname systems with logical pathnames."
"I favor this. I would even favor either of the other two ideas even at
this `late date'. The behavior of each of the proposals is simple, its
easy to see what it will and won't do, and it satisfies a real demand.
I should note that I have never wanted the incremented functionally
offered by the `stack' proposals, but I could still vote for them."
∂16-Mar-89 0831 X3J13-mailer Issue DESCRIBE-UNDERSPECIFIED, v.1
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 16 Mar 89 08:31:39 PST
Received: from Semillon.ms by ArpaGateway.ms ; 16 MAR 89 08:20:29 PST
Date: 16 Mar 89 08:19 PST
From: masinter.pa@Xerox.COM
Subject: Issue DESCRIBE-UNDERSPECIFIED, v.1
To: x3j13@SAIL.STANFORD.EDU
line-fold: NO
Message-ID: <890316-082029-3881@Xerox>
!
Forum: Cleanup
Issue: DESCRIBE-UNDERSPECIFIED
References: CLtL p441-2
88-002R, DESCRIBE function
Category: CHANGE, ADDITION
Edit history: Version 1, 10-Mar-89, Kim A. Barrett
Problem description:
The CLOS Specification (X3J13 Document 88-002R) changes the definition of the
function DESCRIBE, making it a generic function. However, it does not specify
any of the protocol needed to make user-defined methods interact properly to
produce some of the effects mentioned in CLtL. For example, CLtL says that
sometimes the method for describing an object will involve describing
something that it finds inside the object, and that such recursive
descriptions are indented appropriately. How do user-written methods achieve
this indentation? Must they arrange for the indentation explicitly, or is
there some automatic mechanism that handles it?
The new specification does not easily lend itself to certain kinds of features
which some implementations have included in their versions of DESCRIBE, such
as analogues to the printer's depth limits (*PRINT-DEPTH*) and circular
structure detection during recursion (*PRINT-CIRCLE*).
In addition, DESCRIBE does not take a stream argument, instead always doing
output to *STANDARD-OUTPUT*. This means that a program which wants to use
DESCRIBE to output some information to a particular stream must rebind
*STANDARD-OUTPUT* around the call to DESCRIBE. This is a nuisance, and is
also potentially a bad idea in implementations which have interrupts and such.
Proposal DESCRIBE-UNDERSPECIFIED:DESCRIBE-OBJECT:
Remove the section of 88-002R which specifies that DESCRIBE is a generic
function. Modify DESCRIBE to accept an optional second stream argument, which
defaults to *STANDARD-OUTPUT*. The value of this argument is the stream which
output will be directed to. Specify that DESCRIBE is implemented in terms of
the generic function DESCRIBE-OBJECT, described below.
DESCRIBE-OBJECT object stream [Generic Function]
The generic function DESCRIBE-OBJECT writes a description of an object to a
stream. The function DESCRIBE-OBJECT is called by the DESCRIBE function; it
should not be called by the user.
Each implementation is required to provide a method on the class
STANDARD-OBJECT and methods on enough other classes so as to ensure that
there is always an applicable method. Implementations are free to add
methods for other classes. Users can write methods for DESCRIBE-OBJECT for
their own classes if they do not wish to inherit an implementation-supplied
method.
ARGUMENTS:
The first argument is any Lisp object. The second argument is a stream; it
cannot be T or NIL.
VALUES:
The values returned by DESCRIBE-OBJECT are unspecified.
REMARKS:
Methods on DESCRIBE-OBJECT may recursively call DESCRIBE. Indentation,
depth limits, and circularity detection are all taken care of automatically,
provided that each method handles exactly one level of structure and calls
DESCRIBE recursively argument if there are more structural levels.
If this rule is not obeyed, the results are undefined.
In some implementations the stream argument passed to a DESCRIBE-OBJECT
method is not the original stream, but is an intermediate stream that
implements parts of DESCRIBE. Methods should therefore not depend on the
identity of this stream.
Rationale:
This proposal was closely modeled on the CLOS description of PRINT-OBJECT,
which was well thought out and provides a great deal of functionality and
implementation freedom. The same implementation techniques applicable to
PRINT-OBJECT will be applicable to DESCRIBE-OBJECT.
The reason for making the return values for DESCRIBE-OBJECT unspecified is to
avoid forcing users to include explicit (VALUES) in all their methods.
DESCRIBE will take care of that.
Current practice:
Probably nobody does precisely what this proposal suggests.
Cost to Implementors:
A fair amount of work may be required, since every method/subfunction of
DESCRIBE in an implementation may need at least some fixing to be in line with
this proposal. On the other hand, that work may already be needed in order to
conform to 88-002R, and this proposal may make the conversion easier by
simplifying the translation of an existing implementation of DESCRIBE.
Cost to Users:
Any users who are using an implementation which supports the current CLOS
specification of DESCRIBE and have defined their own methods will have to
change them. CLOS is sufficiently recent that this probably isn't a big
problem.
Those users who have made use of implementation-specific hooks into DESCRIBE
to define their own methods will likely have to change, but that was already
the case.
Users who are currently binding *STANDARD-OUTPUT* around calls to DESCRIBE may
wish to change their code.
Cost of non-adoption:
Portable DESCRIBE methods may be difficult to write because the protocol they
must follow is insufficiently specified.
Benefits:
The constraints on DESCRIBE methods are better specified, making it easier to
write such methods properly.
Aesthetics:
Minimal.
Discussion:
An additional change which is not included in the present proposal would be to
make the syntax of DESCRIBE and DESCRIBE-OBJECT be
DESCRIBE object &optional stream &key
DESCRIBE-OBJECT object stream &key
allowing implementation-specific extensions to the arguments. A possible
standard keyword argument is :VERBOSE, which might be used to specify how much
output to produce.
It might be desirable to define some new describe control variables analogous
to the printer control variables, ie. *DESCRIBE-LEVEL* and *DESCRIBE-CIRCLE*,
and possibly *DESCRIBE-LENGTH*.
-------
----- End Forwarded Messages -----
∂16-Mar-89 0854 X3J13-mailer Issue: CLOS-CONDITIONS (Version 4)
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 16 Mar 89 08:54:08 PST
Received: from Cabernet.ms by ArpaGateway.ms ; 16 MAR 89 08:44:08 PST
Date: 16 Mar 89 08:43 PST
From: masinter.pa@Xerox.COM
Subject: Issue: CLOS-CONDITIONS (Version 4)
To: X3J13@SAIL.Stanford.EDU
line-fold: NO
Message-ID: <890316-084408-3922@Xerox>
There've been various comments on this version; most of the
relevant discussion centers on whether the metaclass of
condition classes should be specified. Exerpts from
the mail appear at the end.
!
Status: DRAFT
Issue: CLOS-CONDITIONS
References: Condition System (Revision 18)
Category: ADDITION
Edit history: 26-Sep-88, Version 1 by Pitman
06-Oct-88, Version 2 by Pitman
09-Oct-88, Version 3 by Pitman
10-Mar-89, Version 4 by Pitman (remove unsupported options)
Problem Description:
The description of the Common Lisp condition system presupposes
only DEFSTRUCT and not DEFCLASS because it was written when
CLOS had not been adopted. It is stylistically out of step with
CLOS in a few places and places some restrictions which are not
necessary if CLOS can be presupposed.
Proposal (CLOS-CONDITIONS:INTEGRATE):
1. Define that condition types are CLOS classes.
2. Define that condition objects are CLOS instances.
3. Functions such as SIGNAL, which take arguments of class names, are
permitted to take class objects. Such class objects must still be
subclasses of CONDITION.
4. Define that slots in condition objects are normal CLOS slots. Note
that WITH-SLOTS can be used to provide more convenient access to the
slots where slot accessors are undesirable.
5. Incompatibly change the syntax of a slot in DEFINE-CONDITION
to be compatible with a DEFCLASS slot specification.
An implication of this change is that forms like
(DEFINE-CONDITION FOO (BAR) ((A 1) (B 2)))
would have to be written
(DEFINE-CONDITION FOO (BAR)
((A :INITARG :A :READER FOO-A :INITFORM 1)
(B :INITARG :B :READER FOO-B :INITFORM 2)))
6. Permit multiple parent-types to be named in the list of parent types.
Define that these parent types are treated the same as the superior
class list in a CLOS DEFCLASS expression.
7. Eliminate the :CONC-NAME option to DEFINE-CONDITION.
8. Define that condition reporting is mediated through the PRINT-OBJECT
method for the condition type (class) in question, with *PRINT-ESCAPE*
always being NIL. Specifying (:REPORT fn) in the definition of a
condition type C is equivalent to doing
(DEFMETHOD PRINT-OBJECT ((X c) STREAM)
(IF *PRINT-ESCAPE* (CALL-NEXT-METHOD) (fn X STREAM)))
Rationale:
These changes are consistent with the intent of the X3J13 endorsement
of CLOS and the Common Lisp Condition System.
Although items 5 and 7 are incompatible with the interim condition
handling which we've been working with, the overall proposal significantly
improves compatibility with CLOS.
This compatibility will make the language seem less fragmented, and
probably more learnable because there will be fewer paradigms to learn.
Also, items 5 and 7 in particular are an improvement for reasons
unrelated to CLOS if only because they get rid of the need for symbol
concatenation, a process which has been seen to cause problems because
of the transient nature of the binding of *PACKAGE*.
Examples:
Slot specifiers...
A slot specifier of X is still valid but is incompatibly
changed to mean what CLOS has it mean; no :INITARG or
:READER would be supplied.
A slot specifier of (X) is still valid but is incompatibly
changed to mean what CLOS has it mean; no :INITARG or
:READER would be supplied.
A slot specifier of (X V) would no longer be valid.
In addition, other slot specifiers such as
(X :INITARG :EX :TYPE FIXNUM)
are permitted as in DEFCLASS.
Conc names ...
(DEFINE-CONDITION FOOBAR (FOO BAR) (X Y) (:CONC-NAME FUBAR))
would be rewritten
(DEFINE-CONDITION FOOBAR (FOO BAR)
((X :INITARG :X :READER FUBAR-X)
(Y :INITARG :Y :READER FUBAR-Y)))
Report methods ...
(DEFINE-CONDITION OOPS (ERROR) ())
(DEFMETHOD PRINT-OBJECT ((X OOPS) STREAM)
(IF *PRINT-ESCAPE*
(CALL-NEXT-METHOD)
(FORMAT STREAM "Oops! Something went wrong.")))
(ERROR 'OOPS)
>>Error: Oops! Something went wrong.
Current Practice:
Some implementations supporting CLOS probably already do this,
or something very similar.
Cost to Implementors:
If you really have CLOS, this is very straightforward.
Cost to Users:
Small, but tractable.
The main potential problems are:
- :CONC-NAME. There is nothing that keeps an implementation from
continuing to support :CONC-NAME for a short while until old code
has been upgraded.
- The incompatible change to slot syntax. Again, it is possible to
unambiguously recognize a 2-list as old-style syntax and an
implementation can provide interim compatibility support during
a transition period.
Even if implementations did not provide the recommended compatibility
support, users could trivially shadow DEFINE-CONDITION and provide the
support themselves, expanding into the native DEFINE-CONDITION in the
proper syntax.
In any case, the total number of uses of DEFINE-CONDITION at this
point is probably quite small. Searching for them and repairing
each by hand is probably not an expensive operation.
Cost of Non-Adoption:
Conditions will seem harder to manipulate than other user-defined types.
People will wonder if CLOS is really something we're committed to.
Benefits:
A more regular, more learnable language.
Aesthetics:
Improved.
Discussion:
Gregor, Pierson, Moon, and Pitman support this proposal.
People seem to disagree about the status that CLOS might occupy
in the upcoming standard. In spite of a vote of support, they seem
to think it might be optional in some way. Passing this proposal
establishes a clear precedent for the full integration of CLOS into
the emerging language.
The sense of the cleanup committee was that it was acceptable for
a vendor to identify a CLOS-free subset of Common Lisp, but that since
the position of X3J13 seems to be that no resources should be devoted
to work on subsets, it was inappropriate for us to work out the details
of that subset ourselves. Since nothing about this proposal would
impede such a subset, we took that to be adequate basis for presenting
this single proposal.
Moon thinks we might want to add condition types for the errors
CLOS might signal. Richard Mlynarik thinks we should add a generic
function, REPORT-CONDITION, which is used for reporting conditions.
Both of these issues should probably be pursued under separate cover.
!
"One comment is that you should explicitly mention bootstrapping
concerns under cost to implementors. If you just leave it out,
someone may think it is a difficult problem. "
"This isn't any sort of clarification. The actual clarification required
-- which has been requested several times, and not just by myself -- is
what the *METACLASS* of condition types is.
Condition types may be "CLOS classes" without being STANDARD-CLASSes
Condition objects may be "CLOS instances" without being STANDARD-OBJECTs.
Just what are "normal CLOS slots"? As I see it, the "normalcy" or
otherwise of slots is determined by the metaclass.
My opinion for some time has been that condition types should not be
STANDARD-CLASSes but instead something like READ-ONLY-CLASS.
Conceptually, It Is An Error to modify the slots of condition objects,
which are supposed to be immutable descriptions of part of the state of
a computation. Implementationally,
(setf (slot-value <condition-object> <slot-name>) <new-value>) should
signal an error.
(I also think that conditions in particular have a strong need for
something like :REQUIRED-INIT-KEYWORDS, but that's another story.)
Even if you decide to make condition classes' metaclass STANDARD-CLASS,
the point is that you need to state this, so that users may define
condition classes and mixins using DEFCLASS."
"I do not agree that it is a -necessary- thing to specify the Meta-Class
of conditions because all intended uses of conditions can be done
without this information.
I agree that it is a -possibly useful- thing to do, but there is a down
side to it -- it would unnecessarily tie the hands of people who want
implementation flexibility for one reason or another."
"... If we don't specify the metaclass, then users
won't know what other classes they can mix in when defining condition
classes. It may seem weird, but I can imagine someone wanting to mix
in an arbitrary class into a condition class.
I think we should just say that the class CONDITION is an instance of
STANDARD-CLASS, and that by default DEFINE-CONDITION defines standard
classes. Sure it might be nice to do the read only class thing but I
don't think this is a good time to design a special purpose metaclass
for this. "
∂16-Mar-89 0928 CL-Compiler-mailer Issue SAFE-CODE, version 1
To: cl-compiler@SAIL.Stanford.EDU
CC: x3j13@SAIL.Stanford.EDU
From: Dick Gabriel <RPG@SAIL.Stanford.EDU>
The point of these definitions is to lay out terminology that
enables programmers to know with certainty on what ground they stand
with respect to the specification. ``Safe code'' is a technical term
that means that the code was ``processed'' under this declaration.
This means intuitively that it is as safe (English word) as it can get.
But it also means that it is ``safe code'' in the CL jargon, and eveything
we say about safe code there is also true of it.
The meaning of safe code (English phrase), as in ``as safe as it can
get,'' is spelled out in the specification as the sequence of statements
we make about the attributes of safe code. It might be that some or all of
those attributes apply to code processed under lower safety optimization
levels, but the programmer can be sure only when the highest safety level
is used.
I think Moon's problem is that the usual practice is to borrow English
words for these technical terms, and that works fine until the
negation of the term is needed. We want some word to mean ``not `safe' ''.
``Unsafe'' is an available English word that does not mean the
complement of ``safe'', it means the reverse of safe. Thus, the parallel
senses of the technical pair ``safe/unsafe'' are not the same as the
vernacular pair safe/unsafe.
Also, the definitions of the terms point out that what is defined as
``unsafe code'' might actually be exactly as safe (English) as ``safe code.''
-rpg-
∂16-Mar-89 0957 X3J13-mailer Re: Issue ERROR TERMINOLOGY, dpANS C
Received: from Aquinas.Think.COM by SAIL.Stanford.EDU with TCP; 16 Mar 89 09:57:06 PST
Received: from OCCAM.THINK.COM by Aquinas.Think.COM via CHAOS with CHAOS-MAIL id 124431; Wed 15-Mar-89 19:28:46 EST
Date: Wed, 15 Mar 89 19:28 EST
From: Barry Margolin <barmar@FAFNIR.THINK.COM>
Subject: Re: Issue ERROR TERMINOLOGY, dpANS C
To: Jeff Dalton <jeff%aiai.edinburgh.ac.uk@NSS.Cs.Ucl.AC.UK>
cc: Cris Perdue <cperdue@sun.com>, chapman <@decwrl.dec.com:chapman@aitg.dec>,
kempf <@sun.com:kempf@clam>, peck <@sun.com:peck@clam>, sgadol <@sun.com:sgadol@clam>,
x3j13@sail.stanford.edu, cl-editorial@sail.stanford.edu, rpg <@sail.stanford.edu:rpg@lucid.com>
In-Reply-To: <2039.8903151921@subnode.aiai.ed.ac.uk>
Message-ID: <19890316002837.0.BARMAR@OCCAM.THINK.COM>
A while back I proposed (to the Editorial committee) a definition of
"harmless" that I still like: Equivalent to an arbitrary conforming
program. The point of this definition is to say that the consequences
of the situation are undefined, but it can't do anything that a valid
program can't do (if we had a denotational semantics, or a virtual
machine specification as I believe the C standard does, we could
probably use that to specify this). For instance, it won't result in
pointers to unallocated data being stored in the application's data, or
changing components of function objects. Undefined consequences would
allow such things, and they can result in secondary effects such as
crashing the system or the process dumping core. Note that my
definition includes signaling an error among the harmless consequences.
Yes, this definition allows such situations to result in playing chess,
and if the computer is controlling a bomb silo it could also result in
starting World War III. I don't think a general definition of
"unspecified" can possibly disallow these things. We might want to
rethink the applicability of the word "harmless" in this case. I think
market forces are adequate to guarantee that the actual results in any
particular implementation will be reasonable, and we won't have
computers all over the country playing chess when you ask them to CONS.
By the way, I've decided that the "consequences of the garbage collector
are unspecified" example is totally bogus. The garbage collector is
completely transparent to a Common Lisp program. The usual
counterargument (which I used to give) is that GC usually changes the
output of the ROOM function, but so can CONS, MAKE-ARRAY, etc.; the
language doesn't even guarantee that (PROGN (ROOM) (ROOM)) will print
the same output twice (it probably won't if ROOM conses). It can also
be argued that GC can be detected by noticing how long operations take,
but on time-sharing systems there are other reasons why an operation may
take a long time. GC may reorder the elements in a hash table, but we
never guarantee that MAPHASH of a hash table will consistently process
the elements in the same order, and SETF of GETHASH may also rehash the
table. I challenge someone to write a conforming Common Lisp program
GC-P that takes as an argument a function, applies the function, and
returns a boolean result indicating whether a GC occurred during the
function execution.
If we can't come up with another example of an unspecified situation,
perhaps we should just throw out the term and stop fighting about it.
barmar
∂16-Mar-89 0958 X3J13-mailer Re: Issue: EXTRA-RETURN-VALUES
Received: from Aquinas.Think.COM by SAIL.Stanford.EDU with TCP; 16 Mar 89 09:57:58 PST
Received: from OCCAM.THINK.COM by Aquinas.Think.COM via CHAOS with CHAOS-MAIL id 124433; Wed 15-Mar-89 19:37:26 EST
Date: Wed, 15 Mar 89 19:37 EST
From: Barry Margolin <barmar@FAFNIR.THINK.COM>
Subject: Re: Issue: EXTRA-RETURN-VALUES
To: David N Gray <Gray@dsg.csc.ti.com>
cc: chapman%aitg.DEC@decwrl.dec.com, x3j13@sail.stanford.edu
In-Reply-To: <2814888931-7906489@Kelvin>
Message-ID: <19890316003719.1.BARMAR@OCCAM.THINK.COM>
Date: Tue, 14 Mar 89 11:35:31 CST
From: David N Gray <Gray@dsg.csc.ti.com>
> Proposal: EXTRA-RETURN-VALUES:NO
> Unless it is explicitly allowed in the standard,
> if a standard function
> returns a different number of return values from the number
> specified by the standard, the results are unspecified.
>
>
> Rationale:
>
> The reason is that
> additional arguments are visible to otherwise portable programs. "For
> instance, (multiple-value-call #'cons (floor x y)) looks portable, but it
> will try to pass the wrong number of arguments to CONS if FLOOR returns an
> extra value."
This may be a bit of over-kill. I suggest making this restriction only
for functions which the standard specifies as returning multiple values.
For functions that the standard says return one value, there would be no
reason for a portable program to go out of its way to accept more than
one value from them, so additional values shouldn't hurt.
But MULTIPLE-VALUE-CALL permits multiple arguments, some of which might
be calls to functions documented as returning only one valid, e.g.
(multiple-value-call #'three-arg-function (cons x y) (floor x y))
MV-CALL is being used to get the multiple values of FLOOR passed as the
second and third argument to THREE-ARG-FUNCTION, but this will fail if
CONS returns the wrong number of values.
barmar
∂16-Mar-89 1004 @Score.Stanford.EDU:jutta@coyote.stanford.edu faculty candidate visits
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 16 Mar 89 10:04:42 PST
Received: from coyote.stanford.edu by SCORE.STANFORD.EDU with TCP; Thu 16 Mar 89 10:00:15-PST
Received: by coyote.stanford.edu; Thu, 16 Mar 89 10:06:31 PST
Date: 16 Mar 1989 1006-PST (Thursday)
From: Jutta McCormick <jutta@coyote.stanford.edu>
To: faculty@score.Stanford.EDU
Cc:
Subject: faculty candidate visits
The Robotics Search Committee will be interviewing the following
candidates within the next two or so weeks:
Friday, March 17: Zexiang Li, U.C. Berkeley (Ph.D.student)
Monday and Tuesday,
March 20 and 21: Michael Erdmann, M.I.T. (Ph.D. student)
Monday, April 3
(tentative): John Aloimonos, U. of Maryland (Ass't.Professor)
Below is the information on the talks the first two candidates are
scheduled to present. Information on Aloimonos' talk will follow as
soon as it is available.
If you are interested in meeting with any of the candidates, please
send mail to jutta@coyote.
SPECIAL ROBOTICS SEMINAR
Speaker: Zexiang Li
U.C. Berkeley
Title: DEXTROUS ROBOT HANDS: PLANNING AND CONTROL
Date: Friday, March 17, 1989
Time: 3:30 p.m.
Place: Cedar Hall Conference Room
ABSTRACT
To understand the operation of a dextrous robot hand, we need to solve the
following two important problems:
(1) autonomously adjusting grasp configurations without dropping the
object and
(2) task execution by coordinated manipulation of the fingers
with appropriate contact models.
Since rolling constraint and twirling operations are involved in the first
problem, a hand manipulation system is a non-holonomic system. Consequently,
the corresponding planning problem becomes very difficult.
In this talk, we first define a grasp configuration and the above two
canonical problems. Then we study motion of two objects under rolling
constraint. For this, we set up the problem so that Frobenius-Lie theory
can be used to verify the existence of motion between two contact
configurations, and a solution will be constructed based on the contact
geometries, should a solution exist. Our results show that a ball
is able to reach any contact configurations (by rolling) relative to the
plane, but not to another ball of the same radius. Finally, we propose a set
of control laws for coordinated manipulation by the fingers under three
contact models: (a) fixed points of contact, (b) rolling contact and
(c) rigid contact. The control law achieves not only the desired trajectory
of the object but also the desired internal grasp force. Simulation and
experimental results of these control laws will also be given.
SPECIAL ROBOTICS SEMINAR
Speaker: Michael Erdmann
M.I.T.
Title: MOTION PLANNING WITH UNCERTAINTY: A PROBABILISTIC APPROACH
Date: Monday, March 20, 1989
Time: 4:00 p.m.
Place: Cedar Hall Conference Room
Abstract to follow.
∂16-Mar-89 0958 CL-Compiler-mailer Re: issue COMPILED-FUNCTION-REQUIREMENTS, version 4
Received: from Aquinas.Think.COM by SAIL.Stanford.EDU with TCP; 16 Mar 89 09:58:47 PST
Received: from OCCAM.THINK.COM by Aquinas.Think.COM via INTERNET with SMTP id 124445; 16 Mar 89 12:31:52 EST
Date: Thu, 16 Mar 89 12:31 EST
From: Barry Margolin <barmar@FAFNIR.THINK.COM>
Subject: Re: issue COMPILED-FUNCTION-REQUIREMENTS, version 4
To: masinter.pa@xerox.com
cc: cl-compiler@sail.stanford.edu, X3J13@sail.stanford.edu
In-Reply-To: <890316-062330-3633@Xerox>
Message-ID: <19890316173142.7.BARMAR@OCCAM.THINK.COM>
I'll just reiterate something I said at one of the meetings. One
portable use I can think of for the COMPILED-FUNCTION type is as a
declaration to allow compiler optimization. If a function knows (or
requires) that a parameter is a compiled function it can declare that
and the implementation may be able to optimize the FUNCALL better.
Another thing I just thought of is something like:
(when (typep f '(and function (not compiled-function)))
(setq f (compile nil f)))
This doesn't actually work because COMPILE isn't required to accept
lexical closures (well, at least it doesn't accept them in Genera 7.2),
but they satisfy the type specifier, but it would be nice if there were
a standard set of primitives that would allow one to write something
that does what the above tries to do.
barmar
∂16-Mar-89 1040 X3J13-mailer Re: Issue ERROR TERMINOLOGY
Received: from NSS.Cs.Ucl.AC.UK by SAIL.Stanford.EDU with TCP; 16 Mar 89 10:40:10 PST
Received: from aiai.edinburgh.ac.uk by NSS.Cs.Ucl.AC.UK via Janet with NIFTP
id aa08149; 16 Mar 89 18:31 GMT
Date: Thu, 16 Mar 89 18:29:06 GMT
Message-Id: <2499.8903161829@subnode.aiai.ed.ac.uk>
From: Jeff Dalton <jeff%aiai.edinburgh.ac.uk@NSS.Cs.Ucl.AC.UK>
Subject: Re: Issue ERROR TERMINOLOGY
To: Dick Gabriel <RPG@sail.stanford.edu>, x3j13@sail.stanford.edu
In-Reply-To: Dick Gabriel's message of 15 Mar 89 1446 PST
> Is it the case that ``fatal'' is well-defined? If so, ``harmless'' is
> simply something that is not fatal. According to my mathematics
> education, that renders the term well-defined.
"Harmless" does not mean "not fatal".
"Undefined" means the standard imposes no constraints (and irrational
implementors can do whatever they want and still have a conforming
implementation). But "unspecified" imposes some constraints. I
didn't find "harmless" a sufficiently enlightening description of
these constraints. If no one feels inclined to suggest something
better now, I am happy to wait and see how "unspecified" gets used in
the standard before deciding whether or not "harmless" works.
∂16-Mar-89 1044 X3J13-mailer Issue: CLOSED-STREAM-OPERATION (Version 7)
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 16 Mar 89 10:44:15 PST
Received: from Semillon.ms by ArpaGateway.ms ; 16 MAR 89 09:51:25 PST
Date: 16 Mar 89 09:43 PST
From: masinter.pa@Xerox.COM
Subject: Issue: CLOSED-STREAM-OPERATION (Version 7)
To: x3j13@sail.stanford.edu
line-fold: NO
Message-ID: <890316-095125-4330@Xerox>
Version 5 of issue CLOSED-STREAM-OPERATION was brought up at
the January 1989 meeting.
The proposal CLOSED-STREAM-FUNCTIONS:ALLOW-INQUIRY was amended at
that meeting; the amended version passed.
Version 5 said
"If CLOSE is called on a stream which is open, it will return T.
However, if CLOSE is called on a stream which is closed, it
will succeed without error but the return value is not specified."
The amendment was to change the wording so that CLOSE would
return NIL if given a closed stream, viz:
" If CLOSE is called on a stream which is open, it will return T.
However, if CLOSE is called on a stream which is closed, it
will succeed with out error but the return value will be NIL."
Kent Pitman has made an argument that the amendment
was ill-considered.
I find his argument convincing.
I think procedurally we can vote to reconsider &
revoke the amendment, i.e., revert to Version 5.
Excerpts from the discussion:
Return-Path: <KMP@STONY-BROOK.SCRC.Symbolics.COM>
Received: from STONY-BROOK.SCRC.Symbolics.COM ([128.81.41.144]) by Xerox.COM ; 06 FEB 89 10:12:19 PST
Received: from BOBOLINK.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 534168; Mon 6-Feb-89 13:11:33 EST
Date: Mon, 6 Feb 89 13:11 EST
From: Kent M Pitman <KMP@STONY-BROOK.SCRC.Symbolics.COM>
...
I think one ought not be able to depend
on the result in this case [of CLOSE of a closed stream]
because implementations might reasonably differ
about whether the first CLOSE really closed the stream. As such,
(LIST (CLOSE *TERMINAL-IO*) (CLOSE *TERMINAL-IO*))
might reasonably return (T T) or (T NIL), for example, depending on whether
the implementation represents the concept of `open-ness' for all streams.
The same is true for string streams.
The issue is even weirder for composite (eg, broadcast) streams where some
streams are initially open and others are not, since I think we have no
clear theory of whether such a stream is opened or closed.
...
Return-Path: <KMP@STONY-BROOK.SCRC.Symbolics.COM>
Received: from STONY-BROOK.SCRC.Symbolics.COM ([128.81.41.144]) by Xerox.COM ; 15 FEB 89 07:04:19 PST
Received: from BOBOLINK.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 539477; Wed 15-Feb-89 10:03:58 EST
Date: Wed, 15 Feb 89 10:03 EST
From: Kent M Pitman <KMP@STONY-BROOK.SCRC.Symbolics.COM>
What's weird about this whole thing is that CLOSE-CONSTRUCTED-STREAM
talks about the effect of most operations being `unspecified' after
CLOSE.
Unless you intend it to be an implication of CLOSE-CONSTRUCTED-STREAM
that you actually carry a CLOSED-P bit around in every stream so you
can tell if the stream is open or not and return the right value from
CLOSE, then it's a bad idea to legislate that CLOSE returns a certain
value, because you can't really guarantee that value.
If you do intend me to carry around a CLOSED-P bit, why bother to
claim that the effect of I/O to the stream after it's closed is
`unspecified.' My assumption before was that it was unspecified in
case I want to define it, but suddenly it sounds like I'm not really
allowed to extend it -- I'm just permitted to optimize out the error
checks for the sake of efficiency. If this is so, why not just put it
in the domain of `should signal' so that at least the users could get
some mileage out of it because my implementation pretty much has its
hands tied at this point.
We get calls all the time from users who claim we're in violation of
things that really CLtL leaves vague. This will be such a thing given
the way it's all worded.
Here I am implementing CLOSE. I -really- want to implement it correctly.
I am willing to do anything necessary to make it return the right value
as long as what I do is something that is backed up in writing.
Here you are designing CL -- creating the writing that will back me up.
If you cannot show me how to write CLOSE in a way so that I can simply
point to a sentence in the manual that explains off my behavior whenever
anyone complains so I can get them off the phone and get back to work,
then you owe me a sentence in the manual that says that I'm entitled to
do whatever I feel like and the user cannot depend on it.
False security is worse than no security at all.
∪End of message∪
∂16-Mar-89 1051 X3J13-mailer Re: Issue ERROR TERMINOLOGY, dpANS C
Received: from multimax.encore.com by SAIL.Stanford.EDU with TCP; 16 Mar 89 10:51:31 PST
Received: from mist.encore.COM by multimax.encore.com with SMTP (5.61/25-eef)
id AA06620; Thu, 16 Mar 89 13:49:18 -0500
Received: from localhost by mist. (4.0/SMI-4.0)
id AA07280; Thu, 16 Mar 89 13:47:38 EST
Message-Id: <8903161847.AA07280@mist.>
To: Barry Margolin <barmar@FAFNIR.THINK.COM>
Cc: x3j13@sail.stanford.edu, cl-editorial@sail.stanford.edu
Subject: Re: Issue ERROR TERMINOLOGY, dpANS C
In-Reply-To: Your message of Wed, 15 Mar 89 19:28:00 -0500.
<19890316002837.0.BARMAR@OCCAM.THINK.COM>
Date: Thu, 16 Mar 89 13:47:36 EST
From: Dan L. Pierson <pierson@mist.encore.com>
Date: Wed, 15 Mar 89 19:28 EST
From: Barry Margolin <barmar@FAFNIR.THINK.COM>
A while back I proposed (to the Editorial committee) a definition of
"harmless" that I still like: Equivalent to an arbitrary conforming
program. The point of this definition is to say that the consequences
of the situation are undefined, but it can't do anything that a valid
program can't do (if we had a denotational semantics, or a virtual
machine specification as I believe the C standard does, we could
probably use that to specify this). For instance, it won't result in
pointers to unallocated data being stored in the application's data, or
changing components of function objects. Undefined consequences would
allow such things, and they can result in secondary effects such as
crashing the system or the process dumping core. Note that my
definition includes signaling an error among the harmless consequences.
I like this idea.
∂16-Mar-89 0958 X3J13-mailer Issue: TIME-ZONE-NON-INTEGER, v.1
Received: from Aquinas.Think.COM by SAIL.Stanford.EDU with TCP; 16 Mar 89 09:58:20 PST
Received: from OCCAM.THINK.COM by Aquinas.Think.COM via INTERNET with SMTP id 124441; 16 Mar 89 12:16:49 EST
Date: Thu, 16 Mar 89 12:16 EST
From: Barry Margolin <barmar@FAFNIR.THINK.COM>
Subject: Issue: TIME-ZONE-NON-INTEGER, v.1
To: masinter.pa@xerox.com
cc: x3J13@sail.stanford.edu
In-Reply-To: <890316-070749-3717@Xerox>
Message-ID: <19890316171639.5.BARMAR@OCCAM.THINK.COM>
Date: 16 Mar 89 07:07 PST
From: masinter.pa@xerox.com
Proposal (TIME-ZONE-NON-INTEGER:ALLOW)
Specify that the time zone part of Decoded Time is a rational number
(either an integer or a ratio).
Just to show you, when I become a billionaire I'll form my own country
and give it an irrational time zone (e in the winter, sqrt(2) in the
summer).
Seriously, is there any particular reason not to allow any non-complex
number as a time zone?
barmar
∂16-Mar-89 1044 X3J13-mailer Issue: COERCE-INCOMPLETE (Version 3)
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 16 Mar 89 10:44:26 PST
Received: from Semillon.ms by ArpaGateway.ms ; 16 MAR 89 09:59:01 PST
Date: 16 Mar 89 09:57 PST
From: masinter.pa@Xerox.COM
Subject: Issue: COERCE-INCOMPLETE (Version 3)
To: x3j13@sail.stanford.edu
line-fold: NO
Message-ID: <890316-095901-4371@Xerox>
There are some additional comments at the end.
!
Issue: COERCE-INCOMPLETE
Reference: COERCE (p50)
Category: ADDITION/CHANGE
Edit history: Version 1 of COERCE-INCOMPLETE, 26-Feb-88 by M. Ida
Version 1 of COERCE-FROM-TYPE, 20-Jun-88 by Pitman
Version 2 of COERCE-INCOMPLETE, 21-Nov-88 by Pitman
(consolidate previous two proposals)
Version 3 of COERCE-INCOMPLETE, 07-Mar-89 by Pitman
(eliminate unpopular proposal, two new options)
Problem Description:
COERCE is difficult to extend because ambiguities arise about the
source type of the coercion.
For example, if the symbol STRING were permitted as a second argument
to coerce, as in (COERCE NIL 'STRING), there would be two posssible
return values: "" or "NIL". The choice would be arbitrary and would
have to be specified by the documentation. No matter which was chosen,
it would probably turn out to be a problem for some applications at
some times.
Another example is (COERCE (CHAR-CODE #\A) 'STRING). This might
return the same as (FORMAT NIL "~D" (CHAR-CODE #\A)) -- "65" in
most ASCII-based implementations -- or it might return "A". Again,
the choice would be arbitrary.
There is clear desire on the part of the user community to lift some of
the existing restrictions on arguments to COERCE, but because of legitimate
concerns about ambiguities, the Common Lisp designers have thus far
refused to do so.
Unfortunately, the failure of COERCE to handle these cases means it is
very difficult to learn to use COERCE. And the fact that COERCE is not
easily learned contributes to difficulty in learning Common Lisp because
instead of a single coercion operator with general purpose semantics, a
number of very special purpose coercion operators must be learned instead.
Some middle ground needs to be found, which neither compromises the
clear semantics and portable nature of COERCE nor complicates COERCE
in a way that makes it unlearnable.
Also, some people have expressed a desire for COERCE to be more
`symmetric.' Usually they seem to mean that they want it to be the case
that if (COERCE x y) works, then (COERCE (COERCE x y) (TYPE-OF x))
should also work. Although this is not an essential desire, it would
certainly be nice to achieve.
Proposal (COERCE-INCOMPLETE:LIMITED-ARBITRARY-EXTENSION):
Define COERCE to accept the following equivalences:
1. (COERCE x 'STRING) == (STRING x)
2. (COERCE x 'PATHNAME) == (PATHNAME x)
3. (COERCE x 'RATIONAL) == (RATIONAL x)
Clarify that
4. (COERCE x 'FLOAT) == (FLOAT x)
Rationale:
Many users think of STRING, for example, as ``the way to coerce
something to a string'' and are baffled why COERCE and STRING
disagree on how to do this.
Such users think that if there's a moral battle to be waged
over how to coerce an object to a STRING, the battle has already
been lost by defining the STRING function -- that whatever
decision is made for STRING must also apply to COERCE for the
sake of simplicity.
Similar arguments can be made for PATHNAME, FLOAT, and RATIONAL.
Proposal (COERCE-INCOMPLETE:DEPRECATE):
Deprecate COERCE.
Rationale:
COERCE is not functionally necessary -- no operation that it does
cannot be done in some other way. As such, it is basically just
a matter of syntactic convenience, and perhaps isn't worth having
around if it will be the subject of endless debate. Deprecating
it would allow us to declare this issue a `dead end' and focus our
attention on matters of greater substance.
Current Practice:
Presumably No one implements either of the proposals at this time,
since none are compatible with CLtL.
Cost to Implementors:
COERCE: Small to moderate.
DEPRECATE: None.
Cost to Users:
COERCE: This is an incompatible change. (COERCE 'NIL 'STRING) => ""
but (STRING NIL) => "NIL". How many applications are impacted by
this change is not clear. It would be straightforward to shadow
COERCE with an alternate definition that did the old thing in
cases where people were worried. Once such cases have been
identified, rewriting
(COERCE X 'STRING)
as
(IF X (COERCE X 'STRING) "")
will suffice in most cases.
DEPRECATE: No immediate work would be needed, although many maintained
applications would get upgraded in order to use the primitives that
are `in vogue.'
Cost of Non-Adoption:
People will continue to see and debate the issues alluded to in
the Problem Description.
Benefits:
The cost of Non-Adoption will be avoided.
Aesthetics:
COERCE: Many people will probably see the idea of making
COERCE consistent with STRING, PATHNAME, FLOAT, and
RATIONAL as a clear improvement -- possibly outweighing
the costs of both an incompatible change and a decision
to arbitrarily favor one treatment over the other.
DEPRECATE: Some may take the deprecation of COERCE as an
aesthetic improvement because it eliminates the need to
debate this issue further. Others may see the
``de-centralization'' of coercion as a step backward.
Discussion:
Pitman supports COERCE-INCOMPLETE:LIMITED-ARBITRARY-EXTENSION.
Hopefully Moon and Masinter support it, too, since it's
basically patterned after a bunch of mail they were sending
back and forth.
A proposal to extend COERCE to permit a ``view type'' argument
was considered and rejected as too extreme to consider seriously
in the timeframe available.
Pierson suggests that COERCE ought to be a candidate for
generic function status.
Pitman thinks that making [two-argument] COERCE generic would
be a -very- bad idea but believes that his earlier proposal
involving a third `view type' argument might be able to
accomodate such extension.
!
Additional comments:
"... The thing about
COERCE-INCOMPLETE:LIMITED-ARBITRARY-EXTENSION that strikes fear
into my heart is that it wipes out CLtL's simple statement that
any sequence type may be converted to any other sequence type,
and starts people asking questions like does
(coerce nil '(vector character)) => "" or "NIL"?
... I'm inclined to vote
no on both proposals and keep the (unsatisfactory) status quo."
"I believe that any change to the status quo is incomplete without
providing a coercion mechanism whose "viewpoint" is that of a sequence.
That is effectively what the current COERCE is, overloaded with those
types which do not conflict with SEQUENCE.
Because of the problem of differing viewpoints, I'm inclined to think
that COERCE should be shrunk down to only being a sequence coercion
function, and all other coercions should be handled by the appropriate
functions."
∂16-Mar-89 1045 X3J13-mailer DRAFT Issue: CONDITION-RESTARTS (Version 1)
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 16 Mar 89 10:44:53 PST
Received: from Semillon.ms by ArpaGateway.ms ; 16 MAR 89 10:30:53 PST
Date: 16 Mar 89 10:24 PST
From: masinter.pa@Xerox.COM
Subject: DRAFT Issue: CONDITION-RESTARTS (Version 1)
To: x3j13@SAIL.Stanford.EDU
line-fold: NO
Message-ID: <890316-103053-4587@Xerox>
There will possibly be a new version of this issue available
at the meeting. Additional comments excerpted at the end...
!
Issue: CONDITION-RESTARTS
Forum: Cleanup
References: Common Lisp Condition System
Category: CHANGE
Edit history: 18-Jan-89, Version 1 by Pitman
Problem Description:
It was noted in the condition system document itself, and many people have
complained privately, that a major weakness of the condition system is the
inability to know whether a particular restart is associated with a
particular signalling action.
The problem being addressed shows itself in situations involving recursive
errors. The programmer wants to make sure that a restart obtained from
FIND-RESTART or COMPUTE-RESTARTS is in fact present for the purpose of
handling some particular error that he is actively focussed on, and not
for some other (outer) error which he was not actively trying to handle.
Proposal (CONDITION-RESTARTS:PERMIT-ASSOCIATION):
1. Define that it is an error for SIGNAL to be called on a condition
more than once.
2. Introduce a function COPY-CONDITION:
COPY-CONDITION condition [Function]
Returns a copy of the given condition.
3. Introduce a macro WITH-CONDITION-RESTARTS which can be used to
dynamically bind the association between a condition and a set
of restarts.
WITH-CONDITION-RESTARTS (condition-form restarts-form) &BODY forms
[Macro]
Evaluates CONDITION-FORM and RESTARTS-FORM, the results of which
should be a condition and a list of restarts, respectively. Then
evaluates the body of forms in implicit-progn style, returning the
last form. While in the dynamic context of the body, the function
COMPUTE-RESTARTS will, when given an argument that was the result
of evaluating the CONDITION-FORM, return the list of restarts that
was the result of evaluating the RESTARTS-FORM.
Only the innermost call to WITH-CONDITION-RESTARTS with a given
condition is relevant. In this way, the set of restarts associated
with a given condition can be dynamically extended or restricted.
Usually this macro is not used explicitly in code, since
SIGNAL-WITH-RESTARTS and ERROR-WITH-RESTARTS handle most of the
common cases in a way that is syntactically more concise.
4. Extend COMPUTE-RESTARTS, FIND-RESTART, ABORT, CONTINUE, USE-VALUE,
and STORE-VALUE to permit an optional condition object as an argument.
When the extra argument is not supplied, these functions behave
exactly as defined before. (Restarts are considered without
prejudice to whether they have been associated with conditions.)
When this argument is supplied, only restarts with the associated
with the given condition are considered. In all other respects, the
behavior is the same.
Passing a condition argument of NIL is treated the same as passing
no condition argument.
5. Add two new macros SIGNAL-WITH-RESTARTS and ERROR-WITH-RESTARTS:
SIGNAL-WITH-RESTARTS condition &rest restart-clauses [Macro]
This does several things:
1. It enters a context in which the indicated RESTART-CLAUSES
are available. They have the same form as the clauses in
a RESTART-CASE.
2. It evaluates CONDITION expression. [This is done after the
restarts are instantiated because the restarts are probably
still useful in the debugger if an error occurs during the
evaluation of the condition.] The result of the evaluation
must be a condition object.
3. It associates the condition which resulted from the evaluation
with the restarts established in step 1, using the equivalent
of WITH-CONDITION-RESTARTS.
4. It calls SIGNAL on the same condition.
ERROR-WITH-RESTARTS condition &rest restart-clauses [Macro]
Like SIGNAL-WITH-RESTARTS but uses ERROR rather than SIGNAL
in step 4.
6. Define that Common Lisp macros such as CHECK-TYPE, which are defined
to signal and to make restarts available, use the equivalent of
WITH-CONDITION-RESTARTS to associate the conditions they signal with
the defined restarts, so that users can make reliable tests not only
for the restarts being available, but also for them being available
for the right reasons.
Rationale:
1. The ability to recycle a condition object (including the ability to
resignal a condition) means that the same condition object might be
simultaneously active for two different purposes. In such a case,
no test (not even EQ) would suffice to determine whether a particular
restart belonged with a particular signalling action, since the
condition could not uniquely identify the signalling action. By saying
that a given condition may only be signalled once, we guarantee that
the condition can serve as a unique identifier for a signalling action.
2. Since there may now be some code which has begun to rely on the ability
to re-signal a condition, COPY-CONDITION will help to make this
transition easier. Instead of
(SIGNAL already-signalled-condition)
one can write:
(SIGNAL (COPY-CONDITION already-signalled-condition))
3. This is is the minimal level of support needed to set up an
association between restarts and conditions.
4. This provides a natural interface for retrieving and using the
information about the associations between conditions and restarts.
5. This provides a natural interface for the most common case of
wanting to signal a restart with some associated conditions.
Test Case:
(HANDLER-BIND ((ERROR #'(LAMBDA (C) (SIGNAL C)))) (SIGNAL "Test"))
was permissible, but this proposal makes it an error.
(DEFUN TEST-CONDITION-STUFF (OFFER-EXTRA-RESTART
USE-CONDITION-ARGUMENT
USE-FOUND-RESTART)
(HANDLER-BIND ((CONDITION
#'(LAMBDA (C)
(LET ((R0 (FIND-RESTART 'USE-VALUE))
(R1 (IF USE-CONDITION-ARGUMENT
(FIND-RESTART 'USE-VALUE C)
(FIND-RESTART 'USE-VALUE))))
(IF (AND R1 USE-FOUND-RESTART)
(INVOKE-RESTART R1 (EQ R0 R1))
(USE-VALUE (EQ R0 R1)))))))
(HANDLER-BIND ((CONDITION
#'(LAMBDA (C)
(USE-VALUE
(IF OFFER-EXTRA-RESTART
(WITH-RESTARTS
(SIGNAL (COPY-CONDITION C))
(USE-VALUE (X) (LIST 'EXTRA X)))
(SIGNAL (COPY-CONDITION C)))))))
(SIGNAL-WITH-RESTARTS (MAKE-CONDITION 'SIMPLE-CONDITION
:FORMAT-STRING "Test")
(USE-VALUE (X) X)))))
Previously, this was an error because it uses non-existent primitives, but
if you assume that
- COPY-CONDITION is implemented in the `obvious' way
- SIGNAL-WITH-RESTARTS just uses WITH-RESTARTS and SIGNAL
- FIND-RESTART ignores its last argument
in the obvious naive ways, it is possible to compare the old and new behavior:
Current Proposed
(TEST-CONDITION-STUFF NIL NIL NIL) => T T
(TEST-CONDITION-STUFF NIL NIL T) => T T
(TEST-CONDITION-STUFF NIL T NIL) => T T
(TEST-CONDITION-STUFF NIL T T) => T T
(TEST-CONDITION-STUFF T NIL NIL) => T (EXTRA T)
(TEST-CONDITION-STUFF T NIL T) => T (EXTRA T)
(TEST-CONDITION-STUFF T T NIL) => T (EXTRA NIL)
(TEST-CONDITION-STUFF T T T) => T NIL
Current Practice:
Presumably no implementation does this yet.
Cost to Implementors:
Several small, relatively modular changes.
Cost to Users:
Except for the change to the recyclability of restarts, this change is
upward compatible.
Probably very few if any users currently take advantage of recycling
restarts, so the cost to users of this change is very slight.
Even in the case where recycling is used, a straightforward rewrite in
terms of COPY-CONDITION is probably feasible.
Cost of Non-Adoption:
Use of restarts would not be nearly as reliable.
Benefits:
It would be possible to write code which was considerably more robust.
Aesthetics:
Some people might consider this proposal to make things slightly better
because it avoids some ambiguities. Others might consider it to make
things slightly worse because it adds additional complexity.
Discussion:
Pitman thinks a change of this sort is important.
!
"CONDITION-RESTARTS:PERMIT-ASSOCIATION looks fine to me.
It would certainly clean things up in some code I'm working on.."
"I strongly favor this proposal; it removes the major objection that I
had to the CL condition system as it developed.
However, I don't favor the COPY-CONDITION function. I don't think it's
necessary. More importantly, you have not proposed any concrete specification
of what it does, and unless someone does, it cannot be included in the
language. Fortunately, I think we can just drop it, as I doubt that any
portable program would use it in any significant way that could not just
as well be done with a tiny amount of code using other existing primitives.
[generally agreed]
" .. how (should) the condition/restart association
might be implemented -- is some kind of alist structure held by a
special variable what was intended, or ought the condition have a
restarts slot? ... it's pretty obvious that the relation should be externally
represented. It's important that the association not be done by a slot
in the condition because if you carry around the condition object after
you're done signalling, you don't want it to contain useless and/or
misleading information about restarts that no longer exist."
"... syntax to SIGNAL-WITH-RESTARTS and
ERROR-WITH-RESTARTS should be:
SIGNAL-WITH-RESTARTS signal-argument-list &rest restart-clauses
ERROR-WITH-RESTARTS signal-argument-list &rest restart-clauses
so that you would write
(SIGNAL-WITH-RESTARTS ('FOOD-COLOR-ERROR :FOOD 'LETTUCE :COLOR 'PINK)
...restart clauses...)
rather than
(SIGNAL-WITH-RESTARTS (MAKE-CONDITION 'FOOD-COLOR-ERROR
:FOOD 'LETTUCE :COLOR 'PINK)
...restart clauses...)
If you wanted to use MAKE-CONDITION, you would then write:
(SIGNAL-WITH-RESTARTS ((MAKE-CONDITION 'FOOD-COLOR-ERROR
:FOOD 'LETTUCE :COLOR 'PINK))
...restart clauses...)
The advantage of what he proposes is that you could write
(SIGNAL-WITH-RESTARTS ("Bad ~S color" 'FOOD)
...restart clauses...)
and a condition object would be created implicitly as with SIGNAL. A
possible disadvantage is that
(SIGNAL-WITH-RESTARTS (FOO BAR BAZ)
...restart clauses...)
might look to someone like the FOO in (FOO BAR BAZ) named a function
rather than a variable. "
"... even better would be
(WITH-CONDITION-RESTARTS signal-form &rest restart-clauses)
where signal-form must be an invocation of SIGNAL, ERROR, WARN, or
perhaps a few others, or a macro that expands into such an invocation.
WITH-CONDITION-RESTARTS must signal an error at all levels of safety if
it does not recognize the signal-form. This is "weird" because it uses
a form for something other than evaluation (but not unprecedented; this
is exactly what SETF does). The advantage is that it just nests with an
existing syntax instead of inventing a new, awkward syntax.
Note that I stole the "good name" WITH-CONDITION-RESTARTS for this
commonly used syntax. The less commonly used primitive that just sets
up the restarts without signalling doesn't need as good a name."
"... the syntax for WITH-CONDITION-RESTARTS should be
WITH-CONDITION-RESTARTS condition-form restarts-form &BODY forms
rather than
WITH-CONDITION-RESTARTS (condition-form restarts-form) &BODY forms
which it is now. Does anyone else have an opinion?
This is probably a good idea. I'd probably name this one
WITH-CONDITION-RESTARTS-INTERNAL. But are we sure that this operation
needs to be named in the standard
"
∂16-Mar-89 1117 CL-Compiler-mailer issue COMPILE-ENVIRONMENT-CONSISTENCY, version 4
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 16 Mar 89 11:16:55 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 558656; Thu 16-Mar-89 14:13:55 EST
Date: Thu, 16 Mar 89 14:13 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: issue COMPILE-ENVIRONMENT-CONSISTENCY, version 4
To: Aaron Larson <alarson@src.honeywell.com>
cc: cl-compiler@sail.stanford.edu, x3j13@sail.stanford.edu
In-Reply-To: <8903160338.AA16529@pavo.src.honeywell.com>
Message-ID: <19890316191343.7.MOON@EUPHRATES.SCRC.Symbolics.COM>
Date: Wed, 15 Mar 89 21:38:06 CST
From: alarson@src.honeywell.com (Aaron Larson)
If we permit the compiler to signal warnings for functions where the
compile-time environment signature is different from the function call
being compiled, why do we prohibit it for generic functions?
I would say that what CLOS-MACRO-COMPILATION (which I have not reviewed yet)
is clearly incorrect. Perhaps CLOS-MACRO-COMPILATION was trying only to rule
out signalling an error for a lack of lambda-list congruency between
compile-time and run-time, but went overboard and ruled out warnings
as well. I think warnings in this circumstance can be desirable, but
errors are certainly wrong.
∂16-Mar-89 1146 X3J13-mailer Issue ERROR TERMINOLOGY, dpANS C
Received: from Think.COM by SAIL.Stanford.EDU with TCP; 16 Mar 89 11:44:03 PST
Received: from fafnir.think.com by Think.COM; Thu, 16 Mar 89 14:40:15 EST
Return-Path: <gls@Think.COM>
Received: from verdi.think.com by fafnir.think.com; Thu, 16 Mar 89 14:41:04 EST
Received: by verdi.think.com; Thu, 16 Mar 89 14:37:31 EST
Date: Thu, 16 Mar 89 14:37:31 EST
From: Guy Steele <gls@Think.COM>
Message-Id: <8903161937.AA05048@verdi.think.com>
To: barmar@Think.COM
Cc: jeff%aiai.edinburgh.ac.uk@NSS.Cs.Ucl.AC.UK, cperdue@sun.com,
@decwrl.dec.com:chapman@aitg.dec, @sun.com:kempf@clam,
@sun.com:peck@clam, @sun.com:sgadol@clam, x3j13@sail.stanford.edu,
cl-editorial@sail.stanford.edu, @sail.stanford.edu:rpg@lucid.com
In-Reply-To: Barry Margolin's message of Wed, 15 Mar 89 19:28 EST <19890316002837.0.BARMAR@OCCAM.THINK.COM>
Subject: Issue ERROR TERMINOLOGY, dpANS C
Date: Wed, 15 Mar 89 19:28 EST
From: Barry Margolin <barmar@Think.COM>
A while back I proposed (to the Editorial committee) a definition of
"harmless" that I still like: Equivalent to an arbitrary conforming
program ...
Yes, this definition allows such situations to result in playing chess,
and if the computer is controlling a bomb silo it could also result in
starting World War III. I don't think a general definition of
"unspecified" can possibly disallow these things. We might want to
rethink the applicability of the word "harmless" in this case....
How about renaming "harmless" to be "arbitrary"?
--Guy
∂16-Mar-89 1205 X3J13-mailer Issue: TIME-ZONE-NON-INTEGER, v.1
Received: from Think.COM by SAIL.Stanford.EDU with TCP; 16 Mar 89 12:03:57 PST
Received: from fafnir.think.com by Think.COM; Thu, 16 Mar 89 14:41:11 EST
Return-Path: <gls@Think.COM>
Received: from verdi.think.com by fafnir.think.com; Thu, 16 Mar 89 14:42:22 EST
Received: by verdi.think.com; Thu, 16 Mar 89 14:39:11 EST
Date: Thu, 16 Mar 89 14:39:11 EST
From: Guy Steele <gls@Think.COM>
Message-Id: <8903161939.AA05061@verdi.think.com>
To: barmar@Think.COM
Cc: masinter.pa@xerox.com, x3J13@sail.stanford.edu
In-Reply-To: Barry Margolin's message of Thu, 16 Mar 89 12:16 EST <19890316171639.5.BARMAR@OCCAM.THINK.COM>
Subject: Issue: TIME-ZONE-NON-INTEGER, v.1
Date: Thu, 16 Mar 89 12:16 EST
From: Barry Margolin <barmar@Think.COM>
Date: 16 Mar 89 07:07 PST
From: masinter.pa@xerox.com
Proposal (TIME-ZONE-NON-INTEGER:ALLOW)
Specify that the time zone part of Decoded Time is a rational number
(either an integer or a ratio).
Just to show you, when I become a billionaire I'll form my own country
and give it an irrational time zone (e in the winter, sqrt(2) in the
summer).
Seriously, is there any particular reason not to allow any non-complex
number as a time zone?
barmar
When you become a billionaire, you'll probably find that
you get a better approximation to e or sqrt(2) with a moby
bignum rational than with a float.
--Quux
∂16-Mar-89 1212 X3J13-mailer Issue: COPY-SYMBOL-COPY-PLIST, v.1
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 16 Mar 89 12:12:12 PST
Received: from Cabernet.ms by ArpaGateway.ms ; 16 MAR 89 11:27:49 PST
Date: 16 Mar 89 11:27 PST
From: masinter.pa@Xerox.COM
Subject: Issue: COPY-SYMBOL-COPY-PLIST, v.1
To: x3j13@sail.stanford.edu
line-fold: NO
Message-ID: <890316-112749-4871@Xerox>
The only discussion on this issue was whether it was necessary
to clarify (some thought it was) and whether a more general
"copy the list means COPY-LIST" was necessary (probably not.)
There was no controversy on the proposal itself.
!
Issue: COPY-SYMBOL-COPY-PLIST
References: COPY-SYMBOL (p 169), COPY-LIST (p 268), COPY-TREE (p
269).
Category: CLARIFICATION
Edit history: 10-Jan-89, Version 1 by Margolin
Problem Description:
The description of COPY-SYMBOL, where the COPY-PROPS optional argument
is non-NIL, says that a copy of the property list is used as the new
symbol's property list. However, there are several ways in which a list
may be copied, most notably COPY-LIST and COPY-TREE, and the description
doesn't say which mechanism should be used.
Proposal (COPY-SYMBOL-COPY-PLIST:COPY-LIST)
Clarify that when COPY-SYMBOL copies the property list of the symbol, it
is as if (COPY-LIST (SYMBOL-PLIST sym)) were used as the new symbol's
property list.
Rationale:
COPY-LIST is the simplest list-copying primitive. The result of this
copy is that GET returns EQL results for the two symbols until one of
the property lists is altered, but altering either of the property lists
doesn't affect the other. This is current practice in the
implementations I tested, and probably what most users assume.
Current Practice:
Symbolics Genera and Sun Common Lisp currently implement this. I
suspect most others do, too.
Cost to Implementors:
Little or none.
Cost to Users:
None unless they've been assuming some other type of copy.
Benefits:
Less ambiguity.
Aesthetics:
Well, I like it.
∂16-Mar-89 1221 X3J13-mailer Issue DESCRIBE-UNDERSPECIFIED, v.1
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 16 Mar 89 12:20:58 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 558750; Thu 16-Mar-89 15:18:32 EST
Date: Thu, 16 Mar 89 15:18 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: Issue DESCRIBE-UNDERSPECIFIED, v.1
To: masinter.pa@Xerox.COM, Kim A. Barrett <IIM@ECLA.USC.EDU>
cc: x3j13@SAIL.STANFORD.EDU
In-Reply-To: <890316-082029-3881@Xerox>
Message-ID: <19890316201824.3.MOON@EUPHRATES.SCRC.Symbolics.COM>
Line-fold: No
I think this is unnecessary, but I do not strongly oppose it.
The proposed division of labor between the DESCRIBE function and
the DESCRIBE-OBEJCT generic function could be implemented by
an :AROUND method for the existing DESCRIBE generic function.
The claim that binding *STANDARD-OUTPUT* is dangerous in the
presence of interrupts is false, since many things bind
*STANDARD-OUTPUT* and any reasonable interactive interrupt
handler must rebind the standard streams, the print control
variables, etc.
I don't strongly oppose this since it might be worthwhile just
for the symmetry with the PRINT-OBJECT generic function.
∂16-Mar-89 1241 X3J13-mailer Issue DYNAMIC-EXTENT: a remark
Received: from Think.COM by SAIL.Stanford.EDU with TCP; 16 Mar 89 12:41:00 PST
Received: from fafnir.think.com by Think.COM; Thu, 16 Mar 89 15:36:50 EST
Return-Path: <gls@Think.COM>
Received: from verdi.think.com by fafnir.think.com; Thu, 16 Mar 89 15:38:04 EST
Received: by verdi.think.com; Thu, 16 Mar 89 15:34:53 EST
Date: Thu, 16 Mar 89 15:34:53 EST
From: Guy Steele <gls@Think.COM>
Message-Id: <8903162034.AA05881@verdi.think.com>
To: masinter.pa@xerox.com
Cc: X3J13@sail.stanford.edu
In-Reply-To: masinter.pa@xerox.com's message of 16 Mar 89 11:59 PST <890316-120057-5042@Xerox>
Subject: Issue DYNAMIC-EXTENT: a remark
This is the last paragraph of the proposal DYNAMIC-EXTENT:NEW-DECLARATION:
The meaning of a dynamic extent declaration is that execution of the
forms in the scope of the declaration will not "save" any "proper part"
of the initial value of the declared variable. To "save" an object
means to cause a reference to that object to be accessible outside the
dynamic extent of the form at the beginning of whose body the
declaration appears. An object can be "saved" by storing it with a
side-effecting operation and not replacing it with a different value
before the end of the dynamic extent, by using it as a component of a
freshly-allocated object that is itself "saved," by capturing it in a
function closure that is itself "saved," by returning it as a value, or
by transmitting it outside the dynamic extent with THROW. A "proper
part" of an object A is any object that is accessible at the beginning
of the scope of the declaration -only- by applying a function to A or to
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
a "proper part" of A. This means that any objects freshly allocated
during the construction of the initial value of the declared variable,
and not "saved" during the construction of that value, are "proper
parts" and can be allocated on a stack.
I believe that the words indicated above should be replaced by
"the extent of the binding for which the delaration was made".
The reference appears to be to a point in time. Scopes are in space;
the beginning of a scope is a character position in the text (or
something like that). Extents are in time. Is this what you meant?
--Conan the Pedantrian (a.k.a. Guy)
∂16-Mar-89 1212 X3J13-mailer Issue: COPY-SYMBOL-PRINT-NAME, v.2
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 16 Mar 89 12:12:18 PST
Received: from Semillon.ms by ArpaGateway.ms ; 16 MAR 89 11:42:46 PST
Date: 16 Mar 89 11:29 PST
From: masinter.pa@Xerox.COM
Subject: Issue: COPY-SYMBOL-PRINT-NAME, v.2
to: X3J13@sail.stanford.edu
line-fold: NO
Message-ID: <890316-114246-4951@Xerox>
!
Issue: COPY-SYMBOL-PRINT-NAME
References: COPY-SYMBOL (p. 169)
Category: CLARIFICATION
Edit history: 1-MAR-89, Version 1 by Chapman
15-MAR-89, Version 2 by Chapman
Problem Description:
The description of COPY-SYMBOL states that it "returns a new uninterned
symbol with the same print name as sym (its first argument)". The words
"the same as" are not defined in CLtL. Do they mean EQ, EQUAL, ...?
Proposal (COPY-SYMBOL-PRINT-NAME:EQUAL)
The description of COPY-SYMBOL should read as follows:
"COPY-SYMBOL returns an uninterned
symbol whose print name is STRING= to
the print name of the symbol that is the first argument to COPY-SYMBOL."
Suggested implementation note:
The string should not be copied unnecessarily. In this case, the uninterned
symbol's print name would be EQ to the print name of the argument symbol.
Rationale:
This clarification resolves any possibility of ambiguity.
Current Practice:
Medley did this: the symbol names didn't really have a string header and
some symbol names (the "initial symbols" ) had a different place for
storing the actual characters than symbols created later. Unfortunately,
that means that SYMBOL-NAME has to CONS.
It wasn't so much a problem for Interlisp since most of the "string"
functions in Interlisp will take symbols, but in Common Lisp, it is a
performance hit. Poor design, but there's no reason to require SYMBOL-NAME
to return EQ strings.
In this case, the strings aren't EQ even though the string characters are
shared. (Think of it as strings displaced to a shared area.)
Adoption Cost:
?
Benefits:
Less ambiguity in the specification, and potentially more portable code.
Conversion Cost:
?
Aesthetics:
None.
Discussion:
∂16-Mar-89 1212 X3J13-mailer *DRAFT* Issue: DESTRUCTURING-BIND, v.2
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 16 Mar 89 12:12:27 PST
Received: from Semillon.ms by ArpaGateway.ms ; 16 MAR 89 11:49:11 PST
Date: 16 Mar 89 11:46 PST
From: masinter.pa@Xerox.COM
Subject: *DRAFT* Issue: DESTRUCTURING-BIND, v.2
to: X3J13@sail.stanford.edu
line-fold: NO
Message-ID: <890316-114911-4982@Xerox>
This issue is draft; there will hopefully be a new version before
the meeting.
The discussion centers around what lambda-list keywords should be
allowed.
&ENVIRONMENT:
everybody says disallow
&WHOLE:
Moon said allow (the second time.)
NIL:
Moon says allow as a way of ignoring.
KMP says OK, maybe in other places too.
Discussion of IGNORE led to new issue.
&BODY:
KMP makes case for disallowing, but says
allow.
There was some additional discussion that resulted in the
related issues of DEFMACRO-LAMBDA-LIST and IGNORE-VARIABLE.
I'd be happy with a proposal that said NIL is ignored,
&WHOLE and &BODY are allowed, and that &ENVIRONMENT
is disallowed. I'd like to make sure it was consistent
with LOOP.
!
Issue: DESTRUCTURING-BIND
Forum: Cleanup
References: DEFMACRO (CLtL pp145-151),
The LOOP Facility (X3J13/89-004)
Category: ADDITION
Edit history: 24-Jan-89, Version 1 by Pitman
25-Jan-89, Version 2 by Pitman
Status: For Internal Discussion
Problem Description:
Common Lisp programmers have frequently complained that the
destructuring facility used by DEFMACRO is not made available
for use in ordinary programming situations involving list data.
The presence of a destructuring facility in the recently adopted
LOOP facility will be likely to make the absence of a separable
destructuring facility all the more apparent.
Prior to the introduction of LET into Maclisp, many people wrote
their own LET macros. A popular expansion was in terms of a DO
which did not iterate. eg,
(LET ((A 3)) (+ A A)) ==> (DO ((A 3)) () (RETURN (+ A A)))
While this practice `worked,' it was not perspicuous and contributed
substantially to non-readability: not only were the macros hard to
understand, but the surface interface itself was not standardized
and varied in subtle ways. For example, some LET macros allowed GO
statements while others did not.
There is now considerable danger that a lot of people will write
DESTRUCTURING-BIND variants in terms of a LOOP expression that
immediately returns.
(DESTRUCTURING-BIND ((A B) C) (FOO) (LIST A B C))
==> (LOOP FOR ((A B) C) ON (FOO) DO (RETURN (LIST A B C)))
Since the destructuring offered by LOOP is different in subtle ways
from the destructuring offered by DESTRUCTURING-BIND in implementations
offering that primitive natively, gratuitous headaches could result.
Proposal (DESTRUCTURING-BIND:NEW-MACRO):
Provide a macro called DESTRUCTURING-BIND which behaves like the
destructuring bind in DEFMACRO. Specifically...
DESTRUCTURING-BIND lambda-list expression {decl|doc}* {form}* [Macro]
Binds the variables specified in LAMBDA-LIST to the corresponding
values in the tree structure resulting from evaluating EXPRESSION,
then evaluates the FORMS in the body.
Anywhere in the LAMBDA-LIST where a parameter name may appear, and
where ordinary lambda-list syntax (as described in CLtL section 5.2.2)
does not otherwise allow a list, a lambda-list may appear in place of
the parameter name. When this is done, then the argument form that
would match the parameter is treated as a (possibly dotted) list, to
be used as an argument forms list for satisfying the parameters in
the embedded lambda-list.
If any of the lambda list keywords &OPTIONAL, &REST, &KEY,
&ALLOW-OTHER-KEYS and &AUX appears in the lambda list, it is treated
as with any other lambda-list.
If the lambda list keyword &BODY appears, it is treated as a synonym
for &REST.
If the lambda list keyword &WHOLE appears, it must be followed by a
single variable that is bound to the entire expression at the current
level. &WHOLE and the following variable should appear first in the
list, before any other parameter or lambda-list keyword.
It is also permissible for any level of the LAMBDA-LIST to be dotted,
ending in a parameter name. This situation is treaed exactly as if
the aprameter name that ends the list had appeared preceded by &REST
in a proper list. For example, the notation (X Y . Z) is equivalent
to (X Y &REST Z).
If the result of evaluating the expression does not match the
destructuring pattern, the consequences are undefined. Implementations
are not required to signal an error in this case, but neither are they
permitted to extend the behavior by defining it to be harmless.
Clarify that the destructuring done by LOOP does not permit the use of
any lambda-list-keywords. Further clarify that in LOOP, proper lists
are implicitly `&REST var' (where the non-use of var is quietly ignored).
Hence, it is permissible to have:
(LOOP FOR (X Y) ON '(A B C D) COLLECT (CONS X Y)) => ((A . B) (C . D))
but it is not permissible to have:
(DESTRUCTURING-BIND (X Y) '(A B C D) (CONS X Y))
since the pattern does not match. One must instead write:
(DESTRUCTURING-BIND (X Y &REST Z) '(A B C D)
(DECLARE (IGNORE Z))
(CONS X Y))
Test Case:
(DEFUN IOTA (N) (LOOP FOR I FROM 1 TO N COLLECT I)) ;helper
(DESTRUCTURING-BIND ((A &OPTIONAL (B 'BEE)) ONE TWO THREE)
`((ALPHA) ,@(IOTA 3))
(LIST A B THREE TWO ONE))
=> (ALPHA BEE 3 2 1)
Rationale:
The proposal directly addresses the stated problem, and is current practice
in numerous implementations. Our charter effectively dictates that where
feasible we should try to head off the widespread development of uselessly
different variants of commonplace tools.
Current Practice:
Symbolics Genera, Envos Medley, TI Explorer, and Lucid CL all offer
DESTRUCTURING-BIND, though the details vary slightly.
The DESTRUCTURING-BIND offered by Symbolics Genera signals an error if
the pattern is not matched. The TI Explorer version does not.
Cost to Implementors:
Very small. In most cases, it's a matter of renaming and/or exporting an
already existing symbol. In a few cases, a very small amount of
`program interface' code would have to be written.
Cost to Users:
None. This is an upward compatible change.
Cost of Non-Adoption:
Loss of the Benefits and Aesthetics cited below.
Benefits:
Users will get a powerful feature they have asked for on many occassions.
In implementations which `autoload' code, it would be better for this
support to be separable so that people could do DESTRUCTURING-BIND
without demand loading all other LOOP support.
Aesthetics:
Defining this macro centrally for the Common Lisp community will reduce
subtle deviations, which will in turn have positive aesthetic impact.
Discussion:
JonL observes that although LOOP does destructuring, it can't directly
make use of the DESTRUCTURING-BIND interface suggested here.
Pitman and Gray think a facility of this sort is a good idea, though
obviously the details may still need a little fleshing out before the
proposal is ready for vote.
To date, the excuse for not satisfying this request has been a
religious war between factions who want to destructure lists by
writing
(DESTRUCTURING-BIND (var1 var2 var3) exp . body)
and those who want to destructure lists by writing
(DESTRUCTURING-BIND (LIST var1 var2 var3) exp . body)
The advantage of the former approach is that it is notationally
concise for the common case of destructuring a list. The disadvantage
is that it is not extensible to accomodate abstract kinds of
destructuring.
The advantage of the latter approach is that it allows interesting
extensions that accomodate data-hiding, such as:
(DEFMACRO MAKE-FOO (&REST ELEMENTS) `(LIST ,@ELEMENTS))
(DESTRUCTURING-BIND (MAKE-FOO var1 var2 var3) exp . body)
and later the ability to change the representation of a FOO without
updating the associated binding forms. The disadvantage is that it
is more verbose in the common case of destructuring a list, and still
even more verbose for nested lists.
Although destructuring has always existed in DEFMACRO, this has not
been adequate precedence for deciding the outcome of the religious war
because DEFMACRO only needs to destructure programs, and programs are
generally made up only of lists -- not arbitrary user-defined abstract
data types.
∂16-Mar-89 1213 X3J13-mailer
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 16 Mar 89 12:12:39 PST
Received: from Cabernet.ms by ArpaGateway.ms ; 16 MAR 89 12:00:57 PST
Date: 16 Mar 89 11:59 PST
From: masinter.pa@Xerox.COM
To: X3J13@sail.stanford.edu
line-fold: NO
Message-ID: <890316-120057-5042@Xerox>
I think this is one of the more important issues to consider,
in that it is addresses one of the most frequently noted
performance issues in Common Lisp. We've examined a large number
of proposals and alternatives to allow declaration of dynamic extent
in Common Lisp.
!
Forum: CLEANUP
Issue: DYNAMIC-EXTENT
References: Scope and Extent
Category: ADDITION
Edit history: 27-Jun-88, Version 1 by Pitman (as issue STACK-LET)
15-Nov-88, Version 2 by Pitman (issue renamed, major revision)
11-Jan-89, Version 3 by Masinter (Moon's proposal)
Related-Issues: REST-ARGUMENT-EXTENT, WITH-DYNAMIC-EXTENT
Problem Description:
Sometimes a programmer knows that a particular data structure
will have only dynamic extent. In some implementations, it is
possible to allocate such structures in a way that will make them
easier to reclaim than by general purpose garbage collection
(eg, on the stack or in some temporary area). Currently, however,
there is no way to request the use of such an allocation mechanism.
Proposal (DYNAMIC-EXTENT:NEW-DECLARATION):
Introduce a new declaration called DYNAMIC-EXTENT. The arguments to
this declaration are names of variables. The declaration asserts that
the value which is initially held by the indicated variable will have
dynamic extent. [In the case of an iteration variable, the declaration
asserts that on every iteration, the initial value of that variable
for the iteration will have dynamic extent.]
It is permissible for an implementation to simply ignore this declaration.
In implementations which do not ignore it, the compiler (or interpreter)
is free to make whatever optimizations are appropriate given this
information; the most common optimization is to stack-allocate the
initial value of the object. What data types (if any) can have dynamic
extent will can vary from implementation to implementation.
Since stack allocation of the initial value entails knowing at the
object's creation time that the object can be stack-allocated, it is
not generally useful to declare DYNAMIC-EXTENT for variables for
which have no lexically apparent initial value. For example,
(DEFUN F ()
(LET ((X (LIST 1 2 3)))
(DECLARE (DYNAMIC-EXTENT X))
...))
would permit those compilers which wish to do so to stack-allocate the
list in X. However,
(DEFUN G (X) (DECLARE (DYNAMIC-EXTENT X)) ...)
(DEFUN F () (G (LIST 1 2 3)))
could not typically permit a similar optimization in G because it would
be a modularity violation for the compiler to assume facts about G from
within F. Only an implementation which was willing to be responsible for
recompiling F if G's definition changed incompatibly could stack-allocate
the list argument to G in F.
Other interesting cases are:
(PROCLAIM '(INLINE G))
(DEFUN G (X) (DECLARE (DYNAMIC-EXTENT X)) ...)
(DEFUN F () (G (LIST 1 2 3)))
and (DEFUN F ()
(FLET ((G (X) (DECLARE (DYNAMIC-EXTENT X)) ...))
(G (LIST 1 2 3))))
where some compilers might realize the optimization was possible and others
might not.
An interesting variant of this is the so-called `stack allocated rest list'
which can be achieved (in implementations supporting the optimization) by:
(DEFUN F (&REST X)
(DECLARE (DYNAMIC-EXTENT X))
...)
Note here that although the initial value of X is not explicit, the F
function is responsible for assembling the list X from the passed arguments,
so the F function can be optimized by the compiler to construct a
stack-allocated list instead of a heap-allocated list in implementations
which support such.
The meaning of a dynamic extent declaration is that execution of the
forms in the scope of the declaration will not "save" any "proper part"
of the initial value of the declared variable. To "save" an object
means to cause a reference to that object to be accessible outside the
dynamic extent of the form at the beginning of whose body the
declaration appears. An object can be "saved" by storing it with a
side-effecting operation and not replacing it with a different value
before the end of the dynamic extent, by using it as a component of a
freshly-allocated object that is itself "saved," by capturing it in a
function closure that is itself "saved," by returning it as a value, or
by transmitting it outside the dynamic extent with THROW. A "proper
part" of an object A is any object that is accessible at the beginning
of the scope of the declaration -only- by applying a function to A or to
a "proper part" of A. This means that any objects freshly allocated
during the construction of the initial value of the declared variable,
and not "saved" during the construction of that value, are "proper
parts" and can be allocated on a stack.
Examples:
In
(LET ((X (LIST 'A1 'B1 'C1))
(Y (CONS 'A2 (CONS 'B2 (CONS 'C2 NIL)))))
(DECLARE (DYNAMIC-EXTENT X Y))
...)
The "proper parts" of X are three conses, and the "proper parts" of Y
are three other conses. None of the symbols A1, B1, C1, A2, B2, C2, or
NIL is a "proper part" of X or Y. However, if a freshly allocated
uninterned symbol had been used, it would have been a "proper part."
- - - - - - - -
(DOTIMES (I N)
(DECLARE (DYNAMIC-EXTENT I))
This is particularly instructive. Since I is an integer by the
definition of DOTIMES, but EQ and EQL are not necessarily equivalent for
integers, what are the "proper parts" of I, which this declaration
requires the body of the DOTIMES not to "save"? If the value of I is 3,
and the body does (SETQ FOO 3), is that an error? The answer is no, but
the interesting thing is that it depends on the implementation-dependent
behavior of EQ on numbers. In an implementation where EQ and EQL are
equivalent for 3, then 3 is not a "proper part" because (EQ I (+ 2 1))
is true, and therefore there is another way to access the object besides
going through I. On the other hand, in an implementation where EQ and
EQL are not equivalent for 3, then the particular 3 that is the value of
I is a "proper part", but any other 3 is not. Thus (SETQ FOO 3) is valid
but (SETQ FOO I) is erroneous. Since (SETQ FOO I) is erroneous in some
implementations, it is erroneous in all portable programs, but some other
implementations may not be able to detect the error.
- - - - - - - -
(LET ((X (LIST 1 2 3)))
(DECLARE (DYNAMIC-EXTENT X))
(PRINT X)
NIL)
PRINT does not "save" any part of its input.
This prints (1 2 3)
- - - - - - - -
(DO ((L (LIST-ALL-PACKAGES) (CDR L)))
((NULL L))
(DECLARE (DYNAMIC-EXTENT L))
(PRINT (CAR L)))
prints all packages; none of the newly-allocated list structures are saved.
- - - - - - - -
(DEFUN ADD (&REST X) (DECLARE (DYNAMIC-EXTENT X)) (APPLY #'+ X))
(ADD 1 2 3) => 6
I.e., useful way to declare that &REST lists have dynamic extent
- - - - - - - -
(DEFUN ZAP (X Y Z)
(DO ((L (LIST X Y Z) (CDR L)))
((NULL L))
(DECLARE (DYNAMIC-EXTENT L))
(PRIN1 (CAR L))))
(ZAP 1 2 3)
prints 123
- - - - - - - -
(DEFUN ZAP (N M)
;; Computes (RANDOM (+ M 1)) at relative speed of roughly O(N).
;; It may be slow, but with a good compiler at least it
;; doesn't waste much heap storage. :-)
(LET ((A (MAKE-ARRAY N)))
(DECLARE (DYNAMIC-EXTENT A))
(DOTIMES (I N)
(DECLARE (DYNAMIC-EXTENT I))
(SETF (AREF A I) (RANDOM (+ I 1))))
(AREF A M)))
(< (ZAP 5 3) 3) => T
- - - - - - - -
The following are in error, since the value of X is used outside of its
extent:
(LENGTH (LIST (LET ((X (LIST 1 2 3))) (DECLARE (DYNAMIC-EXTENT X)) X)))
(PROGN (LET ((X (LIST 1 2 3))) (DECLARE (DYNAMIC-EXTENT X)) X)
NIL)
- - - - - - - -
Rationale:
This permits a programmer to offer advice to an implementation about
what may be stack-allocated for efficiency.
It may be difficult or impossible for a compiler to infer this
same information statically.
Since a number of implementations offer this capability and there
is demand from users for access to the capability, this ``codifies
existing practice.''
Because this approach is purely lexical, it does not interact badly with
other programs in the way that the macro WITH-DYNAMIC-EXTENT (see issue
by same name) would.
Current Practice:
Symbolics Genera and Symbolics Cloe offer stack allocation, though not
in this strategy.
[KMP thinks that] Lucid supports the proposal.
Cost to Implementors:
No cost is forced since implementations are permitted to simply
ignore the DYNAMIC-EXTENT declaration.
Cost to Users:
None. This change is upward compatible.
There may be some hidden costs to debugging using this declaration (or any
feature which permits the user to access dynamic extent objects without
the compiler proving that they are appropriate). If the user misdeclares
something and returns a pointer into the stack (or stores it in the heap),
an undefined situation may result and the integrity of the Lisp storage
mechanism may be compromised. Debugging these situations may be tricky,
but users who have asked for this feature have indicated a willingness
to deal with such costs. Nevertheless, the perils should be clearly
documented and casual users should not be encouraged to use this
declaration.
Cost of Non-Adoption:
Some portable code would be forced to run more slowly (due to
GC overhead), or to use non-portable language features.
Benefits:
The cost of non-adoption is avoided.
Aesthetics:
This declaration allows a fairly low level optimization to work
by asking the user to provide only very high level information.
The alternatives (sharpsign conditionals, some of which may
lead to more bit-picky abstractions) are far less aesthetic.
Discussion:
A previous version of this proposal suggested primitives STACK-LET
and STACK-LET*. Consensus was that the more general declaration facility
would be more popular.
Pitman supports the DYNAMIC-EXTENT:NEW-DECLARATION.
Actually, a blurry issue is whether
(LENGTH (LIST (LET ((X (LIST 1 2 3))) (DECLARE (DYNAMIC-EXTENT X)) X)))
=> 1
is well-defined. I refer to these stack-allocated things as being invalid
return values, but in fact we might want to say that they're ok to return
but that you just can't do any serious operations on them (ie, you can't
expect them to still be lists, etc.) Can anyone imagine a pointer into
unallocated stack causing problems for their GC? If so, we could be more
clear on this point.
The examples are tricky:
"I hope no one misreads the above as an argument that my proposal is too
complicated, since it does not derive at all from my proposal, but only
from the way Common Lisp works."
!
Additional comments:
... I really like this rewrite a lot. It's quite
clever in the way it presents things in order to get additional flexibility.
However, I do have a few comments I'd like to see addressed before this
gets to a vote...
* I like the concept "proper part" a lot but I don't like the name.
The term "proper" for proper lists has to do with well-formed-ness
and in this context you're suggesting an incompatible meaning which
is confusing.
I suggest instead a term like "internal", "intrinsic", "private",
"unshared", etc.
[The concept of "unshared" makes me immediately scared about the
whole quote-may-copy morass, but I don't have time to think through
right now whether that's an issue that needs further clarification
or if it's just a red herring.]
* I like the concept of "saved" but it has the problem that it isn't
easy to bring up "out of context" since "save" has a lot of connotations.
If it were possible to come up with a more unique term, I think it
would help in lunch table conversations when people start getting
screwed by things that were `unintentionally saved' and others can't
figure out what they mean out of context.
* I think your list of definitions for saved is pretty good, but I'd
still like to see an abstract definition, and then the concrete cases
listed beneath it. That way, we are protected from weird unintentional
interpretations if someone discovers that the set was not exhaustive
and needs to include their new case under the abstract description
because the concrete list doesn't accomodate things.
* What about things like:
(DEFUN FOO (&REST X)
(DECLARE (DYNAMIC-EXTENT X))
(MAPL #'PRINT X)
T)
Genera's Dynamic Windows (DW) had bugs in its first release because the
window history recorded the object which was printed. Put another
way, PRINT did unexpected "saving" on some streams. The situation with
DW was treated as a bug and now DW correctly detects stack-allocated
things and does not try to save them, so this would work now.
However, it still raises the question of whether we should define
per-function for every CL function whether any of the arguments is
permitted to be "saved" so that CL programs don't get any funny surprises.
If we don't, it ends up being implementor's discretion how to resolve
cases like this, and everyone might not agree that all cases are as
obvious as this one was.
- - - - - - -
re: However, it still raises the question of whether we should define
per-function for every CL function whether any of the arguments is
permitted to be "saved" so that CL programs don't get any funny surprises.
If we don't, it ends up being implementor's discretion how to resolve
cases like this, and everyone might not agree that all cases are as
obvious as this one was.
PDP10 MacLisp had a similar problem w.r.t pdlnums. That is why
"identity" functions were so troublsome for it -- in order to
return a guaranteed safe value, it typically had to copy it's
pdlnum argument, thereby making some cases of "fast arithmetic"
code much worse than interpreted code! [Remember PRINT in MacLisp?
it returns T rather than it's argument for just this reason.]
It is necessary for an optimizing compiler to know something about
what happens to the data it passes along to "system" functions; for
example, it could assume that GET doesn't clobber the list given
to it, nor does it retain pointers to any part of it [what was the
terminology in the revised proposal? "saved"? and "proper part"?]
The issue LISP-SYMBOL-REDEFINITION might help here, in that an
implementation's compilers could depend upon it's own internal
database. But it wouldn't hurt at all to have some of these
requirements "up front" in the standard.
∂16-Mar-89 1354 X3J13-mailer Issue: DYNAMIC-EXTENT
Received: from Think.COM by SAIL.Stanford.EDU with TCP; 16 Mar 89 13:54:21 PST
Return-Path: <barmar@Think.COM>
Received: from OCCAM.THINK.COM by Think.COM; Thu, 16 Mar 89 16:49:45 EST
Date: Thu, 16 Mar 89 16:50 EST
From: Barry Margolin <barmar@Think.COM>
Subject: Issue: DYNAMIC-EXTENT
To: masinter.pa@xerox.com
Cc: X3J13@sail.stanford.edu
In-Reply-To: <890316-120057-5042@Xerox>
Message-Id: <19890316215008.1.BARMAR@OCCAM.THINK.COM>
re: However, it still raises the question of whether we should define
per-function for every CL function whether any of the arguments is
permitted to be "saved" so that CL programs don't get any funny surprises.
If we don't, it ends up being implementor's discretion how to resolve
cases like this, and everyone might not agree that all cases are as
obvious as this one was.
...
It is necessary for an optimizing compiler to know something about
what happens to the data it passes along to "system" functions; for
example, it could assume that GET doesn't clobber the list given
to it, nor does it retain pointers to any part of it [what was the
terminology in the revised proposal? "saved"? and "proper part"?]
The issue LISP-SYMBOL-REDEFINITION might help here, in that an
implementation's compilers could depend upon it's own internal
database. But it wouldn't hurt at all to have some of these
requirements "up front" in the standard.
I don't think that solves the problem. Yes, in a system where PRINT
saves its argument the compiler could detect that in
(defun print-em (&rest stuff)
(declare (dynamic-extent stuff))
(print stuff))
the declaration is obviously in error and may be ignored (or it might
generate a warning). In the case of Genera Dynamic Windows, whether
PRINT saves is actually an attribute of the stream, so it is
questionable whether the compiler should override the declaration
(perhaps the programmer knows that the function will only be called with
*STANDARD-OUTPUT* bound to a non-saving stream). Also, what about the
function
(defun process-em (&rest stuff)
(declare (dynamic-extent stuff))
(frobnicate stuff))
If FROBNICATE hasn't been written yet the compiler has no way of
knowing whether it calls any system functions that save the argument.
I think that if we really want this declaration (and I'd like to see it
included, as it is the right compromise for a long-standing problem) we
MUST say something about passing dynamic data to standard functions. I
think it would be sufficient to say that if the standard doesn't specify
that an argument must be saved then a dynamic object must be acceptable.
In other words, if a user reading the standard can't infer that an
argument will be saved then a conforming program may pass dynamic data
in that argument. This means that PRINT must accept a dynamic object,
and it is the implementation's responsibility to solve the potential
problems if it normally saves what PRINT prints.
barmar
∂16-Mar-89 1356 CL-Compiler-mailer Issue SAFE-CODE, version 1
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 16 Mar 89 13:56:46 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 558883; Thu 16-Mar-89 16:53:42 EST
Date: Thu, 16 Mar 89 16:53 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: Issue SAFE-CODE, version 1
To: Dick Gabriel <RPG@SAIL.Stanford.EDU>, masinter.pa@Xerox.COM
cc: cl-compiler@SAIL.Stanford.EDU, x3j13@SAIL.Stanford.EDU
In-Reply-To: <svXEG@SAIL.Stanford.EDU>,
<890316-070317-3708@Xerox>,
<1avs40@SAIL.Stanford.EDU>,
<19890314214907.7.MOON@EUPHRATES.SCRC.Symbolics.COM>
Message-ID: <19890316215335.8.MOON@EUPHRATES.SCRC.Symbolics.COM>
Line-fold: No
Either "nonsafe code" or "code not declared safe" has better connotations
for me than "unsafe code." I don't really want to get too deeply involved
in choosing the terminology here (if I did, I would be on the editorial
committee), I only wanted to point out that the word used in version 1
of the proposal had an unwanted connotation for me.
∂16-Mar-89 1418 X3J13-mailer Issue DYNAMIC-EXTENT: a remark
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 16 Mar 89 14:18:09 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 558915; Thu 16-Mar-89 17:15:26 EST
Date: Thu, 16 Mar 89 17:15 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: Issue DYNAMIC-EXTENT: a remark
To: Guy Steele <gls@Think.COM>
cc: masinter.pa@xerox.com, X3J13@sail.stanford.edu
In-Reply-To: <8903162034.AA05881@verdi.think.com>
Message-ID: <19890316221519.0.MOON@EUPHRATES.SCRC.Symbolics.COM>
Line-fold: No
Date: Thu, 16 Mar 89 15:34:53 EST
From: Guy Steele <gls@Think.COM>
A "proper
part" of an object A is any object that is accessible at the beginning
of the scope of the declaration -only- by applying a function to A or to
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
a "proper part" of A. This means that any objects freshly allocated
during the construction of the initial value of the declared variable,
and not "saved" during the construction of that value, are "proper
parts" and can be allocated on a stack.
I believe that the words indicated above should be replaced by
"the extent of the binding for which the delaration was made".
That would change the meaning, since the declaration might not be attached
to a binding.
The reference appears to be to a point in time. Scopes are in space;
the beginning of a scope is a character position in the text (or
something like that). Extents are in time. Is this what you meant?
You're right that there is something wrong with this wording. How about
if it said "at the beginning of execution of the forms in the scope of
the declaration"? Do declarations have extents? If so, could it say
"at the beginning of the extent of the declaration"?
∂16-Mar-89 1424 X3J13-mailer Issue: TIME-ZONE-NON-INTEGER, v.1
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 16 Mar 89 14:23:49 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 558923; Thu 16-Mar-89 17:20:36 EST
Date: Thu, 16 Mar 89 17:20 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: Issue: TIME-ZONE-NON-INTEGER, v.1
To: barmar@Think.COM
cc: Guy Steele <gls@Think.COM>, masinter.pa@xerox.com, x3J13@sail.stanford.edu
In-Reply-To: <8903161939.AA05061@verdi.think.com>
Message-ID: <19890316222034.1.MOON@EUPHRATES.SCRC.Symbolics.COM>
Line-fold: No
Date: Thu, 16 Mar 89 14:39:11 EST
From: Guy Steele <gls@Think.COM>
Date: Thu, 16 Mar 89 12:16 EST
From: Barry Margolin <barmar@Think.COM>
Date: 16 Mar 89 07:07 PST
From: masinter.pa@xerox.com
Proposal (TIME-ZONE-NON-INTEGER:ALLOW)
Specify that the time zone part of Decoded Time is a rational number
(either an integer or a ratio).
Just to show you, when I become a billionaire I'll form my own country
and give it an irrational time zone (e in the winter, sqrt(2) in the
summer).
When you become a billionaire, you'll probably find that
you get a better approximation to e or sqrt(2) with a moby
bignum rational than with a float.
As a billionaire, you'll be able to afford to do all your processing
with indefinite-precision exact arithmetic.
Does Guy have inside information on when Barry will become a billionaire?
∂16-Mar-89 1436 X3J13-mailer Fatal vesus Harmless
To: x3j13@SAIL.Stanford.EDU
CC: cl-editorial@SAIL.Stanford.EDU
From: Dick Gabriel <RPG@SAIL.Stanford.EDU>
This is my last attempt at making my argument. I don't think there is much
else I can say to persuade you.
I wrote:
``The definition of fatal puts no time constraints on the fatality. Therefore,
neither does its negation.''
Let's define the term ``win'' to mean ``doesn't crash or abnormally
terminate''; basically, it is the bad case that the definition of
``fatal'' talks about. Let ``lose'' mean ``not win.''
Here are two partially formal definitions of ``fatal'' and ``harmless.''
The program P has consequences that are fatal if there
exists a sequence of conforming programs, P1,...,Pj,Pj+1,...,Pn, where
(progn P1...Pn) wins, but (progn P1...Pj P Pj+1...Pn) loses.
That is, the execution of P eventually leads to fatality in some program.
The program P has consequences that are harmless if
for all sequences of conforming programs, P1,...,Pj,Pj+1,...,Pn, where
(progn P1...Pn) wins, (progn P1...Pj P Pj+1...Pn) also wins.
That is, the execution of P never leads to fatality in any program.
There might be an infinite amount of hair to make this precise, but that's
the idea. And, there is some question about how different we allow the
behavior of the programs with P to be from the behavior of the programs
without P. (The language of the definitions of these terms are meant to
warn people to beware that behavior is in jeopardy.) But, the terms are
related by a negation with respect to the degree to which they are
well-defined.
I think part of the problem of understanding comes from the question of
side effects noticeable to conforming programs. A program with harmless
consequences can have side effects; notice our partly formal definition
doesn't say anything about what the programs do.
We all believe harmless a garbage collector that moves objects from place
to place where the movement is unnoticeable by conforming programs. Probably
most of us believe harmless a garbage collector whose progress is displayed.
I think none of us believes harmless a garbage collector that sets to
NIL all property lists of symbols in the USER package.
I think most of use believe harmful a garbage collector that changes the
order of properties on property lists.
However, consider an implementation of Common Lisp that uses a very hairy
representation for property-list lists. These lists have the feature that
sometimes the garbage collector will re-order their properties according
to some LRU bits to aid performance. Of course, through extreme hair, the
GC won't change the order if some piece of the property list is stored
somewhere other than the property list itself. Think of it as an
optimization that is conservatively performed.
Nowhere does the CL specification state that the order of properties
remains constant if the property list is not explicitly altered. Do those
of us who believed harmful the GC that changed property list order believe
this GC harmful? Or did some of us change our votes?
Suppose we alter the definition of symbol-plist from this:
``This returns *the* list the contains the property pairs of <symbol>;
the contents of the property-list cell are *extracted* and returned.''
to this:
``This returns *a* list the contains the property pairs of <symbol>;
the contents of the property-list cell are *copied* and returned.''
Now does the order-changing GC seem more harmless? It certainly has
less transparent behavior.
Suppose we explicitly specified that the order of properties on a property
list could change from time to time, possibly by GC actions. We have
defined the GC to be non-transparent, but is it harmless?
The sense of the definitions come from the partially formal definitions.
I think these definitions are pesuasive regarding the usefulness of a
term like ``harmless.''
I believe those definitions are difficult to make formal without some
very detailed computational or semantic model. The series of strange
GC behaviors with respect to property lists should make us leery of
making these definitions too precise at the expense of deciding these
cases one way when in five years we will wish we could decide them
the other way.
Specifications such as the one we are writing are communications
among people, and therefore absolute precision is impossible without
overspecification.
-rpg-
∂16-Mar-89 1443 CL-Compiler-mailer Re: issue COMPILED-FUNCTION-REQUIREMENTS, version 4
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 16 Mar 89 14:43:02 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 558959; Thu 16-Mar-89 17:39:16 EST
Date: Thu, 16 Mar 89 17:39 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: Re: issue COMPILED-FUNCTION-REQUIREMENTS, version 4
To: Barry Margolin <barmar@FAFNIR.THINK.COM>
cc: masinter.pa@xerox.com, cl-compiler@sail.stanford.edu, X3J13@sail.stanford.edu
In-Reply-To: <19890316173142.7.BARMAR@OCCAM.THINK.COM>
Message-ID: <19890316223916.6.MOON@EUPHRATES.SCRC.Symbolics.COM>
Line-fold: No
Date: Thu, 16 Mar 89 12:31 EST
From: Barry Margolin <barmar@FAFNIR.THINK.COM>
I'll just reiterate something I said at one of the meetings. One
portable use I can think of for the COMPILED-FUNCTION type is as a
declaration to allow compiler optimization. If a function knows (or
requires) that a parameter is a compiled function it can declare that
and the implementation may be able to optimize the FUNCALL better.
But as someone said the last time this suggestion was brought up, if
there is no portable meaning of the COMPILED-FUNCTION type and no
portable way to create an object of that type, no useful correct program
can contain this declaration.
Another thing I just thought of is something like:
(when (typep f '(and function (not compiled-function)))
(setq f (compile nil f)))
This doesn't actually work because COMPILE isn't required to accept
lexical closures
You just glimpsed the tip of the iceberg.
∂16-Mar-89 1551 X3J13-mailer Issue: COERCE-INCOMPLETE (Version 3)
Received: from Think.COM by SAIL.Stanford.EDU with TCP; 16 Mar 89 15:51:26 PST
Return-Path: <barmar@Think.COM>
Received: from OCCAM.THINK.COM by Think.COM; Thu, 16 Mar 89 17:59:11 EST
Date: Thu, 16 Mar 89 18:00 EST
From: Barry Margolin <barmar@Think.COM>
Subject: Issue: COERCE-INCOMPLETE (Version 3)
To: masinter.pa@xerox.com
Cc: x3j13@sail.stanford.edu
In-Reply-To: <890316-095901-4371@Xerox>
Message-Id: <19890316230020.6.BARMAR@OCCAM.THINK.COM>
There's an inconsistency in the names of the proposals. In the Proposal
sections, the two proposals are named LIMITED-ARBITRARY-EXTENSION and
DEPRECATE. But in some other sections they are called COERCE and
DEPRECATE.
Problem with DEPRECATE: Didn't we specify that the way to convert a
lambda expression into a function object is to use (COERCE x 'FUNCTION)?
Or did we also define a new function that does this?
barmar
∂16-Mar-89 1603 X3J13-mailer *DRAFT* Issue: DESTRUCTURING-BIND, v.2
Received: from Think.COM by SAIL.Stanford.EDU with TCP; 16 Mar 89 16:02:40 PST
Return-Path: <barmar@Think.COM>
Received: from OCCAM.THINK.COM by Think.COM; Thu, 16 Mar 89 17:45:15 EST
Date: Thu, 16 Mar 89 17:46 EST
From: Barry Margolin <barmar@Think.COM>
Subject: *DRAFT* Issue: DESTRUCTURING-BIND, v.2
To: masinter.pa@xerox.com
Cc: X3J13@sail.stanford.edu
In-Reply-To: <890316-114911-4982@Xerox>
Message-Id: <19890316224608.4.BARMAR@OCCAM.THINK.COM>
Date: 16 Mar 89 11:46 PST
From: masinter.pa@xerox.com
Current Practice:
The DESTRUCTURING-BIND offered by Symbolics Genera signals an error if
the pattern is not matched. The TI Explorer version does not.
Actually, Genera offers TWO versions of DESTRUCTURING-BIND:
SYMBOLICS-COMMON-LISP:DESTRUCTURING-BIND and
ZETALISP:DESTRUCTURING-BIND. The former signals an error, while the
latter does not (it's probably very similar to the Explorer version,
since they are genetically closer).
barmar
∂16-Mar-89 1726 X3J13-mailer Issue: MAKE-STRING-FILL-POINTER (Version 1)
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 16 Mar 89 17:25:54 PST
Received: from Semillon.ms by ArpaGateway.ms ; 16 MAR 89 16:55:22 PST
Date: 16 Mar 89 16:49 PST
From: masinter.pa@Xerox.COM
Subject: Issue: MAKE-STRING-FILL-POINTER (Version 1)
to: X3J13@sail.stanford.edu
line-fold: NO
Message-ID: <890316-165522-6151@Xerox>
The discussion on this issue pointed out that it would
extend the range of MAKE-STRING so that it was no
longer restricted to return a SIMPLE-STRING, which
might break some type-inference.
!
Issue: MAKE-STRING-FILL-POINTER
References: CLtL p.302
Related issues: none that I know of
Category: ADDITION
Edit history: Version 1, 20-Oct-88, by Moon, for discussion
Problem description:
Once again I lost because I expected to be able to use MAKE-STRING
to create a string with a fill-pointer, and I couldn't. I had to use
a more long-winded MAKE-ARRAY call instead.
Proposal (MAKE-STRING-FILL-POINTER:ALLOW):
Give MAKE-STRING a :FILL-POINTER argument, with the same syntax and
semantics as the :FILL-POINTER argument to MAKE-ARRAY.
Examples:
(make-string 80 :fill-pointer 0)
Test Cases:
See examples.
Rationale:
I frequently expect it to be allowed and am surprised when it's not.
Current practice:
I know of no implementations that support this.
Cost to Implementors:
5 cents.
Cost to Users:
none
Cost of non-adoption:
none
Performance impact:
none
Benefits:
Increased language consistency.
Esthetics:
Increased language consistency.
Discussion:
Other MAKE-ARRAY options that one might want to allow, but are
not already allowed or proposed, are :INITIAL-CONTENTS, :ADJUSTABLE,
:DISPLACED-TO, and :DISPLACED-INDEX-OFFSET. A strong case could be
made for :ADJUSTABLE (I use an implementation where it doesn't matter,
so I don't care about that), I don't think anyone would care about the
other three.
∂16-Mar-89 1745 X3J13-mailer Issue: EXTRA-RETURN-VALUES
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 16 Mar 89 17:45:24 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
id AA18011; Thu, 16 Mar 89 00:34:36 PST
Message-Id: <8903160834.AA18011@decwrl.dec.com>
Received: by decwrl.dec.com (5.54.5/4.7.34)
for x3j13@sail.stanford.edu; id AA18011; Thu, 16 Mar 89 00:34:36 PST
From: chapman%aitg.DEC@decwrl.dec.com
Date: 16 Mar 89 03:24
To: x3j13@sail.stanford.edu
Subject: Issue: EXTRA-RETURN-VALUES
Issue: EXTRA-RETURN-VALUES
References: Chapter 1, Section 1.5, Working draft of standard
Category: Clarification
Edit history: 8-JAN-89, Version 1 by Masinter
3-FEB-89, Version 2 by Chapman
10-MAR-89, Version 3 by Chapman
Problem: Is it OK to return extra values from Common Lisp functions?
Proposal: EXTRA-RETURN-VALUES:NO
A function that is specified by the standard must return EXACTLY the number
of return values specified by the standard.
Rationale:
The reason is that
additional arguments are visible to otherwise portable programs. For
instance, (multiple-value-call #'cons (floor x y)) looks portable, but it
will try to pass the wrong number of arguments to CONS if FLOOR returns an
extra value.
Current Practice:
At least one implementation returns extra values for certain functions
not currently specified to return those values.
Adoption Cost:
Implementations and their associated documentation that now contain
functions that return extra values will have to change.
Benefits:
Programs will potentially become more portable.
Conversion Cost:
See Adoption Cost.
Aesthetics:
None.
Discussion:
∂16-Mar-89 1746 X3J13-mailer Issue: COERCE-INCOMPLETE (Version 3)
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 16 Mar 89 17:45:59 PST
Received: from BOBOLINK.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 559088; Thu 16-Mar-89 19:18:34 EST
Date: Thu, 16 Mar 89 19:18 EST
From: Kent M Pitman <KMP@STONY-BROOK.SCRC.Symbolics.COM>
Subject: Issue: COERCE-INCOMPLETE (Version 3)
To: barmar@Think.COM
cc: masinter.pa@xerox.com, x3j13@sail.stanford.edu
In-Reply-To: <19890316230020.6.BARMAR@OCCAM.THINK.COM>
Message-ID: <890316191820.6.KMP@BOBOLINK.SCRC.Symbolics.COM>
Date: Thu, 16 Mar 89 18:00 EST
From: Barry Margolin <barmar@Think.COM>
...
Problem with DEPRECATE: Didn't we specify that the way to convert a
lambda expression into a function object is to use (COERCE x 'FUNCTION)?
Or did we also define a new function that does this?
Re-read FUNCTION-TYPE. The thing Beckerle really wanted and finally
got (over my objection) was that COERCE did nothing `hard' ... What
it ended up being able to be do can be expressed by #'IDENTITY and
#'SYMBOL-FUNCTION.
(COERCE x 'FUNCTION) ==
(ETYPECASE X
(SYMBOL (SYMBOL-VALUE X))
(FUNCTION X))
I don't really think anything more needs to be provided, even if we
DEPRECATE coerce.
∂16-Mar-89 1801 X3J13-mailer SYMBOL-MACROLET-SEMANTICS, version 6
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 16 Mar 89 18:01:42 PST
Received: from Cabernet.ms by ArpaGateway.ms ; 16 MAR 89 17:46:06 PST
Date: 16 Mar 89 17:44 PST
From: masinter.pa@Xerox.COM
To: x3j13@sail.stanford.edu
Subject: SYMBOL-MACROLET-SEMANTICS, version 6
line-fold: NO
Message-ID: <890316-174606-6317@Xerox>
This is a proposal to amend version 5, passed in January 1989 in Kauai.
Version 6 amends version 5 to require PSETQ to behave like PSETF,
to require MULTIPLE-VALUE-SETQ to accept symbol macros (but not
general SETF places), and to specify the interaction with the
*MACROEXPAND-HOOK* function.
We would like to have the proposal reconsidered, and
accepted as amended.
!
Issue: SYMBOL-MACROLET-SEMANTICS
References: SYMBOL-MACROLET (88-002R page 2-81)
Related Issues: SYMBOL-MACROLET-DECLARE
Category: CHANGE
Edit history: 29-July-88, Version 1 by Piazza
21-September-88, Version 2 by Piazza
22-September-88, Version 3 by Piazza
22-September-88, Version 4 by Piazza
30-Nov-88, Version 5 by Masinter
14-Mar-89, Version 6 by Steele
Problem Description:
The SYMBOL-MACROLET construct, introduced with CLOS in X3J13 document
88-002R, profoundly alters the interpretation of symbols appearing as
forms in a Common Lisp program--what previously was necessarily a variable
might now be a symbol macro instead. Macros which appear in the body of a
SYMBOL-MACROLET form are currently unable to determine whether a symbol
form is a variable or a symbol macro, and, if the latter, what the
expansion of the symbol macro is. Consequently, complex macros (such as
SETF or PUSH) which depend on the form of their argument(s), are unable to
produce their desired results in some cases, as in the following example:
(let ((a (make-array 5))
(i 0))
(symbol-macrolet ((place (aref a (incf i))))
(push x place))
i) ==> 2
In addition, it would be both natural and nice to be able to write
(with-slots (rho theta) point
(declare (single-float rho theta))
...computation...)
as well as DECLARE within SYMBOL-MACROLET forms.
Proposal (SYMBOL-MACROLET-SEMANTICS:SPECIAL-FORM):
Change the definition of SYMBOL-MACROLET to specify that it is a special
form, which affects the evaluation environment for symbols. Enhance
MACROEXPAND and MACROEXPAND-1 so that they can expand a symbol macro.
Modify SETF et al to use the new MACROEXPAND and MACROEXPAND-1 to examine
even symbol subforms. Specify that the expansion of a symbol macro IS
subject to further macro expansion in the same lexical environment as the
symbol macro invocation, exactly analogous to normal macros. Clarify that
within the body of a SYMBOL-MACROLET, SETQ of a symbol defined as
a symbol macro will be treated as if it were a SETF.
Furthermore PSETQ of a symbol defined as a symbol macro will
behave as if it were a PSETF, and MULTIPLE-VALUE-SETQ will behave
as if SETQ were used on each variable to be set.
When MACROEXPAND or MACROEXPAND-1 sees a symbol macro, it calls
the value of *MACROEXPAND-HOOK* in the same manner as for an
ordinary macro. The three values given to the hook function
in this case will be an expansion function, a form (in this case
the symbol naming the symbol macro), and an environment. The
only guaranteed property of the expansion function is that when
it is applied to the form and the environment it will return the
correct expansion of the symbol macro. (In particular, nothing
it said in this specification whether the expansion is conceptually
stored in the expansion function, the environment, or both.)
Rationale:
The potential for interaction between macros is exactly why &environment
arguments were originally added to macros. Changing SYMBOL-MACROLET to be
a special form, which communicates through the &environment arguments to
macros with MACROEXPAND and MACROEXPAND-1, would allow PUSH and SETF
(among others) to work with SYMBOL-MACROLET in the same way they work with
MACROLET.
This change cannot (reasonably) support the currently specified semantics
that the expansion text is "outside" the scope of the symbol macro. For
indeed, when the symbol macro is expanded, (a copy of) the expansion is
then within the scope of the SYMBOL-MACROLET, and should then be subject
to further scrutiny. The issue of "infinite expansion" of symbol macros is
no more dangerous than that of normal macros.
Current Practice:
Portable Common Loops provides a code-walking implementation of
SYMBOL-MACROLET as specified in 88-002R. Symbolics Cloe has both a
code-walking version of a SYMBOL-MACROLET macro and compiler support for
a SYMBOL-MACROLET special form.
Cost to Implementors:
If SYMBOL-MACROLET is modified to be a special form, compilers and
interpreters will have to change, as well as MACROEXPAND, MACROEXPAND-1,
PUSH, INCF, DECF, and others.
Cost to Users:
If SYMBOL-MACROLET is converted to a special form, code-walking programs
will have to be modified to handle SYMBOL-MACROLET correctly. Those same
programs would have to be modified to handle the other special forms
specified in CLOS, anyway.
Cost of Non-Adoption:
SYMBOL-MACROLET will retain its confusing semantics, leading to bugs when
it interacts with complex macros and forms which produce side-effects.
Implementations which support ONCE-ONLY will break. For that matter, any
mechanism which examines code and assumes that "variables" have no side
effects will break.
Benefits:
SYMBOL-MACROLET-SEMANTICS:SPECIAL-FORM avoids the hairiest problems
surrounding interaction of macros (like SETF) and side effects, and makes
SYMBOL-MACROLET consistent with MACROLET.
Aesthetics:
If SYMBOL-MACROLET is made to be a special form, aesthetics are improved
by making symbol macros consistent with normal macros.
Discussion:
A case could be made for adding a new function, SYMBOL-MACRO-FUNCTION, as
a dual of MACRO-FUNCTION. However, symbol macros are simpler than normal
macros: a symbol macro is associated with a single expansion form, rather
than an arbitrary function which computes the expansion. For this reason,
the augmented MACROEXPAND-1 proposed here can also fill the role of
SYMBOL-MACRO-FUNCTION: the second value of (macroexpand-1 sym env) will be
T if and only if sym is a symbol macro, while the first value gives the
expansion of sym, if it has one.
Rather than extending the existing MACROEXPAND and MACROEXPAND-1
functions, new functions could be introduced to expand symbol macros.
However, there seems to be no particular reason to do this.
∂16-Mar-89 2103 X3J13-mailer Issue: EXIT-EXTENT, v.6
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 16 Mar 89 21:03:05 PST
Received: from Semillon.ms by ArpaGateway.ms ; 16 MAR 89 21:00:49 PST
Date: 16 Mar 89 20:52 PST
From: masinter.pa@Xerox.COM
Subject: Issue: EXIT-EXTENT, v.6
to: X3J13@sail.stanford.edu
cc: masinter.pa@Xerox.COM
line-fold: NO
Message-ID: <890316-210049-6699@Xerox>
This version was distributed in hardcopy form at the
January 1989 meeting, but was tabled.
There are two proposals.
!
Issue: EXIT-EXTENT
References: CATCH, THROW (p 142),
BLOCK, RETURN, RETURN-FROM,
TAGBODY, GO, UNWIND-PROTECT,
Dynamic extent (CLtL p.37),
Nested dynamic extents (CLtL p.38),
Blocks can only be exited once (CLtL p.120),
Catch is disestablished just before the values
are returned (CLtL p.139).
Related issues: UNWIND-PROTECT-NON-LOCAL-EXIT is superseded
by this one.
Category: CLARIFICATION
Edit history: ... Version 5 of UNWIND-PROTECT-NON-LOCAL-EXIT, 23-May-88 ...
Version 1, 5-Sep-88, by Moon, for discussion
Version 2, 1-Oct-88, by Masinter, minor edits
Version 3, 7-Oct-88, by Moon, wording improvements
Version 4, 7-Dec-88, by Masinter, add MEDIUM from
UNWIND-PROTECT-NON-LOCAL-EXIT, discussion.
Version 5, 12-Dec-88, Masinter, clarify MINIMAL allows MEDIUM
Version 6, 8-Jan-89, Masinter, fix some bugs
Problem description:
CLtL does not specify precisely when the dynamic extent (lifetime)
of a nonlocal exit such as a CATCH, BLOCK, or TAGBODY ends.
For example, at what point is it no longer possible to RETURN-FROM
a particular BLOCK?
An "exit" refers to a point from which control can be transferred.
For a THROW or RETURN-FROM, the "exit" is the corresponding CATCH
or BLOCK body. For a GO, the "exit" is the form within the TAGBODY
which was being executed at the time the GO is performed.
The extent of an exit is dynamic; it is not indefinite. The extent
of an exit begins when the corresponding form (CATCH, BLOCK or TAGBODY
clause) is entered. When the extent of an exit has ended, it is no
longer legal to return from it.
The extent of an exit is not the same thing as the scope of the
designator by which the exit is identified. For example, a BLOCK
name has lexical scope but the extent of its exit is dynamic; the
scope of a CATCH tag could differ from the extent of the CATCH's
return point. (That's part of what is at issue here.)
The ambiguity at issue arises for the case where there are transfers
of control from the cleanup clauses of an UNWIND-PROTECT.
When a transfer of control is initiated by GO, RETURN-FROM or THROW,
a variety of events occur before the transfer of control is complete.
In particular,
(a) the cleanup clauses of any intervening UNWIND-PROTECT clauses
are evaluated,
(b) intervening dynamic bindings of special variables and catch tags
are undone,
(c) intervening exits are "abandoned", i.e., their extent ends and it
is no longer legal to attempt to transfer control through them,
(d) the extent of the exit being invoked ends,
(e) control is finally passed to the target.
The order of these events is not explicit in CLtL, however. The
implementation note on p.142 gives a clue about the interweaving
of (a) and (b), but there are differing opinions about the times
at which (c) and (d) may occur. In particular,
Is it legal for an implementation to end the extent of all
intervening exits before processing the cleanup clauses of intervening
UNWIND-PROTECTs?
What is the dynamic context at the time UNWIND-PROTECT clauses are
evaluated: how is the unwinding of dynamic bindings intertwined with
evaluation of UNWIND-PROTECT cleanup clauses?
Proposal (EXIT-EXTENT:MINIMAL):
The extent of an exit--whether it is being "abandoned" because it is
being passed over, or it is itself the target exit--ends as soon as
the transfer of control is initiated. That is, the events (c) and (d)
at the beginning of the initiation of the transfer of control. In the
language of the implementation note on p.142, the extent ends at the
beginning of the second pass. It is an error to attempt a transfer
of control to an exit whose dynamic extent has ended.
Otherwise, events (a) and (b)--the undoing of dynamic binding of special
variables and CATCH tags, and the execution of UNWIND-PROTECT cleanup
clauses--are performed in the order corresponding to the reverse order
in which they were established, as implied by the implementation note
on p.142. The effect of this is that the cleanup clauses of an UNWIND-PROTECT
will see the same dynamic bindings of variables and CATCH tags as were
visible when the UNWIND-PROTECT was entered.
This proposal is called "minimal" because it gives exits the smallest
extent consistent with CLtL. A program that presumed a longer extent
would be in error. Implementations may support longer extents for
exits than is required by this proposal; in particular, an
implementation which allowed the larger extent of the MEDIUM
proposal below would still conform.
Proposal (EXIT-EXTENT:MEDIUM):
The events of (a), (b), (c) and (d) are interwoven in the reverse
order in which they were established. In particular, the extent of
a passed-over exit ends when control reaches a frame that was
established before the exit was established.
In particular, it is legal, during the evaluation of an UNWIND-PROTECT
cleanup form executed because of a non-local transfer of control, to
initiate a new transfer of control to an exit intervening between the
UNWIND-PROTECT and the original target; the original processing of
transfer of control is abandoned.
Examples:
;; Error under either proposal: BLOCK exits normally before RETURN
(funcall (block nil #'(lambda () (return))))
;; Error under either proposal: normal exit before GO
(let ((a nil))
(tagbody t (setq a #'(lambda () (go t))))
(funcall a))
;; Error under either proposal: TAGBODY is passed over, before GO
(funcall (block nil
(tagbody a (return #'(lambda () (go a))))))
;;returns 2 under MEDIUM, is error under MINIMAL
(block nil
(unwind-protect (return 1)
(return 2)))
;;returns 2 under MEDIUM, is error under MINIMAL
(block a
(block b
(unwind-protect (return-from a 1)
(return-from b 2))))
;; returns 2 under MEDIUM, is error under MINIMAL
(catch nil
(unwind-protect (throw nil 1)
(throw nil 2)))
;; returns 2 under MEDIUM, is error under MINIMAL
;; because the catch of B is passed over by
;; the first THROW, hence portable programs must assume its dynamic extent
;; is terminated. The binding of the catch tag is not yet disestablished
;; and therefore it is the target of the second throw.
(catch 'a
(catch 'b
(unwind-protect (throw 'a 1)
(throw 'b 2))))
;; the following is an error under MINIMAL; the extent of the
;; inner catch terminates as soon as the THROW commences, even
;; though it remains in scope. Thus, the THROW of :SECOND-THROW
;; sees the inner CATCH, but its extent has ended.
;; under MEDIUM, it prints "The inner catch returns :SECOND-THROW"
;; and then returns :OUTER-CATCH.
(catch 'foo
(format t "The inner catch returns ~s.~%"
(catch 'foo
(unwind-protect (throw 'foo :first-throw)
(throw 'foo :second-throw))))
:outer-catch))
;; Following returns 10 under either proposal. The inner
;; CATCH of A is passed over, but because that CATCH
;; is disestablished before the THROW to A is executed,
;; it isn't seen.
(catch 'a
(catch 'b
(unwind-protect (1+ (catch 'a (throw 'b 1)))
(throw 'a 10))))
;; Following is an error under MINIMAL because the extent of
;; the (CATCH 'FOO ...) exit ends when the (THROW 'FOO ...)
;; commences.
;; Under MEDIUM, the pending exit to tag FOO is discarded by the
;; second THROW to BAR and the value 4 is transferred to
;; (CATCH 'BAR ...), which returns 4. The (CATCH 'FOO ...)
;; then returns the 4 because its first argument has returned
;; normally. XXX is not printed.
(CATCH 'FOO
(CATCH 'BAR
(UNWIND-PROTECT (THROW 'FOO 3)
(THROW 'BAR 4)
(PRINT 'XXX))))
;; Following returns 4 under either proposal; XXX is not printed.
;; The (THROW 'FOO ...) has no effect on the scope of the BAR
;; catch tag or the extent of the (CATCH 'BAR ...) exit.
(CATCH 'BAR
(CATCH 'FOO
(UNWIND-PROTECT (THROW 'FOO 3)
(THROW 'BAR 4)
(PRINT 'XXX))))
;;The following are legal and print 5 under either proposal:
(block nil
(let ((x 5))
(declare (special x))
(unwind-protect (return)
(print x))))
(block nil
(let ((x 5))
(declare (special x))
(unwind-protect
(if (test) (return))
(print x))))
Rationale:
For MINIMAL: Giving exits the smallest extent consistent with CLtL
maximizes freedom for implementations; there are few applications,
if any, that require a longer extent.
For MEDIUM: Giving exits a longer extent has cleaner semantics.
Current practice:
Both implementations of Symbolics Genera (3600 and Ivory) end the extent
of a target BLOCK or CATCH at the moment the values are returned, and
end the extent of a passed-over exit at the moment the THROW, RETURN, or
GO commences. This choice of extent maximizes efficiency within the
particular stack structure used by these implementations, by avoiding
the need to retain the control information needed to use a passed over
exit through the transfer of control. Genera signals an error if an
attempt is made to use an exit that has been passed over.
In some implementations, it is possible for a throw or non-local exit
to be effectively "stopped" by an UNWIND-PROTECT cleanup clause that
performs a non-local transfer of control to a passed-over exit.
Some implementations crash or otherwise generate garbage code for
non-local exits from cleanup clauses of UNWIND-PROTECT.
Cost to Implementors:
No currently valid implementation will be made invalid by the MINIMAL
proposal. Some implementors may wish to add error checks if they
do not already have them.
MEDIUM would have a high cost for those implementations that currently
have shorter extent.
Cost to Users:
Most user programs don't do this, so there is likely little cost
of converting existing code in any case. In any case, current implementations
differ enough that this issue ostensibly does not
affect current portable programs. Some users might have code that
relies on the "unstoppable loops" that can be created with the MEDIUM
proposal.
Benefits:
Either proposal would make Common Lisp more precisely defined.
Cost of non-adoption :
The semantics of exits will remain ambiguous.
Esthetics:
Precisely specifying the meaning of dynamic extent improves the language.
Leaving implementations free to implement a longer extent if they choose
can be regarded as unesthetic, but consistent with Common Lisp philosophy.
Having a CATCH that is in scope even though its extent has ended may
seem unesthetic, but it is consistent with how BLOCK behaves.
Discussion:
This issue is controversial. It was first discussed under the issue
named UNWIND-PROTECT-CLEANUP-NON-LOCAL-EXIT. The issue was recast as
the more global one of "extent of exits" rather than the specific
one of "what happens if a cleanup in an UNWIND-PROTECT does a non-
local exit", but the problem cases for both topics are the same.
The goal of the MINIMAL proposal is to clarify the ambiguity in CLtL while
minimizing changes to the current situation. The MEDIUM proposal
defines the extent of an exit to end at the last moment possible
within some particular reference implementation. It has
a cost to implementors whose implementation is not identical to the
reference implementation. Another alternative proposal, not considered
here, would duck the issue by outlawing all non-local exits from UNWIND-PROTECT
cleanup forms. That alternative would have a substantial cost to some users.
Scheme is cleaner: it avoids this issue by specifying that the extent
of an exit never ends.
An argument for the MEDIUM proposal was made based on the example:
(block foo
(block bar
(unwind-protect
(return-from foo 'foo)
(return-from bar 'bar))))
Since there is no reason for FOO and BAR not to be treated interchangeably,
calling this an error would be inappropriate.
It was argued that the MINIMAL proposal is equivalent to practically
outlawing non-local exits from UNWIND-PROTECT cleanup clauses, because
there is no general way to determine the target of the non-local exit
that caused the cleanup clause to be invoked.
The following example was offered as an argument against MINIMAL. Given:
(block nil
(handler-case
(unwind-protect (return)
(error "foo")) ;probably an error, under the proposal
(error ()
(print "foo"))))
If the ERROR handler has the same scope and extent a CATCH in the same place
would have (and that seems reasonable, though I'm not certain that the
condition system specifically requires that interpretation), then the handler
will be apparent to the call to ERROR, but will no longer be a valid target
(its extent was exited by the RETURN in the UNWIND-PROTECT body).
The extent of an object with dynamic extent is the extent of the form
which created it. Code which is executed "within" that form is within
the extent of the object(s). This applies to all dynamic objects, such
as special variable bindings, not just exits. Actually, I think the intent
of the implementation note on p.142 is fairly clear and supports this
interpretation. The supposedly ambiguous use of "frame" should be read
as something like "form which establishes a dynamic extent". It might be
clearer if the last sentence were changed to read something like:
"On the second pass the stack is actually unwound. Each form which establishes
a dynamic extent is undone in reverse order of creation until the matching
CATCH is reached. The meaning of undoing a form depends on the type of form.
For UNWIND-PROTECT, it means executing the cleanup forms. For CATCH it means
removing the CATCH tag. For dynamic bindings it means undoing the binding,
restoring the previous saved value. {This is not an exhaustive listing of the
possibilities.}"
----- End Forwarded Messages -----
∂16-Mar-89 2220 X3J13-mailer Issue: FUNCTION-COERCE-TIME (Version 2)
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 16 Mar 89 22:20:17 PST
Received: from Semillon.ms by ArpaGateway.ms ; 16 MAR 89 22:18:04 PST
Date: 16 Mar 89 22:17 PST
Sender: masinter.pa@Xerox.COM
Subject: Issue: FUNCTION-COERCE-TIME (Version 2)
From: cl-cleanup@sail.stanford.edu
To: x3j13@sail.stanford.edu
REPLY-TO: cl-cleanup@sail.stanford.edu
cc: Masinter.pa@Xerox.COM
Message-ID: <890316-221804-6820@Xerox>
Unfortunately, there have been no new versions of this
produced since it was last distributed, labelled DRAFT, to X3J13
prior to the October, 1988 meeting in Fairfax.
Excerpts from the mail on this are appended.
!
Issue: FUNCTION-COERCE-TIME
References: SET-MACRO-CHARACTER (p362),
SET-DISPATCH-MACRO-CHARACTER (p364),
MAP (p249), MAPL (p129), ...
Functions using :TEST, :KEY, etc. (REDUCE, MEMBER, DELETE, ...)
Functions using a positional predicate (SORT, DELETE-IF, ...)
Category: CLARIFICATION
Edit history: 20-Jun-88, Version 1 by Pitman
16-Sep-88, Version 2 by Pitman
(changes to presentation of all proposals per Masinter's comments)
Status: For Internal Discussion
Problem Description:
Many functions which accept arguments which are to be treated functionally
but which are not of type FUNCTION. This functionality can be very useful,
but the time at which the coercion is accomplished must be made clear.
Proposal (FUNCTION-COERCE-TIME:LAZY):
Specify that when a non-function (eg, a symbol) is used as a functional
argument to an operator, the coercion of that non-function to a function
is delayed until the function is about to be called and is done anew
every time the function is to be called. That is, passing a non-function
functional argument, F, is equivalent to passing
#'(LAMBDA (&REST ARGUMENTS)
(APPLY F ARGUMENTS))
Rationale:
One of the main reasons that it may be useful to pass a non-function
instead of a function is to accomplish indirection which allows later
redefinitions to take proper effect. Early binding would tend to
thwart the usefulness of such indirection and force people into
notationally more clumsy devices.
Proposal (FUNCTION-COERCE-TIME:AMBITIOUS):
Specify that when a non-function (eg, a symbol) is used as a functional
argument to an operator, the coercion of that non-function to a function
is done immediately. That is, all such functions treat a non-function
functional argument, F, as if
(COERCE F 'FUNCTION)
had been passed instead.
Rationale:
This is easier to implement since the coercion is done up front and
no further worry about uncoerced functions is needed internally.
Also, inlining of mapped functions (without using temporary storage
to hold a cached value of the function being mapped) can be done
without needing to know whether the function being inlined will
affect the place which holds the functional argument being passed.
Proposal (FUNCTION-COERCE-TIME:HYBRID):
Specify that when a non-function (eg, a symbol) is used as a
functional argument to an operator, the coercion of that non-function
to a function must be done immediately if the functional argument is
to be used only internally to the function (eg, SORT or MAPCAR).
Otherwise, if the functional argument's use persists beyond the end
of the call to the operator (eg, SET-MACRO-CHARACTER), any coercion is
delayed until the function is about to be called and is done anew every
time the function is to be called.
That is, functions like SORT and MAPCAR are permitted to treat a
non-function functional argument, F, as if
(COERCE F 'FUNCTION)
had been passed instead. However, functions like SET-MACRO-CHARACTER
would treat a non-function functional argument, F, as if
#'(LAMBDA (&REST ARGUMENTS)
(APPLY F ARGUMENTS))
were passed instead.
Rationale:
Debugging is enhanced for operations such as SET-MACRO-CHARACTER
without needlessly hampering useful optimizations to things like
SORT or MAPCAR, which very rarely require this facility.
Test Cases:
(DEFVAR *SOME-FUNCTIONS*
(LIST #'(LAMBDA (X) (SETF (SYMBOL-FUNCTION 'FOO) X) 1)
#'(LAMBDA (X) (SETF (SYMBOL-FUNCTION 'FOO) X) 2)
#'(LAMBDA (X) (SETF (SYMBOL-FUNCTION 'FOO) X) 3)
#'(LAMBDA (X) (SETF (SYMBOL-FUNCTION 'FOO) X) 4)))
; Control situation A
(PROGN (SETF (SYMBOL-FUNCTION 'FOO) (CAR *SOME-FUNCTIONS*))
(LIST (MAPCAR #'(LAMBDA (&REST X) (APPLY #'FOO X))
*SOME-FUNCTIONS*)
(FOO T)))
=> ((1 1 2 3) 4)
; Control situation B
(LET ((FOO (SETF (SYMBOL-FUNCTION 'FOO) (CAR *SOME-FUNCTIONS*))))
(LIST (MAPCAR FOO
*SOME-FUNCTIONS*)
(FOO T)))
=> ((1 1 1 1) 4)
; Interesting Situation 1
(PROGN (SETF (SYMBOL-FUNCTION 'FOO) (CAR *SOME-FUNCTIONS*))
(LIST (MAPCAR #'FOO
*SOME-FUNCTIONS*)
(FOO T)))
=> ((1 1 2 3) 4) ;Lazy-1
or ((1 1 1 1) 4) ;Ambitious-1
; Interesting Situation 2
(PROGN (SETF (SYMBOL-FUNCTION 'FOO) (CAR *SOME-FUNCTIONS*))
(LIST (MAPCAR 'FOO
*SOME-FUNCTIONS*)
(FOO T)))
=> ((1 1 2 3) 4) ;Lazy-2
or ((1 1 1 1) 4) ;Ambitious-2
(DEFUN SHARP-DOLLAR (STREAM CHAR N)
(DECLARE (IGNORE CHAR))
(EXPT (READ STREAM) (OR N 1)))
(SET-DISPATCH-MACRO-CHARACTER #\# #\$ 'SHARP-DOLLAR)
(VALUES (READ-FROM-STRING "(#$3 #4$3)"))
=> (3 81)
(DEFUN SHARP-DOLLAR (STREAM CHAR N)
(DECLARE (IGNORE CHAR))
(+ (READ STREAM) (* (OR N 0) 0.01)))
(VALUES (READ-FROM-STRING "(#$3 #4$3)"))
=> (3.0 3.04) ;Lazy-3
(3 81) ;Ambitious-3
Proposal LAZY requires LAZY-1, LAZY-2, LAZY-3.
Proposal AMBITIOUS requires AMBITIOUS-1, AMBITIOUS-2, AMBITIOUS-3.
Proposal HYBRID requires AMBITIOUS-1, AMBITIOUS-2, LAZY-3.
Current Practice:
Implementations are permitted to differ in when they do the coercion since
the coercion time is not clearly spelled out.
(In the test case, LAZY-1 can occur only if MAPCAR is inlined, and then
only if the original value of the function definition is not cached.)
[Some info below is based on empirical testing -- I didn't look at the
source or try to see how speed/safety affect things. -kmp]
Symbolics Genera implements AMBITIOUS-1 interpreted and LAZY-1 compiled.
Symbolics Cloe (a compiled-only lisp) implements LAZY-1 both `interpreted'
and compiled.
Both Symbolics Genera and Symbolics Cloe implement LAZY-2.
Symbolics Genera implements LAZY-3.
Symbolics Cloe implements AMBITIOUS-3.
Cost to Implementors:
[Costs may vary widely depending on current practice.
I'll leave this one open for now pending feedback from others. -kmp]
Cost to Users:
This change is upward compatible.
Cost of Non-Adoption:
A very important aspect of the language would be left unspecified.
Portability would suffer.
Benefits:
HYBRID has the benefit of making things like readmacros easier to debug.
LAZY offers the additional benefit of being able to repair certain
functional arguments to SORT or MAPCAR (eg, as a symbol) in the debugger,
and then to proceed the error (in implementations offering that restart
option) in a way that makes the ongoing call to SORT or MAPCAR notice
the repairwork right away.
Aesthetics:
Since this is a visible aspect of the language, anything which clarified
the behavior that a programmer might expect would seem to improve the
aesthetics somewhat.
Discussion:
This issue was raised by Nick Gall and written up by Pitman.
Pitman supports FUNCTION-COERCE-TIME:HYBRID.
!
Additional comments:
There was some concern about the proposal wording, because
it was trying to allow for the possibility that implementations
might extend other objects (e.g., lists that begin with
LAMBDA) to "coerce" to functions, and the proposal should
apply for them, too.
This made the wording of the proposal pretty awkward, though.
- - - - - -
The writeup for the LAZY option should mention that this might cause a
substantial performance hit in some implementations.
Of the options presented, I prefer AMBITIOUS. However, I would really
much rather see this whole issue left explicitly vague in the
standard.
- - - -
notes from Cleanup meeting (Fairfax, 1988):
Eliminate the AMBITIOUS proposal. Continue to evolve the
HYBRID and LAZY variants.
Relation to DEBUG quality.
There was some discussion about the idea of permitting vagueness
(ie, making LAZY/AMBITIOUS optional in some places).
X3J13 meeting:
Some people weren't completely convinced that the HYBRID proposal
would feel predictable enough. Others disagreed.
- - - - - - - -
Well, the main reason why I prefer "AMBITIOUS" to "HYBRID" is that it
seems kind of peculiar to make an exception for the two functions,
SET-MACRO-CHARACTER and SET-DISPATCH-MACRO-CHARACTER. Besides being
different from all the other functions that take functional arguments,
it makes them different from the pathname functions (which always
coerce non-pathname "pathname" arguments to pathnames) and the package
functions (which always coerce non-package "package" arguments to
packages).
Also, I disagree that there is no performance penalty, although it's
certainly small in comparison to the rest of the reader's processing.
For example, A-Lisp has a fast, opencoded funcall primitive that it
uses when its argument is guaranteed to be a function, which is *much*
faster than a normal funcall (by a factor of at least 20).
I don't feel really strongly about this -- HYBRID is not really all
that objectionable to me, and I would vote for it if AMBITIOUS is
thrown out.
-------
... I'm thinking of a revision which might lean more toward
explicitly vague on some of these issues. At the same time,
I'd like to encourage the use of the DEBUG and/or SPEED quality
to help compilers lean toward LAZY in the slow/easy-to-debug
case and AMBITIOUS in the fast/hard-to-debug case. There are
some details to be worked out, though...
∂16-Mar-89 2244 X3J13-mailer Issue: SETF-FUNCTION-VS-MACRO, SETF-PLACES, FUNCTION-NAME, v.1
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 16 Mar 89 22:43:21 PST
Received: from Semillon.ms by ArpaGateway.ms ; 16 MAR 89 22:40:08 PST
Date: 16 Mar 89 22:34 PST
From: masinter.pa@Xerox.COM
Subject: Issue: SETF-FUNCTION-VS-MACRO, SETF-PLACES, FUNCTION-NAME, v.1
To: X3J13@sail.stanford.edu
line-fold: NO
Message-ID: <890316-224008-6866@Xerox>
This issue has been renamed several times; however, it is
the same old issue. I say this lest anyone think we can
'two week' it away.
We didn't have a 'letter ballot' and so we have to talk
about it. Maybe.
Additional Comments are at the end; including a fairly substantial
additional proposal.
!
Issue: FUNCTION-NAME
References: SETF rules for what -place- can be (pp.94-7)
FBOUNDP function (p.90)
FMAKUNBOUND function (p.92)
FUNCTION special form (p.87)
SYMBOL-FUNCTION and setf of symbol-function (p.90)
88-002R pages 1-21, 2-21, 2-26, 2-39, 2-44, 2-46, 2-51, and 2-55
(There are additional references for the MEDIUM and LARGE
proposals, but they are not listed here. They're obvious.)
Related issues: SETF-FUNCTION-VS-MACRO, SETF-PLACES (both subsumed by this)
Category: ADDITION
Edit history: Version 1, 23-Jan-89, by Moon
(based on discussion at X3J13 meeting)
Problem description:
The Common Lisp Object System needs a well-defined way to relate the name
and arguments of a writer function to those of a reader function, because
both functions can be generic and can have user-defined methods. The way
that was adopted into Common Lisp when X3J13 voted to accept document
88-002R was to use a list (SETF reader) as the name of the writer function.
Some changes to the non-object-oriented portion of Common Lisp are required
in order to support this.
This issue has three proposals.
Proposal (FUNCTION-NAME:SMALL):
Add a new concept "function-name" (called "function-specifier" in
88-002R). A function-name is either a symbol or a 2-element list whose
first element is the symbol SETF and whose second element is a symbol.
Implementations are free to extend the syntax of function-names to
include lists beginning with additional symbols other than SETF.
Add a new function (FDEFINITION function-name), which returns the
current global function definition named by function-name, or signals
an error if there is no global function definition. This follows all
the same rules listed for SYMBOL-FUNCTION in CLtL p.90.
Add SETF of FDEFINITION to change the current global function definition
named by a function-name. This follows all the same rules listed for
SETF of SYMBOL-FUNCTION in CLtL p.90.
Change the FBOUNDP and FMAKUNBOUND functions, and the FUNCTION special
form, to accept function-names in place of symbols. Implementation
defined extensions to the syntax of function-names cannot use the
symbol LAMBDA, since FUNCTION already uses that symbol.
Change the rules for SETF places (CLtL pp.94-7) by adding the following
clause after all the existing clauses:
- Any other list whose first element is a symbol, call it reader.
In this case, SETF expands into a call to the function named by the
list (SETF reader). The first argument is the new value and the
remaining arguments are the values of the remaining elements of
-place-. This expansion occurs regardless of whether reader or
(SETF reader) is defined as a function locally, globally, or not at
all. For example,
(SETF (reader arg1 arg2...) new-value)
expands into a form with the same effect and value as
(LET ((#:temp-1 arg1) ;force correct order of evaluation
(#:temp-2 arg2)
...
(#:temp-0 new-value))
(FUNCALL (FUNCTION (SETF reader)) #:temp-0 #:temp-1 #:temp-2...)).
Change the functions GET-SETF-METHOD and GET-SETF-METHOD-MULTIPLE-VALUE
to implement the above change to the rules.
Document that a function named (SETF reader) should return its first
argument as its only value, in order to preserve the semantics of SETF.
Change the macro DEFGENERIC and the function ENSURE-GENERIC-FUNCTION to
refer to the function FDEFINITION where they now refer to the function
SYMBOL-FUNCTION.
Change the macros DEFCLASS, DEFGENERIC, and DEFMETHOD, the special forms
GENERIC-FLET and GENERIC-LABELS, and the functions DOCUMENTATION and
ENSURE-GENERIC-FUNCTION to use the term "function-name" where they now
use the term "function-specifier" or "function specifier".
Rationale for FUNCTION-NAME:SMALL:
This is the minimum change to Common Lisp needed to do what 88-002R says
about (SETF reader). Giving implementations freedom to extend the syntax
of function-names allows for current practice. Changing the name from
"function-specifier" to "function-name" avoids confusion and improves
consistency with the rest of the language, at the cost of a few small
changes to 88-002R.
Proposal (FUNCTION-NAME:MEDIUM):
Everything in FUNCTION-NAME:SMALL, and in addition:
Change the DEFUN macro to accept a function-name for its name argument,
instead of only accepting a symbol. If function-name is (SETF sym),
the body is surrounded by an implicit block named sym.
Rationale for FUNCTION-NAME:MEDIUM:
Keeping DEFUN consistent with DEFMETHOD is a good idea. Also 88-002R
says "The name of a generic function, like the name of an ordinary
function, can be either a symbol or a two-element list whose...", which
implies this change to DEFUN.
Proposal (FUNCTION-NAME:LARGE):
Everything in FUNCTION-NAME:MEDIUM, and in addition the following
numbered points, each of which could be adopted independently,
except where explicitly noted:
1. Change the function COMPILE to accept a function-name as its name
argument.
2. Change the function DISASSEMBLE to accept a function-name as its name
argument.
3. Change the FTYPE, INLINE, and NOTINLINE declarations and proclamations
to accept function-names, not just symbols, as function names.
4. Change the FLET and LABELS special forms to accept a function-name in
the name position, not just a symbol.
5. Change the TRACE and UNTRACE macros to accept function-names, not just
symbols, in the function name positions.
6. Change the ED function to accept (ED function-name) in place of
(ED symbol).
7. Change the syntax of a function call to allow a function-name as the
first element of the list, rather than allowing only a symbol.
8. Change the DEFMACRO macro and the MACROLET special form to accept a
function-name in the name position, not just a symbol. Change the
MACRO-FUNCTION function to accept function-names, not just symbols.
Change the last rule for SETF places to use
((SETF reader) #:temp-0 #:temp-1 #:temp-2...)
in place of
(FUNCALL (FUNCTION (SETF reader)) #:temp-0 #:temp-1 #:temp-2...)
so that (SETF reader) can be defined as a macro. This depends on item
7. If item 4 is rejected, MACROLET should be stricken from this item.
9. Add an optional environment argument to FDEFINITION, SETF of
FDEFINITION, FBOUNDP, and FMAKUNBOUND. This is the same as the
&environment argument to a macroexpander. This argument can be used to
access local function definitions, to access function definitions in the
compile-time remote environment, and to modify function definitions in
the compile-time remote environment.
10. Change the second, third, fourth, fifth, seventh, and ninth rules for
SETF places so that they only apply when the function-name refers to the
global function definition, rather than a locally defined function or
macro. (The ninth rule is the one that refers to DEFSETF and
DEFINE-SETF-METHOD; the other rules listed are the ones that list
specific built-in functions). The effect of this change is that SETF
methods defined for global functions are ignored when there is a local
function binding; instead, the function named (SETF reader), which may
have a local function binding, is called. This change is most useful
in connection with item 4, but does not actually depend on it.
11. Clarify that the eighth rule for SETF places (the one for macros)
uses MACROEXPAND-1, not MACROEXPAND.
Rationale for FUNCTION-NAME:LARGE:
This extends the new feature throughout the language, in order to make
things generally more consistent and powerful. Point by point:
1,2,3 - one should be able to compile, examine, and make declarations
about functions regardless of whether they are named with symbols or
with lists.
4 - locally defined non-generic SETF functions are a logical companion
to locally defined generic SETF functions, which can be defined with
GENERIC-FLET or GENERIC-LABELS. They make sense on their own, since one
might define a local reader function and want a local writer function
to go with it.
5,6 - one should be able to apply development tools to functions
regardless of how they are named. The function DOCUMENTATION was already
updated to work for function-names by 88-002R. There might be some
difficulty with implementation-dependent syntax extensions to TRACE and
UNTRACE conflicting with this new syntax.
7 - this restores consistency between the FUNCTION special form and the
first element of a function call form.
8 - it seems more consistent to allow macros to be named the same way
that ordinary functions are named. However, this might be considered
redundant with DEFSETF.
9 - this is not needed by the "chapter 1 and 2" level of CLOS, but might
be used by the metaobject based implementation of ENSURE-GENERIC-FUNCTION.
10 - this change was in SETF-FUNCTION-VS-MACRO and makes item 4 more useful.
11 - this change was in SETF-FUNCTION-VS-MACRO and is a good idea, but
actually is independent of everything else being proposed here.
Examples:
;This is an example of the sort of syntax 88-002R allows
(defmethod (setf child) (new-value (parent some-class))
(setf (slot-value 'child parent) new-value)
(update-dependencies parent)
new-value)
(setf (child foo) bar)
;If SETF of SUBSEQ was not already built into Common Lisp,
;it could have been defined like this, if the MEDIUM or LARGE
;proposal is adopted.
(defun (setf subseq) (new-value sequence start &optional end)
(unless end (setq end (length sequence)))
(setq end (min end (+ start (length new-value))))
(do ((i start (1+ i))
(j 0 (1+ j)))
((= i end) new-value)
(setf (elt sequence i) (elt new-value j))))
;The preceding example would have to be defined like this
;if only the SMALL proposal is adopted. This is a method
;all of whose parameter specializer names are T.
(defmethod (setf subseq) (new-value sequence start &optional end)
(unless end (setq end (length sequence)))
(setq end (min end (+ start (length new-value))))
(do ((i start (1+ i))
(j 0 (1+ j)))
((= i end) new-value)
(setf (elt sequence i) (elt new-value j))))
;Another example, showing a locally defined setf function
(defun frobulate (mumble)
(let ((table (mumble-table mumble)))
(flet ((foo (x)
(gethash x table))
((setf foo) (new x)
(setf (gethash x table) new)))
..
(foo a)
..
(setf (foo a) b))))
;get-setf-method could implement setf functions by calling
;this function when the earlier rules do not apply
(defun get-setf-method-for-setf-function (form)
(let ((new-value (gensym))
(temp-vars (do ((a (cdr form) (cdr a))
(v nil (cons (gensym) v)))
((null a) v))))
(values temp-vars
(cdr form)
(list new-value)
`(funcall #'(setf ,(car form)) ,new-value ,@temp-vars)
`(,(car form) ,@temp-vars))))
Current practice:
No implementation supports exactly what is proposed. Symbolics Genera
and the TI Explorer support something close to the MEDIUM proposal, but
differing in a number of details. Symbolics Genera supports items 1, 2,
3, 6, and 11, and modified forms of items 5 and 8, of the LARGE proposal.
Moon considers this proposal's variations from Symbolics current practice
to be an improvement, although incompatible in some cases.
Many implementations currently support only symbols as function names.
Symbolics Genera and the TI Explorer have some additional function-name
syntaxes.
Cost to Implementors:
The SMALL and MEDIUM proposals are estimated to be no more than 50 lines
of code and require no changes to the "guts" of the interpreter and
compiler. Most of the code for this can be written portably and was
shown on two slides at the X3J13 meeting.
Some of the changes in the LARGE proposal are trivial, some require
the compiler to use EQUAL instead of EQ to compare function names, and
items 4, 7, and 8 might require a more substantial implementation
effort. Even that effort is estimated to be negligible compared to
the effort required to implement CLOS.
Cost to Users:
No cost to users, other than program-understanding programs, since this
is an upward compatible addition.
As with any language extension, some program-understanding programs may
need to be enhanced. A particular issue here is programs that assume
that all function names are symbols. They may use GET to access
properties of a function name or use EQ or EQL (perhaps via MEMBER or
ASSOC) to compare function names for equality. Such programs will need
improvement before they can understand programs that use the new feature,
but otherwise they will still work.
Cost of non-adoption:
We would have to make some other language change since the language
became inconsistent when 88-002R was adopted.
Performance impact:
This has no effect on performance of compiled code. It might slow
down the compiler and interpreter but not by very much.
Benefits:
CLOS will work as designed.
Esthetics:
Some people dislike using anything but symbols to name functions.
Other people would prefer that if the change is to be made at all,
the LARGE proposal be adopted so that the language is uniform in its
treatment of the new extended function names. Other proposals for
how to deal with SETF in CLOS were considerably less esthetic,
especially when package problems are taken into account.
SETF would be more esthetic, but less powerful, if it had only the
proposed setf functions and did not have setf macros. Such a major
incompatible change is of course out of the question; however, if setf
functions are stressed over setf macros, SETF will be much easier to
teach.
Discussion:
Moon supports at least FUNCTION-NAME:MEDIUM. He does not necessarily
approve of all parts of FUNCTION-NAME:LARGE.
!
Additional Comments:
On the whole, I like this presentation much better than either of the
other two writeups that were circulated previously. I suspect that it
might be necessary to vote on each of the items in the LARGE proposal
individually, though. I think I would support items 1, 2, and 11, and
don't have any particular objections to 3, 5, and 6. For item 4, if
consistency with GENERIC-FLET and GENERIC-LABELS is an object, another
alternative is to change those two special forms to be like ordinary
FLET and LABELS, instead of vice versa.
- - - - - - -
I support FUNCTION-NAME:MEDIUM and may support LARGE once I think about
it some more.
As I explained in Hawaii, support for either of these is based on the
:conc-name bugs being removed from the condition system. Of course, I
believe the best way to do that is to CLOSify it.
- - - - - - - -
I'm still thinking about this, but while I am I wanted point out that
MEDIUM is unacceptable to me because I don't think FLET and DEFUN should
disagree on what they permit as defined names. If FLET were added to
MEDIUM, I suspect I'd think it was an internally consistent position.
LARGE has an appeal to me in general, but I'm still mulling over
the specifics.
- - - - - - - - - -
I favor the FUNCTION-NAME:LARGE proposal, because it defines a single,
useful notion of what a function name is. The other proposals have
the flaw that there are two kinds of function names: symbols, and
extended names, with only some of the Lisp primitives accepting the
latter. This may be convenient for some implementations, for the
short term, but it fragments the language.
I have two other comments on the proposal.
A. Reducing the Cost to Implementors
One observation you could put in the Cost To Implementors section is
that none of the SMALL, MEDIUM, or LARGE proposals require changes to
the "guts" of the interpreter and compiler. This is because an
implementation is free to use plain symbols internally to name
functions, and use a hack like JonL's SETF:|3.FOO.BAR| mapping to
convert non-symbol names to symbols. This conversion would be done as a
part of parsing the handful of forms which accept function names, and
then all other passes of the interpreter and compiler (the "guts") would
just see symbols. (By "parsing" I mean ensuring the right number and
type of syntactic subforms. You can see that this is a very early and
simple stage of processing.) Or, Lisp compilers with an "alphatization"
phase could perform function name symbolization at that phase.
B. Finishing the Job of Regularization
I'd like to suggest two additions to your smorgasbord of options in the
FUNCTION-NAME:LARGE section of the proposal. One addition would
regularize a major special case of functions--lambda expressions. The
other addition would reaffirm an unstated regularity in the language,
that function names can stand in for functions under FUNCALL and APPLY.
Not only can the treatment of symbolic and setf-list function names be
regularized, but lambda too can be treated in a consistent manner.
If these two points are added to your proposal, the language as a whole
would have a completely uniform treatment of functions and function
names. Here they are:
13. Declare that any function name is a suitable argument to FUNCALL and
APPLY. In such a case, the function name is passed to FDEFINITION,
and the result (which may in turn be a function name) is called.
That is, the following two expressions are equivalent, when fname
is a function name:
(FUNCALL fname x y)
<==>
(FUNCALL (FDEFINITION fname) x y)
Note that the definition is sought in the global environment.
Compare with the rule which applies to a function name occurs,
syntactically, as the car of a list in code:
(fname x y)
<==>
(FUNCALL (FUNCTION fname) x y)
<==> (under proposal item 9)
(FUNCALL (FDEFINITION fname <local-environment>) x y)
12. Declare that any lamba expression (i.e., a list whose car is LAMBDA and
whose cdr is a well-formed lambda argument list and body) is a function
name. The effects of the function name accessors on lambda expressions
are as follows. FDEFINITION returns an implementation-defined value which
is the function specified the lambda expression, closed in the global
environment. This FDEFINITION value cannot be changed by SETF.
FBOUNDP always returns T, and MAKUNBOUND is an error.
Esthetics:
The effect of items 11 and 12 is to complete the regularization of
Common Lisp's treatment of functions and function names. The total
effect of proposal items 1 through 12 is that Lisp has just two notions
for referencing function objects: FUNCTIONS, which are Lisp objects that
directly represent executable code, and FUNCTION NAMES, which can denote
functions. Symbols, SETF function names, and lambda expressions are all
examples of the latter notion. The former notion is highly
implementation dependent. Function names can occur as syntactic
entities in code. FUNCALL and APPLY work uniformly on both functions
and function names, with a consistent semantics.
Lambda expressions are often thought to denote "anonymous" functions, so
it may seem paradoxical to treat them as names. The paradox is only
apparent, since the expression itself has the properties of a Lisp
function name: It is (typically) a cons tree which can be read, printed,
and stored in source files, and it denotes a well-defined Lisp function.
Benefit to Users:
Function names are useful for representing objects in remote
environments, because they need not be bound at all times to the same
function, or to any function, and because they are typically stable in
meaning across reads and prints, where plain functions are not.
Programs which deal simultaneously with remote and local environments,
such as CLOS, can probably be simplified, since function names
can be used uniformly, rather than an ad-hoc mixture of functions
and function names.
The language as a whole become more uniform from these additions and
clarifications, making it easier to learn and use. (See Esthetics.)
Cost to Implementors:
Interpreters which currently have a special case check for application
of lambda expressions would need to modify this check to call
FDEFINITION when a list of any sort is encountered. Note that all
Common Lisps already must perform some such check, since lambda
expressions can be funcalled (and this is currently a very special case,
the only standard case of a list being funcalled). This means that
every Lisp already has a place to insert the required call to
FDEFINITION.
In some implementations, FDEFINITION of a lambda expression could be that
lambda-expression itself. In others featuring a pre-eval codewalk, the
walk would be done by FDEFINITION, which would return an appropriate
closure.
Cost of Non-adoption:
Rather than two notions for function references (functions and function
names), there would be several notions, each corresponding to the valid
inputs for particular group of primitives. APPLY and FUNCALL would
accept functions, symbolic names, and lambda expressions, but not setf
function names. FDEFINITION and its kind would accept symbols and setf
function names but not lambda expressions. If the :LARGE proposal is
not adopted, this fragmentation would also apply to the various syntaxes
involving function names; some names would be acceptable to DEFUN
but not to FLET, etc.
- - - - - - - - - - - - -
> 13. Declare that any function name is a suitable argument to FUNCALL and
> APPLY. In such a case, the function name is passed to FDEFINITION,
> and the result (which may in turn be a function name) is called.
I don't think this is such a good idea. The case of automatically coercing
a symbol to a function is needed because it provides a portable mechanism
for indirect addressing of a function; I haven't seen a reason to need this
for non-symbol function specs. But more important is that coercing a
symbol to a function is a trivial operation that is reasonable to do at
run time on each call without adding a significant amount of overhead.
FDEFINITION, on the other hand, is a much more expensive operation -- at
best it might use GET to do a property list lookup, or it could be using
string-append and INTERN to convert the name to a symbol. In either case,
I think this is more work than you want to do on each call.
> 12. Declare that any lamba expression (i.e., a list whose car is LAMBDA and
> whose cdr is a well-formed lambda argument list and body) is a function
> name. The effects of the function name accessors on lambda expressions
> are as follows. FDEFINITION returns an implementation-defined value which
> is the function specified the lambda expression, closed in the global
> environment. This FDEFINITION value cannot be changed by SETF.
> FBOUNDP always returns T, and MAKUNBOUND is an error.
The exceptions for SETF and MAKUNBOUND show that this is not really as
consistent as you might like. Furthermore, the FUNCTION special form would
have to treat a LAMBDA expression as a function, not a function name, in
order for it to be lexically scoped. It seems like this might just cause
confusion rather than consistency.
∂16-Mar-89 2254 X3J13-mailer Issue: HASH-TABLE-ACCESS (version 2)
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 16 Mar 89 22:53:48 PST
Received: from Semillon.ms by ArpaGateway.ms ; 16 MAR 89 22:51:36 PST
Date: 16 Mar 89 22:51 PST
From: masinter.pa@Xerox.COM
Subject: Issue: HASH-TABLE-ACCESS (version 2)
to: X3J13@sail.stanford.edu
Line-fold: NO
Message-ID: <890316-225136-6875@Xerox>
Version 1 of this issue was distributed prior
to the October 1988 meeting.
This version was produced in response to
comments there.
Additional comments are at the end.
!
Issue: HASH-TABLE-ACCESS
References: hash-tables (Chapter 21 of CLtL)
Category: ADDITION
Edit History: 13-Sept-88, version 1 by Walter van Roggen
13-Oct-88, version 2 by Walter van Roggen
Problem Description:
There are many characteristics of hash-tables which are specified upon
creation but are not accessible afterwards.
Proposal: (HASH-TABLE-ACCESS:PROVIDE)
Add the following functions to the language:
HASH-TABLE-REHASH-SIZE hash-table
Returns the current rehash size of a hash table.
HASH-TABLE-REHASH-THRESHOLD hash-table
Returns the current rehash threshold of a hash table.
HASH-TABLE-SIZE hash-table
Returns the current size of a hash table.
HASH-TABLE-TEST hash-table
Returns the test used for comparing keys in the hash table.
By default the value will be EQL.
Current Practice:
VAX LISP and Lucid 3.0 implement the proposal.
Cost to Implementors:
Most of these should be trivial to implement, since the information
must be present for nearly all types.
Cost to Users:
None. This is an upward-compatible extension.
Cost of Non-Adoption:
The benefits would not be available in a portable fashion.
Benefits:
Programs would be able to access useful information otherwise hidden.
For example, it would allow programs to gain statistics about hash
table usage that might enable better tuning.
Discussion:
None of these are required to be SETF'able, though some might be
reasonable implementation-dependent extensions. Including such
modification abilities might constrain some implementations unduly.
This first appeared in ">GLS>clarifications.text" of 12/06/85.
!
Additional Comments:
Adding accessors for hash tables seems like a reasonable idea to me,
but I don't like the idea of being able to SETF them.
- - - - -
HASH-TABLE-REHASH-SIZE hash-table
Returns the current rehash size of a hash table.
HASH-TABLE-REHASH-THRESHOLD hash-table
Returns the current rehash threshold of a hash table.
HASH-TABLE-SIZE hash-table
Returns the current size of a hash table.
I don't think the "current" values of these are well defined except in
reference to one particular implementation technique (I believe the
corresponding arguments to make-hash-table are advisory in nature and can be
ignored when not applicable). For instance, can you describe what an
implementation using alists should return from each of these functions?
I do support the addition of HASH-TABLE-TEST.
- - - - - - -
Well, I think there would be some leeway on the return values for
HASH-TABLE-REHASH-SIZE/REHASH-THRESHOLD/SIZE too.
If an implementation really did implement them with association lists,
perhaps reasonable return values would be:
HASH-TABLE-REHASH-SIZE 1
HASH-TABLE-REHASH-THRESHOLD 1.0
HASH-TABLE-SIZE the length of the association list
- - - - - - -
I still would like to see SETF enabled for:
HASH-TABLE-REHASH-SIZE
HASH-TABLE-REHASH-THRESHOLD
At issue is the rate of "rehashing" between successive, novel entries
into the table, and the rate of consing to maintain the table. [Perhaps
this would be clearer if there were a function in the language called
REHASH; Lucid 3.0 has such a function, and Interlisp-D had such a function.]
Of course, the setf methods for these two accessors would do a good deal of
argument and consistency checking. So what possible harm could come from
permitting the user to alter these parameters after initial creation? those
implementations that substitute alists for "hash-tables" can try to adapt to
this view, that some kind of "rehash" step [with some determined cost] is
done after the entry which first makes:
(hash-table-count x) > (* (hash-table-size x)
(hash-table-rehash-threshold x))
be true [assuming a floating-point value for the threshold]. This is part
of the whole point for having "hash tables" in the language.
- - - - -
I'm quite sympathetic to being able to SETF some of the hash-table readers,
but I didn't think it appropriate to require of all implementations.
- - - - - -
The value of HASH-TAbLE-REHASH-SIZE and HASH-TAbLE-REHASH-THRESHOLD are
implementation dependent, and guaranteed to be greater than or equal to the
values given to MAKE-HASH-TABLE, and idempotent, in that if you make a hash
table with the same values as a given hash table then the -REHASH-SIZE and
-REHASH-THRESHOLD of the newly created one will be the same as the input
values. (This says that they may be thresholded upward in some
implementation-dependent-manner.)
HASH-TABLE-SIZE should be greater than or equal to the count of things
MAPHASH would iterate over, and HASH-TABLE-TEST will return one of the
symbols EQ EQL EQUAL (or, if HASH-TABLE-TESTS passes, EQUALP), even if #'EQ
#'EQUAL #'EQL are given.
Normally implementation-dependent-extensions are explicitly discouraged;
I'm no longer sure at the momemnt whether PACKAGE-CLUTTER would explicilty
disallow such extensions unless they are explicitly allowed, but we should
be cautious in throwing around phrases like "might be
reasonable implementation-dependent extensions" if we don't mean it. I
would take that out, actually.
∂16-Mar-89 2330 X3J13-mailer Issue: LOAD-OBJECTS (Version 3)
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 16 Mar 89 23:30:04 PST
Received: from Cabernet.ms by ArpaGateway.ms ; 16 MAR 89 23:27:37 PST
Date: 16 Mar 89 23:26 PST
From: masinter.pa@Xerox.COM
Subject: Issue: LOAD-OBJECTS (Version 3)
To: x3j13@sail.stanford.edu
line-fold: NO
Message-ID: <890316-232737-6946@Xerox>
Version 1 was distributed in hardcopy form and discussed
at the January 1989 meeting.
Discussion so far has been considering alternatives of
load functions rather than load forms, or having two
generic functions.
!
Issue: LOAD-OBJECTS
References: none
Related issues: LOAD-TIME-EVAL,
CONSTANT-COMPILABLE-TYPES,
CONSTANT-CIRCULAR-COMPILATION
Category: ADDITION
Forum: Cleanup
Edit history: Version 1, 2-Jan-89, by Moon (for discussion)
Version 2, 13-Jan-89, by Moon (draft updated from discussion)
Version 3, 9-Mar-89, by Moon (changes suggested by discussion)
Problem description:
Common Lisp doesn't provide any way to use an object of a user-defined
type (defined with DEFCLASS or DEFSTRUCT) as a constant in a program
compiled with COMPILE-FILE. The problem is that LOAD has to be able
to "reconstruct" an equivalent object when the compiled-code file is
loaded, but the programmer has no way to tell LOAD how to do that.
Proposal (LOAD-OBJECTS:MAKE-LOAD-FORM):
Define a new generic function named MAKE-LOAD-FORM, which takes one
argument and returns two values. The argument is an object that is
referenced as a constant or as a self-evaluating form in a file being
compiled by COMPILE-FILE. The objective is to enable LOAD to
construct an equivalent object.
The first value, called the "creation form," is a form that, when
evaluated at load time, should return an object that is equivalent to
the argument. The exact meaning of "equivalent" depends on the type
of object and is up to the programmer who defines a method for
MAKE-LOAD-FORM. This is the same type of equivalence discussed
in issue CONSTANT-COMPILABLE-TYPES.
The second value, called the "initialization form," is a form that,
when evaluated at load time, should perform further initialization of
the object. The value returned by the initialization form is ignored.
If the MAKE-LOAD-FORM method returns only one value, the
initialization form is NIL, which has no effect. If the object used
as the argument to MAKE-LOAD-FORM appears as a constant in the
initialization form, at load time it will be replaced by the
equivalent object constructed by the creation form; this is how the
further initialization gains access to the object.
Both the creation form and the initialization form can contain
references to objects of user-defined types (defined precisely below).
However, there must not be any circular dependencies in creation forms.
An example of a circular dependency is when the creation form for the
object X contains a reference to the object Y, and the creation form
for the object Y contains a reference to the object X. A simpler
example would be when the creation form for the object X contains
a reference to X itself. Initialization forms are not subject to
any restriction against circular dependencies, which is the entire
reason that initialization forms exist. See the example of circular
data structures below.
The creation form for an object is always evaluated before the
initialization form for that object. When either the creation form or
the initialization form references other objects of user-defined types
that have not been referenced earlier in the COMPILE-FILE, the
compiler collects all of the creation and initialization forms. Each
initialization form is evaluated as soon as possible after its
creation form, as determined by data flow. If the initialization form
for an object does not reference any other objects of user-defined
types that have not been referenced earlier in the COMPILE-FILE, the
initialization form is evaluated immediately after the creation form.
If a creation or initialization form F references other objects of
user-defined types that have not been referenced earlier in the
COMPILE-FILE, the creation forms for those other objects are evaluated
before F, and the initialization forms for those other objects are
also evaluated before F whenever they do not depend on the object
created or initialized by F. Where the above rules do not uniquely
determine an order of evaluation, which of the possible orders of
evaluation is chosen is unspecified.
While these creation and initialization forms are being evaluated, the
objects are possibly in an uninitialized state, analogous to the state
of an object between the time it has been created by ALLOCATE-INSTANCE
and it has been processed fully by INITIALIZE-INSTANCE. Programmers
writing methods for MAKE-LOAD-FORM must take care in manipulating
objects not to depend on slots that have not yet been initialized.
It is unspecified whether LOAD calls EVAL on the forms or does some
other operation that has an equivalent effect. For example, the
forms might be translated into different but equivalent forms and
then evaluated, they might be compiled and the resulting functions
called by LOAD, or they might be interpreted by a special-purpose
interpreter different from EVAL. All that is required is that the
effect be equivalent to evaluating the forms.
COMPILE-FILE calls MAKE-LOAD-FORM on any object that is referenced as
a constant or as a self-evaluating form, if the object's metaclass is
STANDARD-CLASS, STRUCTURE-CLASS, any user-defined metaclass (not a
subclass of BUILT-IN-CLASS), or any of a possibly-empty
implementation-defined list of other metaclasses. COMPILE-FILE will
only call MAKE-LOAD-FORM once for any given object (compared with EQ)
within a single file.
It is valid for user programs to call MAKE-LOAD-FORM in other
circumstances, providing the argument's metaclass is not BUILT-IN-CLASS
or a subclass of BUILT-IN-CLASS.
Define a new function named MAKE-LOAD-FORM-USING-SLOTS, which takes
one required argument and one optional argument and returns two
values. This can be useful in user-written MAKE-LOAD-FORM methods.
The first argument is the object. The optional second argument is a
list of the names of the slots to preserve; it defaults to all of the
local slots. MAKE-LOAD-FORM-USING-SLOTS returns forms that construct
an equivalent object using MAKE-INSTANCE and SETF of SLOT-VALUE for
slots with values, or SLOT-MAKUNBOUND for slots without values, or
using other functions of equivalent effect.
MAKE-LOAD-FORM-USING-SLOTS returns two values, thus it can deal with
circular structures. MAKE-LOAD-FORM-USING-SLOTS works for any object
of metaclass STANDARD-CLASS or STRUCTURE-CLASS. Whether the result is
useful in an application depends on whether the object's type and slot
contents fully capture the application's idea of the object's state.
MAKE-LOAD-FORM of an object of metaclass STANDARD-CLASS or
STRUCTURE-CLASS for which no user-defined method is applicable signals
an error. It is valid to implement this either by defining default
methods on STANDARD-OBJECT and STRUCTURE-OBJECT that signal an error
or by having no applicable method for those classes.
Examples:
;; Example 1
(defclass my-class ()
((a :initarg :a :reader my-a)
(b :initarg :b :reader my-b)
(c :accessor my-c)))
(defmethod shared-initialize ((self my-class) ignore &rest ignore)
(unless (slot-boundp self 'c)
(setf (my-c self) (some-computation (my-a self) (my-b self)))))
(defmethod make-load-form ((self my-class))
`(make-instance ',(class-name (class-of self))
:a ',(my-a self) :b ',(my-b self)))
In this example, an equivalent instance of my-class is reconstructed
by using the values of two of its slots. The value of the third slot
is derived from those two values.
Another way to write the last form in the above example would have been
(defmethod make-load-form ((self my-class))
(make-load-form-using-slots self '(a b)))
;; Example 2
(defclass my-frob ()
((name :initarg :name :reader my-name)))
(defmethod make-load-form ((self my-frob))
`(find-my-frob ',(my-name self) :if-does-not-exist :create))
In this example, instances of my-frob are "interned" in some way.
An equivalent instance is reconstructed by using the value of the
name slot as a key for searching existing objects. In this case
the programmer has chosen to create a new object if no existing
object is found; alternatively she could have chosen to signal an
error in that case.
;; Example 3
(defclass tree-with-parent () ((parent :accessor tree-parent)
(children :initarg :children)))
(defmethod make-load-form ((x tree-with-parent))
(values
;; creation form
`(make-instance ',(class-of x) :children ',(slot-value x 'children))
;; initialization form
`(setf (tree-parent ',x) ',(slot-value x 'parent))))
In this example, the data structure to be dumped is circular, because
each parent has a list of its children and each child has a reference
back to its parent. Suppose make-load-form is called on one object in
such a structure. The creation form creates an equivalent object and
fills in the children slot, which forces creation of equivalent
objects for all of its children, grandchildren, etc. At this point
none of the parent slots have been filled in. The initialization form
fills in the parent slot, which forces creation of an equivalent
object for the parent if it was not already created. Thus the entire
tree is recreated at load time. At compile time, MAKE-LOAD-FORM is
called once for each object in the true. All of the creation forms
are evaluated, in unspecified order, and then all of the
initialization forms are evaluated, also in unspecified order.
;; Example 4
(defstruct my-struct a b c)
(defmethod make-load-form ((s my-struct))
(make-load-form-using-slots s))
In this example, the data structure to be dumped has no special
properties and an equivalent structure can be reconstructed
simply by reconstructing the slots' contents.
Rationale:
Only the programmer who designed a class can know the correct
way to reconstruct objects of that class at load time, therefore
the reconstruction should be controlled by a generic function.
Using EVAL as the interface for telling LOAD what to do provides
full generality.
MAKE-LOAD-FORM returns two values so that circular structures can
be handled. If CONSTANT-CIRCULAR-COMPILATION is rejected,
MAKE-LOAD-FORM will only return one value, although implementations
that make an extension to support circular constants will probably
also make the extension to accept two values from MAKE-LOAD-FORM.
The default for class objects and structures is to signal an error,
rather than picking some particular object reconstruction technique,
because no reconstruction technique is appropriate for all objects.
It only takes two lines of code, as in example 4, to instruct the
compiler to use the technique that most often has been suggested
as the default.
MAKE-LOAD-FORM has a natural resemblance to PRINT-OBJECT, as a hook
for the programmer to control the system's actions.
The order of evaluation rules for creation and initialization forms
eliminate the possibility of partially initialized objects in the
absence of circular structures, and reduce it to the minimum possible
in the presence of circular structures. This allows nodes in
non-circular structures to be built out of fully initialized subparts.
Current practice:
Symbolics Flavors has something like this, but under a different name.
The name Symbolics uses is not suitable for standardization.
JonL reports that Lucid is getting more and more requests for this.
Cost to Implementors:
This seems like only a few one-line changes in the compiled-code
file writer and reader. MAKE-LOAD-FORM-USING-SLOTS is a couple
dozen lines of code, assuming the presence of the CLOS metaobject
protocol or an implementation-dependent equivalent.
Cost to Users:
None.
Cost of non-adoption:
Serious impairment of the ability to use extended-type objects. Each
implementation will probably make up its own version of this as an
extension.
Performance impact:
None.
Benefits:
See Cost of non-adoption.
Esthetics:
No significant positive or negative impact.
Discussion:
It would be possible to define an additional level of protocol that
allows multiple classes to contribute to the reconstruction of an
object, combining initialization arguments contributed by each class.
Since a user can easily define that in terms of MAKE-LOAD-FORM without
modifying the Lisp system, it is not being proposed now.
Any type that has a read syntax is likely to appear as a quoted
constant or inside a quoted constant. Pathnames are one example, user
programs often define others. Also many implementations provide a way
to create a compiled-code file full of data (rather than compiled Lisp
programs), and such data probably include extended-type objects.
Moon supports this. David Gray and John Rose made major contributions
to the discussion that produced this improved version 2 proposal.
----- End Forwarded Messages -----
∂16-Mar-89 2334 X3J13-mailer Issue LOOP-AND-DISCREPANCY, version 1
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 16 Mar 89 23:34:11 PST
Received: from Cabernet.ms by ArpaGateway.ms ; 16 MAR 89 23:32:03 PST
Date: 16 Mar 89 23:31 PST
From: masinter.pa@Xerox.COM
To: X3J13@sail.stanford.edu
Subject: Issue LOOP-AND-DISCREPANCY, version 1
line-fold: NO
Message-ID: <890316-233203-6953@Xerox>
!
Issue: LOOP-AND-DISCREPANCY
References: Loop Facility document X3J13/89-004
Related issues:
Category: CHANGE CLARIFICATION
Edit history: Version 1, 15-Mar-88 by Steele
Problem description:
The treatment of the AND conjunction in FOR/AS and WITH clauses is not
consistent. Examples of the use of WITH are also not consistent in this
respect.
Page 2-5 implies by example that when AND is used to join two
FOR/AS clauses, the word FOR or AS must occur after the word AND.
Page 2-31 has formal syntax specifying that when AND is used to join two
WITH clauses, the word WITH must *not* occur after the word AND. Examples
on that page are consistent with this specification.
Page 2-41 has an example in which WITH is repeated after AND.
Proposal (LOOP-AND-DISCREPANCY:NO-REITERATION):
Let stand the formal syntax for WITH.
Change the description of FOR/AS clauses to specify that when
two or more such clauses are joined with AND, clauses after the
first do not have FOR or AS before them.
The complete formal syntax for FOR/AS may be described as follows:
for-as ::= {FOR | AS} for-as-subclause {AND for-as-subclause}*
for-as-subclause ::= for-as-arithmetic | for-as-in-list
| for-as-on-list | for-as-equals-then
| for-as-across | for-as-hash | for-as-package
for-as-arithmetic ::= var [type-spec] ...
and so on.
Examples:
> (loop for x from 1 to 10 ;Corrected from X3J13/89-004, page 2-5
and y = nil then x
collect (list x y))
((1 NIL) (2 1) (3 2) (4 3) (5 4) (6 5) (7 6) (8 7) (9 8) (10 9))
> (loop with (a b) float = '(1.0 2.0) ;Corrected from X3J13/89-004, page 2-41
and (c d) integer = '(3 4)
and (e f)
return (list a b c d e f))
(1.0 2.0 3 4 nil nil)
Rationale:
The treatment of AND should be internally consistent. There is no reason
to repeat the FOR/AS keyword. Not repeating the keyword emphasizes that
the subclauses are functionally linked under the heading of WITH or FOR.
(Compare to the third use of AND in LOOP, to link clauses controlled
by WHEN/IF/UNLESS. One does not repeat the WHEN; rather, the clauses
grouped by AND are controlled by a single WHEN.)
Current practice:
Symbolics LOOP allows FOR to be included or omitted after AND,
with identical meanings. WITH may not be repeated after AND.
Cost to Implementors: Small?
Cost to Users: Possible incompatibility with existing implementors' extensions.
Cost of non-adoption: Utter confusion.
Performance impact: None.
Benefits: Consistent treatment of AND within LOOP.
Esthetics:
Absolutely none. We're talking about LOOP here.
Discussion:
Steele supports this proposal. It is a reversal of his previous
suggestion on the topic, thanks to feedback from Moon.
----- End Forwarded Messages -----
∂17-Mar-89 0009 X3J13-mailer Issue: REAL-NUMBER-TYPE (version 3)
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 17 Mar 89 00:08:54 PST
Received: from Semillon.ms by ArpaGateway.ms ; 16 MAR 89 23:50:31 PST
Date: 16 Mar 89 23:49 PST
From: masinter.pa@Xerox.COM
Subject: Issue: REAL-NUMBER-TYPE (version 3)
To: x3J13@Sail.Stanford.EDU
Message-ID: <890316-235031-6996@Xerox>
!
Issue: REAL-NUMBER-TYPE
Forum: CLEANUP
References: Table 4-1.
Category: ADDITION
Edit history: 04-JAN-89, Version 1 by Bob Cassels, Don Sakahara, Kent Pitman,
and John Aspinall
08-JAN-89, Version 2 by Bob Cassels -- incorporate
Masinter's suggestion and make REAL a CLOS class
13-JAN-89, Version 3 by Cassels and Aspinall -- incorporate Marc LeBrun's
suggestions clarifying the relationship between CL
numeric type names and mathematical names
Status: For Internal Discussion
Problem Description:
There is no standard type specifier symbol for the CL type
'(OR RATIONAL FLOAT).
Proposal (REAL-NUMBER-TYPE:REAL):
Make REAL be a CL data type:
p.13 "Numbers"
Add: The NUMBER data type encompasses all of these kinds of
numbers. For convenience, there are names for some
subclasses of numbers. @i[Integers] and @i[ratios] are of
type RATIONAL. @i[Rational numbers] and @[floating-point
numbers] are of type REAL. @i[Real numbers] and @i[complex
numbers] are of type NUMBER.
Although the names of these types were chosen with the
terminology of mathematics in mind, the correspondences
are not always exact. Integers and ratios model the
corresponding mathematical concepts directly. Numbers
of the FLOAT type may be used to approximate real
numbers, both rational and irrational. The REAL type
includes all Common Lisp numbers which represent
mathematical real numbers, though there are
mathematical real numbers (irrational numbers)
which do not have an exact Common Lisp representation.
Only REAL numbers may be ordered using the <, >, <=,
and >= functions.
Compatibility note: The Fortran standard defines the term
"real datum" to mean "a processor approximation to the value
of a real number." In practice the Fortran "basic real" type
is the floating-point data type Common Lisp calls
SINGLE-FLOAT. The Fortran "double precision" type is
Common Lisp's DOUBLE-FLOAT. The Pascal "real" data type is
an "implementation-defined subset of the real numbers." In
practice this is usually a floating-point type, often what
Common Lisp calls DOUBLE-FLOAT.
A translation of an algorithm written in Fortran or Pascal
which uses "real" data usually will use some appropriate
precision of Common Lisp's FLOAT type. Some algorithms may
gain accuracy and/or flexibility by using Common Lisp's
RATIONAL or REAL types instead.
p.33 "Overlap, Inclusion, and Disjointness of Types":
Remove: The types RATIONAL, FLOAT, and COMPLEX are pairwise
disjoint subtypes of NUMBER.
Rationale: It might be thought that INTEGER and RATIO ...
Rationale: It might be thought that FIXNUM and BIGNUM ...
Add: The types RATIONAL and FLOAT are pairwise disjoint subtypes
of REAL.
The types REAL and COMPLEX are pairwise disjoint subtypes
of NUMBER.
Rationale: It might be thought that FIXNUM and BIGNUM should
form an exhaustive partition of the type INTEGER, that INTEGER
and RATIO should form an exhaustive partition of RATIONAL,
that RATIONAL and FLOAT should form an exhaustive partition of
REAL, and that REAL and COMPLEX should form an exhaustive
partition of NUMBER. These are all purposely avoided in order
to permit compatible experimentation with extensions to the
Common Lisp number system, such as the idea of adding explicit
representations of infinity or of positive and negative infinity.
p.43 Table 4-1 "Standard Type Specifier Symbols"
Add: REAL
p.49 "Type Specifiers that Abbreviate"
Add: (REAL low high)
Denotes the set of real numbers between low and high. ...
[As with RATIONAL and FLOAT.]
Make REAL a built-in CLOS class.
Proposal (REAL-NUMBER-TYPE:REALP):
Add a specific data type predicate REALP which tests for membership in
this type. [By analogy with NUMBERP.]
Test Case:
If a programmer wishes to test for "a number between 1 and 10", the
only current CL types would be '(or (rational 1 10) (float 1 10)) or
something like '(and numberp (not complexp) (satisfies range-1-10))
with (defun range-1-10 (real) (<= 1 real 10)). Both of these are
likely less efficient, and certainly less expressive than '(real 1 10).
Rationale:
Mathematics has a name for (OR RATIONAL FLOAT) -- it is "real".
This class is important because it is all the numbers which can be
ordered.
Throughout the "Numbers" chapter, the phrase "non-complex number" is
used.
MAX, MIN, p. 198 "The arguments may be any non-complex numbers."
CIS p. 207 "The argument ... may be any non-complex number."
Current Practice:
Probably nobody does this.
Cost to Implementors:
Some work is necessary to add this name. But since the underlying
type already exists the amount of work should be minimal.
Cost to Users:
Since this is an upward-compatible extension, it may be ignored by
users.
Cost of Non-Adoption:
Occasional inconvenience and/or inefficiency.
Benefits:
Mathematical clarity.
Ability to do CLOS method dispatch on the type.
Aesthetics:
As mentioned under "rationale," this would be a more concise way to
express a common programming idiom.
Discussion:
The name "non-complex number" is incorrect because future
implementations may wish to include numerical types which are neither
complex nor real. [e.g. pure imaginary numbers or quaternions]
The name "scalar" is incorrect because the mathematical concept of
scalar may indeed include complex numbers.
Fortran and Pascal use the name "real" to mean what CL calls
SINGLE-FLOAT. That should cause no significant problem, since a Lisp
program written using the type REAL will do mathematically what the
equivalent Fortran program would do. This is because Fortran's "real"
data-type is a subtype of the CL REAL type. The only differences
might be that the Lisp program could be less efficient and/or more
accurate.
A survey of several Fortran and Pascal books shows that the distinction
between INTEGER and REAL is that REAL numbers may have fractional
parts, while INTEGERs do not. Later discussions explain that REALs
cover a greater range. Much later discussions cover precision
considerations, over/underflow, etc. So the average Fortran or Pascal
programmer should be completely comfortable with the proposed Lisp
concept of REAL.
∂17-Mar-89 0817 X3J13-mailer Issue: COERCE-INCOMPLETE (Version 3)
Received: from Think.COM by SAIL.Stanford.EDU with TCP; 17 Mar 89 08:17:09 PST
Return-Path: <barmar@Think.COM>
Received: from OCCAM.THINK.COM by Think.COM; Fri, 17 Mar 89 10:56:55 EST
Date: Fri, 17 Mar 89 10:57 EST
From: Barry Margolin <barmar@Think.COM>
Subject: Issue: COERCE-INCOMPLETE (Version 3)
To: Kent M Pitman <KMP@stony-brook.scrc.symbolics.com>
Cc: masinter.pa@xerox.com, x3j13@sail.stanford.edu
In-Reply-To: <890316191820.6.KMP@BOBOLINK.SCRC.Symbolics.COM>
Message-Id: <19890317155747.8.BARMAR@OCCAM.THINK.COM>
Date: Thu, 16 Mar 89 19:18 EST
From: Kent M Pitman <KMP@stony-brook.scrc.symbolics.com>
Date: Thu, 16 Mar 89 18:00 EST
From: Barry Margolin <barmar@Think.COM>
...
Problem with DEPRECATE: Didn't we specify that the way to convert a
lambda expression into a function object is to use (COERCE x 'FUNCTION)?
Or did we also define a new function that does this?
Re-read FUNCTION-TYPE. The thing Beckerle really wanted and finally
got (over my objection) was that COERCE did nothing `hard' ... What
it ended up being able to be do can be expressed by #'IDENTITY and
#'SYMBOL-FUNCTION.
(COERCE x 'FUNCTION) ==
(ETYPECASE X
(SYMBOL (SYMBOL-VALUE X))
(FUNCTION X))
I don't really think anything more needs to be provided, even if we
DEPRECATE coerce.
I can't find my copy of FUNCTION-TYPE, but I remember it being amended
to add coercion of lambda expressions to functions. Maybe my memory is
faulty, but I remember something like
(COERCE X 'FUNCTION) ==
(ETYPECASE X
(SYMBOL (SYMBOL-FUNCTION X))
(FUNCTION X)
((SATISFIES LAMBDA-EXP-P) (EVAL `(FUNCTION ,X))))
(DEFUN LAMBDA-EXP-P (X)
(AND (CONSP X) ; a non-null list
(EQ (CAR X) 'LAMBDA) ; beginning with LAMBDA
(NOT (NULL (CDR X))) ; with at least two elements
(LISTP (CADR X)))) ; argument list is a list
barmar
∂17-Mar-89 0822 chandler@polya.Stanford.EDU test
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 17 Mar 89 08:22:09 PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA19995; Fri, 17 Mar 89 08:19:38 -0800
Date: Fri, 17 Mar 1989 8:19:36 PST
From: "Joyce R. Chandler" <chandler@polya.stanford.edu>
To: retreat@polya.Stanford.EDU
Subject: test
Message-Id: <CMM.0.87.606154776.chandler@polya.stanford.edu>
∂17-Mar-89 0834 X3J13-mailer Issue: LOCALLY-TOP-LEVEL (Version 2)
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 17 Mar 89 08:34:33 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 559504; Fri 17-Mar-89 11:31:57 EST
Date: Fri, 17 Mar 89 11:31 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: Issue: LOCALLY-TOP-LEVEL (Version 2)
To: X3J13@sail.stanford.edu
References: <19890309233609.6.MOON@EUPHRATES.SCRC.Symbolics.COM>
Message-ID: <19890317163159.3.MOON@EUPHRATES.SCRC.Symbolics.COM>
This is a cleanup committee issue. It could have been in the
compiler committee, but as it happens it ended up in the
cleanup committee.
Issue: LOCALLY-TOP-LEVEL
References: None
Related issues: EVAL-WHEN-NON-TOP-LEVEL, DECLARATION-SCOPE
Category: CLARIFICATION / ADDITION
Edit history: Version 1, 9-Mar-89, by Moon
Version 2, 16-Mar-89, by Moon, fix referenced proposal name
Problem description:
It is desirable to be able to wrap LOCALLY around one or more
top-level forms and have them continue to be treated as top-level
forms. Three examples of how this is useful:
- to put an OPTIMIZE or INLINE declaration into force around
several related forms.
- to put declarations into force around DEFCLASS, or any other
top-level form that lacks a syntax for embedded declarations.
- DECLARATION-SCOPE:NO-HOISTING, which passed in January,
removed the ability to use a DECLARE at the head of the body of a
DEFUN or DEFMACRO to make a declaration that applies to the entire
form, including the lambda-list. We are supposed to use LOCALLY
instead, but forms in the body of LOCALLY are not top-level,
and that changes the semantics of DEFMACRO.
Issue EVAL-WHEN-NON-TOP-LEVEL could not define LOCALLY to treat
its body as top-level forms, because only a special form can do
that and LOCALLY is a macro.
Proposal (LOCALLY-TOP-LEVEL:SPECIAL-FORM):
Change LOCALLY from a macro to a special form, and change the
definition of compiler processing (in EVAL-WHEN-NON-TOP-LEVEL)
so that when a LOCALLY form appears at top level the forms in
its body are processed at top level.
Examples:
(locally (declare (optimize (safety 3) (space 3) (speed 0)))
(defmacro frob (&environment e x y &optional (z (foo x y)))
(mumble x y z e)))
Without this proposal, this would have to be written
(defmacro frob (&environment e x y &optional (z (locally
(declare
(optimize
(safety 3)
(space 3)
(speed 0)))
(foo x y))))
(locally (declare (optimize (safety 3) (space 3) (speed 0)))
(mumble x y z e)))
Rationale:
Wrapping LOCALLY around a form should not change its semantics except
as specified by the declarations, hence the body of a top-level
LOCALLY should be top-level.
A macro cannot have a top-level body unless it expands into a special
form that has a top-level body; otherwise the macro invocation and
the macro expansion would not have identical semantics as top-level
forms. There is no available special form for LOCALLY to macroexpand
into (CLtL doesn't say, but presumably the intent was to expand into
a LET with an empty binding list).
Current practice:
The Zetalisp equivalent of LOCALLY worked to surround top-level forms,
because it was a macro that expanded into COMPILER-LET (stashing the
declarations in a special variable the compiler would look at). This
is of course the wrong way to do declarations, but it shows that the
idea was that you could wrap declarations around a bunch of top-level
forms.
Symbolics Genera 7.4.0 does not implement the proposal (but it does
not implement DECLARATION-SCOPE:NO-HOISTING either). I did
not survey any other implementations.
Cost to Implementors:
A half dozen lines of code in the compiler and a smaller amount
in the interpreter and any program-analyzing programs.
Cost to Users:
None.
Cost of non-adoption:
See the horrible example above.
Performance impact:
None.
Benefits:
More consistent language.
Esthetics:
Improved.
Discussion:
None.
∂17-Mar-89 0854 X3J13-mailer Re: Issue: COERCE-INCOMPLETE (Version 3)
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 17 Mar 89 08:53:52 PST
Received: from Salvador.ms by ArpaGateway.ms ; 17 MAR 89 08:48:52 PST
Date: 17 Mar 89 08:47 PST
From: masinter.pa@Xerox.COM
Subject: Re: Issue: COERCE-INCOMPLETE (Version 3)
In-reply-to: Barry Margolin <barmar@Think.COM>'s message of Fri, 17 Mar 89
10:57 EST
To: Barry Margolin <barmar@Think.COM>
cc: x3j13@sail.stanford.edu
Message-ID: <890317-084852-8321@Xerox>
I sent you a copy of FUNCTION-TYPE, as amended and passed. There was
discussion of an amendment to allow coercion of lambda expressions to
functions, but the decision at the June 88 X3J13 meeting was to not require
such coercions.
Most of the issues passed so far are available from arisia.xerox.com
clcleanup/passed. Some of the issues that were amended at the last meeting
haven't yet been stored 'as amended'. I hope to have them there in the next
few days, as well as copies of all of the 'pending' issues.
∂17-Mar-89 0857 X3J13-mailer Re: Issue: COERCE-INCOMPLETE (Version 3)
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 17 Mar 89 08:57:27 PST
Received: from defun.utah.edu by cs.utah.edu (5.61/utah-2.1-cs)
id AA01151; Fri, 17 Mar 89 09:54:54 -0700
Received: by defun.utah.edu (5.61/utah-2.0-leaf)
id AA06800; Fri, 17 Mar 89 09:54:37 -0700
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8903171654.AA06800@defun.utah.edu>
Date: Fri, 17 Mar 89 09:54:35 MST
Subject: Re: Issue: COERCE-INCOMPLETE (Version 3)
To: Barry Margolin <barmar@Think.COM>
Cc: Kent M Pitman <KMP@stony-brook.scrc.symbolics.com>, masinter.pa@xerox.com,
x3j13@sail.stanford.edu
In-Reply-To: Barry Margolin <barmar@Think.COM>, Fri, 17 Mar 89 10:57 EST
BarMar is right. I have a hardcopy of the FUNCTION-TYPE writeup that
was mailed on 4 Sep 88, with a note from Larry indicating that it's
the final version as passed at the June meeting. It includes
COERCE'ing of lambda expressions to functions as item 6b.
Personally, I don't think this is a valid argument for not getting rid
of COERCE, since it is easy to coerce a lambda expression to a function
using (EVAL `(FUNCTION ,x)).
-Sandra
-------
∂17-Mar-89 0906 @Score.Stanford.EDU:golub@na-net.stanford.edu A High-Tech Research Agenda
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 17 Mar 89 09:06:08 PST
Received: from honesty.stanford.edu by SCORE.STANFORD.EDU with TCP; Fri 17 Mar 89 09:02:34-PST
Received: by honesty.stanford.edu (4.0/inc-1.5)
id AA02205; Fri, 17 Mar 89 09:09:40 PST
Date: Fri, 17 Mar 89 09:09:40 PST
From: golub@na-net.stanford.edu (Gene Golub)
Message-Id: <8903171709.AA02205@honesty.stanford.edu>
To: faculty@score.stanford.edu
Subject: A High-Tech Research Agenda
The front page of the business page of today's New York Times lists a
"High-Tech Research Agenda", designated by the Department of Defense
and Department of Energy. Many of these 22 items are of direct
interest to the CS department. For instance, items 3,4, 5 and 6 are as
follows:
3. Software producibility
4. Parallel processing
5. Machine intelligence/robotics
6. Simulation
Many of the other items are also connected with this department.
Has anyone seen the full document?
Gene
∂17-Mar-89 0946 @Score.Stanford.EDU:csl@sierra.STANFORD.EDU CSD Faculty Candidate Seminar, March 21, 1989 at 10 a.m.
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 17 Mar 89 09:46:49 PST
Received: from sierra.STANFORD.EDU by SCORE.STANFORD.EDU with TCP; Fri 17 Mar 89 09:09:48-PST
Received: by sierra.STANFORD.EDU (3.2/4.7); Fri, 17 Mar 89 09:08:34 PST
From: csl@sierra.STANFORD.EDU (Eileen Schwappach)
Date: Fri 17 Mar 89 09:08:32-PST
Subject: CSD Faculty Candidate Seminar, March 21, 1989 at 10 a.m.
To: CSL-EVERYONE@SIERRA, faculty@score, all-colloq@score
Cc: csl@SIERRA
Message-Id: <606157712.0.CSL@SIERRA>
Mail-System-Version: <SUN-MM(219)+TOPSLIB(128)@SIERRA>
CSD FACULTY SEARCH CANDIDATE
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
Title: The Constraint-Based Paradigm:
The Integration of Rule-Based and Object-Oriented Programming
Speaker: Michael van Biema
From: Columbia University
Department of Computer Science
Place: MJH 252
Date: March 21, 1989 at 10:00 a.m.
ABSTRACT
This talk introduces a new formalism, the Constraint-Based paradigm, that
combines the Object-Oriented and Rule-Based paradigms in an elegant and
orthogonal way.
The Constraint-Based model is a generalization of traditional method invocation
in Object-Oriented programming that allows method discrimination on the basis
of arbitrary user-defined predicates. Languages based on the Object-Oriented
and Rule-Based paradigms have both been in existence for some time. Yet both
paradigms suffer from a few lingering problems that have been identified in the
literature. Constraint-Based invocation provides solutions for such problems
as multiple inheritance in Object-Oriented systems and the expression of
control in Rule-Based systems by uniting them in terms of constrained method
invocation. The single underlying representation of both rules and methods
also allows the expression of their resolution in terms of meta-methods.
An additional central philosophical argument of the talk is that so called
`multi-paradigm' languages should be developed not by combining paradigms into
a partially integrated system, but rather by their unification into a
synergistic language developed under a new, subsuming formal model.
-------
∂17-Mar-89 1041 X3J13-mailer Issue: PACKAGE-FUNCTION-CONSISTENCY, V.3
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 17 Mar 89 10:40:58 PST
Received: from Cabernet.ms by ArpaGateway.ms ; 17 MAR 89 10:28:12 PST
Date: 17 Mar 89 10:25 PST
From: masinter.pa@Xerox.COM
Subject: Issue: PACKAGE-FUNCTION-CONSISTENCY, V.3
To: x3J13@sail.stanford.edu
cc: masinter.pa@Xerox.COM
Message-ID: <890317-102812-1247@Xerox>
The notes from the January meeting said Accepted MORE-PERMISSIVE (v2),
as amended. Amendments made at the meeting added DELETE-PACKAGE and
DEFPACKAGE to the list of functions and removed the paragraph beginning
with the words "If IN-PACKAGE...".
I can't figure out where a package name *isn't* allowed in DEFPACKAGE
or where a package object would make sense. Are the notes incorrect,
or were we just to hasty?
Anyway, here's my guess at what we really meant to pass; I suppose
we can just vote this one in instead.
!
Issue: PACKAGE-FUNCTION-CONSISTENCY
References: 11.7 Package System Functions and Variables (pp182-188)
Category: CLARIFICATION/CHANGE
Edit history: 21-Oct-88, Version 1 by Pitman
12-Jan-89, Version 2 by Masinter (add MORE-PERMISSIVE option)
17-Mar-89, Version 3, by Masinter, MORE-PERMISSIVE as
amended & adopted at Jan 89 X3j13
Problem Description:
CLtL is vague about whether either or both of package or package name
are permissible in some cases.
Proposal (PACKAGE-FUNCTION-CONSISTENCY:MORE-PERMISSIVE):
Clarify that it is permissible to pass either a package object
or a package name (symbol or string) in the following situations:
- the :USE argument to MAKE-PACKAGE or IN-PACKAGE
- the first argument to IN-PACKAGE, FIND-PACKAGE, RENAME-PACKAGE
or DELETE-PACKAGE
- the second argument to INTERN, FIND-SYMBOL, UNINTERN
- the second argument to EXPORT, UNEXPORT, IMPORT,
SHADOWING-IMPORT, and SHADOW
- the first argument (or a member of the list which is the first
argument) to USE-PACKAGE or UNUSE-PACKAGE.
- the PACKAGE argument to DO-SYMBOLS.
- the PACKAGE argument to DO-EXTERNAL-SYMBOLS.
- the PACKAGE argument to DO-ALL-SYMBOLS.
If FIND-PACKAGE is given a package object as an argument, it simply
returns it.
Clarify that the functions PACKAGE-NAME, PACKAGE-NICKNAMES,
PACKAGE-USE-LIST, and PACKAGE-USED-BY-LIST are (at least conceptually)
accessors to package data structures and permit only package objects
as arguments.
Clarify that the function MAKE-PACKAGE permits only a package name
as an argument since it does not make sense to create an existing
package.
Clarify that package nicknames must always be expressed as package
names (symbols or strings) and may never be actual package objects.
In addition, require that PACKAGE-NAME, PACKAGE-NICKNAMES,
PACKAGE-USE-LIST, and PACKAGE-USED-BY-LIST to accept names,
too.
Examples:
(INTERN "FOO" "KEYWORD") => :FOO
(DEFVAR *FOO-PACKAGE* (MAKE-PACKAGE "FOO"))
(RENAME-PACKAGE "FOO" "FOO0")
(PACKAGE-NAME *FOO-PACKAGE*) => "FOO0"
(PACKAGE-NAME "SYS") might return "SYSTEM".
Rationale:
This makes things more consistent.
It also adds a generally useful capability.
Current Practice:
Symbolics Genera & Lucid permits strings as package names.
Symbolics Cloe does not permit strings as package names.
In Lucid FIND-PACKAGE and IN-PACKAGE require names.
Cost to Implementors:
Small.
Cost to Users:
None. This change is upward compatible.
Cost of Non-Adoption:
Implementations would continue to vary gratuitously, leaving a potential
for portability problems.
Benefits:
The cost of non-adoption is avoided.
Aesthetics:
This makes things more regular, and so presumably more aesthetic.
Discussion:
Pitman ran across this problem while trying to port Macsyma to various
implementations. Discussion with other maintainers of portable programs
shows this is a common source of aggravation in portable code.
Since the pathname accessors all take namestrings or streams, one might
easily argue that it would be more consistent for PACKAGE-NAME,
PACKAGE-NICKNAMES, etc. to also take arguments of package names. After
all,
(PACKAGE-NAME "FOO") => "FOO"
is no stranger than
(NAMESTRING "JOE:fred.lisp") => "JOE:fred.lisp".
It would be possible to say that MAKE-PACKAGE took package objects as
arguments and just returned that package. That might have limited
usefulness on rare occassions, but mostly seemed too far out in left
field to bother suggesting it.
∂17-Mar-89 1223 X3J13-mailer issue SAFE-CODE, version 1
Received: from lucid.com by SAIL.Stanford.EDU with TCP; 17 Mar 89 12:22:54 PST
Received: from challenger ([192.9.200.17]) by heavens-gate.lucid.com id AA01090g; Wed, 15 Mar 89 14:31:11 PST
Received: by challenger id AA12754g; Wed, 15 Mar 89 14:25:03 PST
Date: Wed, 15 Mar 89 14:25:03 PST
From: Richard P. Gabriel <rpg@lucid.com>
Message-Id: <8903152225.AA12754@challenger>
To: cl-compiler@sail.stanford.edu, x3j13@sail.stanford.edu
Subject: issue SAFE-CODE, version 1
According to my understanding of the dictionary definitions,
``unsafe'' means primarily ``the opposite or reversal of `safe' '' and
secondarily ``not safe.'' This coincides with Moon's reading.
Therefore, I propose we use the term ``nonsafe'' which clearly means
``not safe.'' This, coupled with the already very explicit definition
of ``unsafe,'' which explains that unsafe code might actually be safe,
should take care of his objection.
-rpg-
∂17-Mar-89 1223 X3J13-mailer **DRAFT** issue SYNTACTIC-ENVIRONMENT-ACCESS (version 4)
Received: from lucid.com by SAIL.Stanford.EDU with TCP; 17 Mar 89 12:23:14 PST
Received: from blacksox ([192.9.201.39]) by heavens-gate.lucid.com id AA00913g; Wed, 15 Mar 89 12:36:51 PST
Received: by blacksox id AA00297g; Wed, 15 Mar 89 12:40:06 PST
Date: Wed, 15 Mar 89 12:40:06 PST
From: Eric Benson <eb@lucid.com>
Message-Id: <8903152040.AA00297@blacksox>
To: Moon@STONY-BROOK.SCRC.Symbolics.COM
Cc: cl-compiler@sail.stanford.edu, x3j13@sail.stanford.edu
In-Reply-To: David A. Moon's message of Tue, 14 Mar 89 18:41 EST <19890314234118.3.MOON@EUPHRATES.SCRC.Symbolics.COM>
Subject: **DRAFT** issue SYNTACTIC-ENVIRONMENT-ACCESS (version 4)
Date: Tue, 14 Mar 89 18:41 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
This looks good so far. A few comments that might help you
along with the draft:
...
The :MACRO argument to AUGMENT-ENVIRONMENT shouldn't look like the CADR
of a MACROLET special form, instead it should be a list of lists (name
function). That is, the expander functions should be supplied in the
form of functions rather than in the form of the source text used by
MACROLET. Your rationale argues against this but I strongly believe
that the rationale is wrong. I wouldn't mind seeing the parsing portion
of MACROLET made available as a separate function.
A small point: Shouldn't this be an a-list of the form
(name . function) instead of a list of lists?
∂17-Mar-89 1223 X3J13-mailer Issue ERROR TERMINOLOGY
Received: from lucid.com by SAIL.Stanford.EDU with TCP; 17 Mar 89 12:23:02 PST
Received: from challenger ([192.9.200.17]) by heavens-gate.lucid.com id AA01029g; Wed, 15 Mar 89 14:13:57 PST
Received: by challenger id AA12685g; Wed, 15 Mar 89 14:07:47 PST
Date: Wed, 15 Mar 89 14:07:47 PST
From: Richard P. Gabriel <rpg@lucid.com>
Message-Id: <8903152207.AA12685@challenger>
To: x3j13@sail.stanford.edu
Subject: Issue ERROR TERMINOLOGY
Is it the case that ``fatal'' is well-defined? If so, ``harmless'' is
simply something that is not fatal. According to my mathematics
education, that renders the term well-defined.
``Indeed, there is no way to invoke GC in Common Lisp and with a few
exceptions such as messages, GC must have NO side effects.''
Unsolicited messages can happen, and there is a proposal on the
cl-editorial table to render them harmless. If GC can have no side
effects, then why not state that and not wonder about unsolicited
messages? If we did that, then any Common Lisp that does print a
progress note is *out* of conformance.
Also, as I've said several times, rehashing, termination of processes,
progress messages, flushing IO buffers, closing streams, and a list of
possibly hundreds of things are side effects of GC that should be
guaranteed harmless (that is, not fatal).
``> Some things are not immediately harmful but may cause
> trouble later on.
Yes, lots of things are that way.''
The definition of fatal puts no time constraints on the fatality. Therefore,
neither does its negation.
``> By ``unpredictable but harmless'', I think we are in effect saying
> ``not completely unpredictable''. That is, we promise something but
> don't quite say what it is. For example, Lisp will presumably not
> break off and start playing chess. But maybe it's harmless to start
> playing chess.''
The beauty of a specification is knowing what not to say in order to
allow rational interpreters the freedom to interpret rationality now
and in the unpredictable future. There is considerable genius in the
fine line that Steele tread in CLtL on this. Does anyone rationally
think that a Common Lisp would be taken seriously that while GCing
broke out in a game of chess or an Irish gig? I refuse to seriously
debate with anyone who would use that as an example of something that
we must utter one word in the specification to prevent.
``As far as I can see, the only reasonable option is to specify
some range of possible consequences. The constraints, whatever
they may be, make it possible to reason about what the program
will do.''
The reason this won't easily work is that it presumes that we are able
to accurately predict future implementation techniques and even to
fully comprehend current ones. I'm sure that KMP or I could supply an
endless stream of new and bizarre cases that have to be explicitly
dealt with. (I single out KMP because he has uncanny creativity.)
But, I'll change the debate a little. I've claimed that ``harmless''
is well-defined if and only if ``fatal'' is well-defined or at least
defined well enough. So, to convince me that ``harmless'' should be
pitched, you must convince me that ``fatal'' must be pitched.
-rpg-
∂17-Mar-89 1214 CL-Cleanup-mailer Issue: ADJUST-ARRAY-NOT-ADJUSTABLE (Version 8)
Received: from lucid.com by SAIL.Stanford.EDU with TCP; 17 Mar 89 12:14:37 PST
Received: from bhopal ([192.9.200.13]) by heavens-gate.lucid.com id AA01413g; Wed, 15 Mar 89 23:32:00 PST
Received: by bhopal id AA11607g; Wed, 15 Mar 89 23:32:47 PST
Date: Wed, 15 Mar 89 23:32:47 PST
From: Jon L White <jonl@lucid.com>
Message-Id: <8903160732.AA11607@bhopal>
To: cl-cleanup@sail.stanford.edu
Cc: X3J13@Sail.stanford.edu
In-Reply-To: masinter.pa@Xerox.COM's message of 15 Mar 89 05:13 PST <890315-051405-3472@Xerox>
Subject: Issue: ADJUST-ARRAY-NOT-ADJUSTABLE (Version 8)
Although I haven't had time to join the overly-lengthy discussion on this
matter, I did point out one particularly confusing direction -- that this
proposal to "fix" the function ADJUST-ARRAY has become a proposal to alter
the semantics of the type SIMPLE-ARRAY. Compare CLtL, p28, with the
sentence in the Rationale Section:
"Specifying the points left unspecified (requiring all simple arrays to be
non-adjustable and all adjustable arrays to be non-simple) would require
large changes to some implementations and would be of little benefit to
..."
and with an item in the Clarification section:
"a. Whether an array can be both simple and adjustable is unspecified."
[CLtL definition *does* specify it].
I suggested that a simple statement be added to the proposal as follows:
"This proposal does not attempt to alter the meaning of the type
SIMPLE-ARRAY in any way"
Moon expressed approval of adding that statement.
Altered semantics would mean that it is no longer a portable type. I
have sent out several trivially small examples that show this. Some
people have interpreted those examples as simply showing what happens
with "broken" code; but quite to the contrary, they show how code can be
"correct" on one implementation and "broken" on another ****** when the
definition of SIMPLE-ARRAY is allowed to vary between one implementation
and the other ******. Very carefully, CLtL spells out that implementations
may vary on the efficiency with which they implement SIMPLE-ARRAYS; but
nowhere does it provide for optional exclusion of some parts of the
definition thereof.
Also, I note that all of the discussion on the Cl-cleanup list was by
persons other than the half-dozen or so maintainers of "stock hardware"
compilers. I personally spoke with three others (not including myself)
at Hawaii, and we all have identical requirements for the type SIMPLE-ARRAY,
and identical resolve that it must not be changed. Our compilers will
continue to offer this C-level optimization capability; the only
question is whether or not the CL1989 Standard will be cognizant of it.
-- JonL --
∂17-Mar-89 1246 X3J13-mailer Issue: PACKAGE-FUNCTION-CONSISTENCY, V.3
Received: from Think.COM by SAIL.Stanford.EDU with TCP; 17 Mar 89 12:45:23 PST
Return-Path: <barmar@Think.COM>
Received: from OCCAM.THINK.COM by Think.COM; Fri, 17 Mar 89 14:55:05 EST
Date: Fri, 17 Mar 89 14:46 EST
From: Barry Margolin <barmar@Think.COM>
Subject: Issue: PACKAGE-FUNCTION-CONSISTENCY, V.3
To: masinter.pa@xerox.com
Cc: x3J13@sail.stanford.edu
In-Reply-To: <890317-102812-1247@Xerox>
Message-Id: <19890317194641.7.BARMAR@OCCAM.THINK.COM>
Date: 17 Mar 89 10:25 PST
From: masinter.pa@xerox.com
Proposal (PACKAGE-FUNCTION-CONSISTENCY:MORE-PERMISSIVE):
Clarify that the functions PACKAGE-NAME, PACKAGE-NICKNAMES,
PACKAGE-USE-LIST, and PACKAGE-USED-BY-LIST are (at least conceptually)
accessors to package data structures and permit only package objects
as arguments.
...
In addition, require that PACKAGE-NAME, PACKAGE-NICKNAMES,
PACKAGE-USE-LIST, and PACKAGE-USED-BY-LIST to accept names,
too.
You can't have it both ways! Also, the grammar of the second one could
use improving.
barmar
∂17-Mar-89 1257 X3J13-mailer Issue: ADJUST-ARRAY-NOT-ADJUSTABLE (Version 8)
Received: from Think.COM by SAIL.Stanford.EDU with TCP; 17 Mar 89 12:57:27 PST
Return-Path: <barmar@Think.COM>
Received: from OCCAM.THINK.COM by Think.COM; Fri, 17 Mar 89 15:52:50 EST
Date: Fri, 17 Mar 89 15:53 EST
From: Barry Margolin <barmar@Think.COM>
Subject: Issue: ADJUST-ARRAY-NOT-ADJUSTABLE (Version 8)
To: Jon L White <jonl@lucid.com>
Cc: cl-cleanup@sail.stanford.edu, X3J13@sail.stanford.edu
In-Reply-To: <8903160732.AA11607@bhopal>
Message-Id: <19890317205329.0.BARMAR@OCCAM.THINK.COM>
What happens in implementations that allow all arrays to be adjusted?
If you require that (typep x 'simple-array) implies (not
(adjustable-array-p x)), I see two possible resolutions: 1) such
implementations are not conforming; 2) the type SIMPLE-ARRAY is empty.
I find (1) distasteful, because non-adjustable arrays and the
SIMPLE-ARRAY type exist solely for the benefit of implementations that
need them, and this would require support of these concepts in
implementations that don't derive any benefit from them. I think (2)
makes the SIMPLE-ARRAY type pretty useless, since a portable program
can't expect anything to be of this type (FIXNUM had this problem until
we fixed it in Hawaii).
barmar
∂17-Mar-89 1251 CL-Compiler-mailer **DRAFT** issue SYNTACTIC-ENVIRONMENT-ACCESS (version 4)
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 17 Mar 89 12:51:13 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 559802; Fri 17-Mar-89 15:48:20 EST
Date: Fri, 17 Mar 89 15:48 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: **DRAFT** issue SYNTACTIC-ENVIRONMENT-ACCESS (version 4)
To: Eric Benson <eb@lucid.com>
cc: cl-compiler@sail.stanford.edu, x3j13@sail.stanford.edu
In-Reply-To: <8903152040.AA00297@blacksox>
Message-ID: <19890317204812.5.MOON@EUPHRATES.SCRC.Symbolics.COM>
Date: Wed, 15 Mar 89 12:40:06 PST
From: Eric Benson <eb@lucid.com>
Date: Tue, 14 Mar 89 18:41 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
The :MACRO argument to AUGMENT-ENVIRONMENT shouldn't look like the CADR
of a MACROLET special form, instead it should be a list of lists (name
function).
A small point: Shouldn't this be an a-list of the form
(name . function) instead of a list of lists?
Oh, I keep forgetting that some people have to worry about the efficiency
of conses versus lists. I don't care which it is.
∂17-Mar-89 1254 CL-Cleanup-mailer Issue: ADJUST-ARRAY-NOT-ADJUSTABLE (Version 8)
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 17 Mar 89 12:54:39 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 559814; Fri 17-Mar-89 15:51:33 EST
Date: Fri, 17 Mar 89 15:51 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: Issue: ADJUST-ARRAY-NOT-ADJUSTABLE (Version 8)
To: Jon L White <jonl@lucid.com>
cc: cl-cleanup@sail.stanford.edu, X3J13@Sail.stanford.edu
In-Reply-To: <8903160732.AA11607@bhopal>
Message-ID: <19890317205125.6.MOON@EUPHRATES.SCRC.Symbolics.COM>
Date: Wed, 15 Mar 89 23:32:47 PST
From: Jon L White <jonl@lucid.com>
Although I haven't had time to join the overly-lengthy discussion on this
matter, I did point out one particularly confusing direction -- that this
proposal to "fix" the function ADJUST-ARRAY has become a proposal to alter
the semantics of the type SIMPLE-ARRAY.
Adding the discussion of SIMPLE-ARRAY was at *+*YOUR*+* request, JonL.
There is !!NO!! change to the semantics, as I thought you had agreed in
the last message you sent on the topic. If now you're taking that back
and saying that you still think what this proposal says is a change to
the semantics, okay, but I have yet to figure out why you think that or
what you think is changed.
∂17-Mar-89 1316 X3J13-mailer Issue DYNAMIC-EXTENT: a remark
Received: from Think.COM by SAIL.Stanford.EDU with TCP; 17 Mar 89 13:15:31 PST
Received: from fafnir.think.com by Think.COM; Fri, 17 Mar 89 14:55:24 EST
Return-Path: <gls@Think.COM>
Received: from verdi.think.com by fafnir.think.com; Fri, 17 Mar 89 14:54:21 EST
Received: by verdi.think.com; Fri, 17 Mar 89 14:51:09 EST
Date: Fri, 17 Mar 89 14:51:09 EST
From: Guy Steele <gls@Think.COM>
Message-Id: <8903171951.AA09006@verdi.think.com>
To: Moon@stony-brook.scrc.symbolics.com
Cc: gls@Think.COM, masinter.pa@xerox.com, X3J13@sail.stanford.edu
In-Reply-To: David A. Moon's message of Thu, 16 Mar 89 17:15 EST <19890316221519.0.MOON@EUPHRATES.SCRC.Symbolics.COM>
Subject: Issue DYNAMIC-EXTENT: a remark
Date: Thu, 16 Mar 89 17:15 EST
From: David A. Moon <Moon@stony-brook.scrc.symbolics.com>
Line-Fold: No
Date: Thu, 16 Mar 89 15:34:53 EST
From: Guy Steele <gls@Think.COM>
A "proper
part" of an object A is any object that is accessible at the beginning
of the scope of the declaration -only- by applying a function to A or to
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
a "proper part" of A. This means that any objects freshly allocated
during the construction of the initial value of the declared variable,
and not "saved" during the construction of that value, are "proper
parts" and can be allocated on a stack.
I believe that the words indicated above should be replaced by
"the extent of the binding for which the delaration was made".
That would change the meaning, since the declaration might not be attached
to a binding.
I am not certain that I understand the meaningful uses of this declaration
in cases where it is not attached to a binding.
The reference appears to be to a point in time. Scopes are in space;
the beginning of a scope is a character position in the text (or
something like that). Extents are in time. Is this what you meant?
You're right that there is something wrong with this wording. How about
if it said "at the beginning of execution of the forms in the scope of
the declaration"? Do declarations have extents? If so, could it say
"at the beginning of the extent of the declaration"?
I think you have to speak in terms of run-time instantiations
of executable code. Not sure.
--Guy
∂17-Mar-89 1356 CL-Compiler-mailer **DRAFT** issue SYNTACTIC-ENVIRONMENT-ACCESS (version 4)
Received: from Think.COM by SAIL.Stanford.EDU with TCP; 17 Mar 89 13:54:27 PST
Received: from fafnir.think.com by Think.COM; Fri, 17 Mar 89 16:48:54 EST
Return-Path: <gls@Think.COM>
Received: from verdi.think.com by fafnir.think.com; Fri, 17 Mar 89 16:50:04 EST
Received: by verdi.think.com; Fri, 17 Mar 89 16:46:51 EST
Date: Fri, 17 Mar 89 16:46:51 EST
From: Guy Steele <gls@Think.COM>
Message-Id: <8903172146.AA09535@verdi.think.com>
To: Moon@stony-brook.scrc.symbolics.com
Cc: eb@lucid.com, cl-compiler@sail.stanford.edu, x3j13@sail.stanford.edu
In-Reply-To: David A. Moon's message of Fri, 17 Mar 89 15:48 EST <19890317204812.5.MOON@EUPHRATES.SCRC.Symbolics.COM>
Subject: **DRAFT** issue SYNTACTIC-ENVIRONMENT-ACCESS (version 4)
Date: Fri, 17 Mar 89 15:48 EST
From: David A. Moon <Moon@stony-brook.scrc.symbolics.com>
Date: Wed, 15 Mar 89 12:40:06 PST
From: Eric Benson <eb@lucid.com>
Date: Tue, 14 Mar 89 18:41 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
The :MACRO argument to AUGMENT-ENVIRONMENT shouldn't look like the CADR
of a MACROLET special form, instead it should be a list of lists (name
function).
A small point: Shouldn't this be an a-list of the form
(name . function) instead of a list of lists?
Oh, I keep forgetting that some people have to worry about the efficiency
of conses versus lists. I don't care which it is.
Well, don't forget PAIRLIS and ACONS, which make the CONS format
a little easier to use than the LIST format.
[Voice 1: AAAAHHHHH!!! No!!! Not FORMAT!!!]
Calm down; I meant it generically. Make that "organization".
[Voice 2: AUUGUGGHH! Not generics!]
--Guy
∂17-Mar-89 1507 @Score.Stanford.EDU:jutta@coyote.stanford.edu Seminar by Robotics Faculty Candidate
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 17 Mar 89 15:07:44 PST
Received: from coyote.stanford.edu by SCORE.STANFORD.EDU with TCP; Fri 17 Mar 89 15:04:12-PST
Received: by coyote.stanford.edu; Fri, 17 Mar 89 15:09:29 PST
Date: 17 Mar 1989 1509-PST (Friday)
From: Jutta McCormick <jutta@coyote.stanford.edu>
To: cedar@coyote.stanford.edu, faculty@score.Stanford.EDU,
davis@score.Stanford.EDU, cannon@sierra.Stanford.EDU,
bxr@sail.Stanford.EDU, myers@polya.Stanford.EDU
Cc:
Subject: Seminar by Robotics Faculty Candidate
SPECIAL ROBOTICS SEMINAR
Speaker: Michael Erdmann
M.I.T.
Title: MOTION PLANNING WITH UNCERTAINTY: A PROBABILISTIC APPROACH
Date: Monday, March 20, 1989
Time: 4:00 p.m.
Place: Cedar Hall Conference Room
ABSTRACT
Robots must successfully solve tasks in the presence of uncertainty.
Uncertainty arises from errors in sensing, modelling, and control. In
the past much work has been directed towards finding strategies that
are guaranteed to succeed in a specific number of steps. This talk
presents an alternative approach: The purposeful injection of randomized
actions in a strategy. Randomized actions are useful in a variety of
settings. For instance, a random motion can make progress even when
sensory information is inadequate to decide on the next proper course
of action. In some settings a randomized action may be preferable to an
action that is guaranteed to be successful but that requires too much
computational effort or execution time.
In this talk I will present a few examples involving randomized
actions. I will mention implementations of the theory, both in
simulation and on a physical manipulator. I will also discuss the
relationship of randomized strategies to the pre-image framework
developed by Lozano-Perez, Mason, and Taylor for generating guaranteed
strategies.
∂17-Mar-89 1426 X3J13-mailer CLTL II
Received: from Think.COM by SAIL.Stanford.EDU with TCP; 17 Mar 89 14:24:50 PST
Received: from fafnir.think.com by Think.COM; Fri, 17 Mar 89 17:20:09 EST
Return-Path: <gls@Think.COM>
Received: from verdi.think.com by fafnir.think.com; Fri, 17 Mar 89 17:21:19 EST
Received: by verdi.think.com; Fri, 17 Mar 89 17:18:06 EST
Date: Fri, 17 Mar 89 17:18:06 EST
From: Guy Steele <gls@Think.COM>
Message-Id: <8903172218.AA09852@verdi.think.com>
To: x3j13@sail.stanford.edu
Cc: gls@Think.COM
Subject: CLTL II
I have mailed copies of my current working draft of "CLTL II" to
nearly everyone on the X3J13 mailing list (defined to be the set of
mailing labels Bob Mathis sent me). Those of you in the US can expect
to receive them on Monday or Tuesday via UPS, except for the three of
you whose address is a P.O. Box, in which case you are at the mercy of
Priority SnailMail. I don't know how long it will take for
international delivery.
To keep the costs down, where two persons were at the same address or
organization, I sent only one copy; for three or more I generally sent
two copies. (In all I sent out 70 copies, at about 30 bucks each
including shipping.)
KMP points out that it would be a serious mistake for everyone to drop
everything and start reading this draft, and I agree. It is more
important to prepare for the upcoming meeting. Furthermore, I would
hate to see anyone burn out reading this less-than-authoritative draft
of a less-than-authoritative book and then not have the energy to give
the draft standard a careful reading as well.
You don't *have* to read it at all. If you don't have the time, then
use it as a doorstop, keep it as a souvenir, or give it to someone
like a graduate student.
I will be grateful for any feedback I can get, of course. I recommend
that you pay the most attention to my paraphrasing of and commentary
on issues with which you have been particularly involved, to make sure
I didn't goof it up. There is an index to the issues in the back that
may be helpful.
Some of the new material has nothing whatsoever to do with X3J13.
You may wish to check out the I/O and Numbers chapters, for example.
Digital Press will have a copy editor reading it for grammar and
punctuation, and I will be reading it carefully, so if your time
is limited you probably should concentrate on the conceptual level.
I am especially interested in feedback of the form "You're going about
this all wrong. Here's what you should do..."
Don't worry at all about fonts, spacing, or number of pages. What I
shipped to you today is merely 300-dots-per-inch draft quality with
the wrong fonts. I am meeting next week with the book designer at
Digital Press and we are going to work out what to do. I also have a
list of changes to make to my TeX macros that will systematically
improve the spacing and page break decisions.
--Guy
∂17-Mar-89 1541 CL-Cleanup-mailer Issue: ADJUST-ARRAY-NOT-ADJUSTABLE (Version 8)
Received: from Think.COM by SAIL.Stanford.EDU with TCP; 17 Mar 89 15:40:34 PST
Received: from fafnir.think.com by Think.COM; Fri, 17 Mar 89 16:23:16 EST
Return-Path: <gls@Think.COM>
Received: from verdi.think.com by fafnir.think.com; Fri, 17 Mar 89 16:24:05 EST
Received: by verdi.think.com; Fri, 17 Mar 89 16:20:53 EST
Date: Fri, 17 Mar 89 16:20:53 EST
From: Guy Steele <gls@Think.COM>
Message-Id: <8903172120.AA09400@verdi.think.com>
To: jonl@lucid.com
Cc: cl-cleanup@sail.stanford.edu, X3J13@sail.stanford.edu
In-Reply-To: Jon L White's message of Wed, 15 Mar 89 23:32:47 PST <8903160732.AA11607@bhopal>
Subject: Issue: ADJUST-ARRAY-NOT-ADJUSTABLE (Version 8)
Date: Wed, 15 Mar 89 23:32:47 PST
From: Jon L White <jonl@lucid.com>
...
Also, I note that all of the discussion on the Cl-cleanup list was by
persons other than the half-dozen or so maintainers of "stock hardware"
compilers. I personally spoke with three others (not including myself)
at Hawaii, and we all have identical requirements for the type SIMPLE-ARRAY,
and identical resolve that it must not be changed. Our compilers will
continue to offer this C-level optimization capability; the only
question is whether or not the CL1989 Standard will be cognizant of it.
I am very concerned about the stock hardware, but also very confused.
I understand that the stock-hardware implementors adamantly oppose
the proposed change, but I still have not seen a single convincing
example of why the proposed change would prevent them from accomplishing
the desired optimizations or why the proposed change would defeat
portability. I acknowledge that JonL has provided an example or two,
but I have not found them convincing. So either these examples are
wrong, or I am badly wedged; in either case I need further explanation.
--Guy
∂17-Mar-89 1555 X3J13-mailer Re: Issue: COERCE-INCOMPLETE (Version 3)
Received: from Think.COM by SAIL.Stanford.EDU with TCP; 17 Mar 89 15:55:11 PST
Return-Path: <barmar@Think.COM>
Received: from OCCAM.THINK.COM by Think.COM; Fri, 17 Mar 89 18:48:21 EST
Date: Fri, 17 Mar 89 18:48 EST
From: Barry Margolin <barmar@Think.COM>
Subject: Re: Issue: COERCE-INCOMPLETE (Version 3)
To: Sandra J Loosemore <sandra%defun@cs.utah.edu>
Cc: Kent M Pitman <KMP@stony-brook.scrc.symbolics.com>, masinter.pa@xerox.com,
x3j13@sail.stanford.edu
In-Reply-To: <8903171654.AA06800@defun.utah.edu>
Message-Id: <19890317234839.3.BARMAR@OCCAM.THINK.COM>
Date: Fri, 17 Mar 89 09:54:35 MST
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Personally, I don't think this is a valid argument for not getting rid
of COERCE, since it is easy to coerce a lambda expression to a function
using (EVAL `(FUNCTION ,x)).
I disagree. Many of us would not have voted in favor of FUNCTION-TYPE
without the coercion. We wanted either a specific function or the
extension to COERCE. We specifically did not feel that the above idiom
should be used in any actual code; it merely serves as a good way of
describing the value that the coercion returns.
I'll go along with COERCE-INCOMPLETE:DEPRECATE if it is amended to
include a new function that coerces a lambda expression, symbol, or
function to a function. I'll even suggest a name: MAKE-FUNCTION
(unfortunately, FUNCTION is taken, so it can't follow the precedent of
naming a function that coerces to type T just T).
barmar
∂17-Mar-89 1600 X3J13-mailer Issue: ADJUST-ARRAY-NOT-ADJUSTABLE (Version 8)
Received: from lucid.com by SAIL.Stanford.EDU with TCP; 17 Mar 89 16:00:33 PST
Received: from bhopal ([192.9.200.13]) by heavens-gate.lucid.com id AA02088g; Fri, 17 Mar 89 15:53:13 PST
Received: by bhopal id AA19366g; Fri, 17 Mar 89 15:55:29 PST
Date: Fri, 17 Mar 89 15:55:29 PST
From: Jon L White <jonl@lucid.com>
Message-Id: <8903172355.AA19366@bhopal>
To: Moon@STONY-BROOK.SCRC.Symbolics.COM
Cc: cl-cleanup@sail.stanford.edu, X3J13@Sail.stanford.edu
In-Reply-To: David A. Moon's message of Fri, 17 Mar 89 15:51 EST <19890317205125.6.MOON@EUPHRATES.SCRC.Symbolics.COM>
Subject: Issue: ADJUST-ARRAY-NOT-ADJUSTABLE (Version 8)
re: Adding the discussion of SIMPLE-ARRAY was at *+*YOUR*+* request, JonL.
Sorry, Dave, I only ever made a request to add precisely the one statement
that you have already now added -- that the proposal *does not* alter
the CLtL semantics of SIMPLE-ARRAY. What I critiqued were statements
of the proposal that under reasonable interpretation could be taken to
mean that the CLtL p.28 definition of SIMPLE-ARRAY is being abrogated.
At any rate, thanks for the one-line addition.
-- JonL --
∂17-Mar-89 1612 X3J13-mailer Re: Issue: COERCE-INCOMPLETE (Version 3)
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 17 Mar 89 16:12:34 PST
Received: from Salvador.ms by ArpaGateway.ms ; 17 MAR 89 16:02:36 PST
Date: 17 Mar 89 15:57 PST
From: masinter.pa@Xerox.COM
Subject: Re: Issue: COERCE-INCOMPLETE (Version 3)
In-reply-to: masinter.pa's message of 17 Mar 89 08:47 PST
To: masinter.pa@Xerox.COM
cc: Barry Margolin <barmar@Think.COM>, x3j13@sail.stanford.edu
Message-ID: <890317-160236-2538@Xerox>
Sorry, I was confused when I sent that message. Yes, COERCE coerces lambda
expressions to functions. No, APPLY and FUNCALL do not (are not required
to)
do such coercions.
∂17-Mar-89 1613 X3J13-mailer Issue: ADJUST-ARRAY-NOT-ADJUSTABLE (Version 8)
Received: from lucid.com by SAIL.Stanford.EDU with TCP; 17 Mar 89 16:13:52 PST
Received: from bhopal ([192.9.200.13]) by heavens-gate.lucid.com id AA02119g; Fri, 17 Mar 89 16:06:33 PST
Received: by bhopal id AA19436g; Fri, 17 Mar 89 16:08:50 PST
Date: Fri, 17 Mar 89 16:08:50 PST
From: Jon L White <jonl@lucid.com>
Message-Id: <8903180008.AA19436@bhopal>
To: barmar@Think.COM
Cc: cl-cleanup@sail.stanford.edu, X3J13@sail.stanford.edu
In-Reply-To: Barry Margolin's message of Fri, 17 Mar 89 15:53 EST <19890317205329.0.BARMAR@OCCAM.THINK.COM>
Subject: Issue: ADJUST-ARRAY-NOT-ADJUSTABLE (Version 8)
re: I find (1) distasteful, because non-adjustable arrays and the
SIMPLE-ARRAY type exist solely for the benefit of implementations that
need them, and this would require support of these concepts in
implementations that don't derive any benefit from them.
Barry, SIMPLE-ARRAY is certainly not the only concept in CLtL that exists
"solely for the benefit of implementations that [can really use it]". I
know that numerous array capabilities are present but not very useful
in Lucid Common Lisp primarily for compatiblity with Lisp Machine stuff.
That's the price to pay for portability. It just may be that we will have
to confess that we didn't succeed at portability in some areas of CL.
-- JonL --
∂17-Mar-89 1623 X3J13-mailer Issue: PACKAGE-FUNCTION-CONSISTENCY, V.3
Received: from YUKON.SCRC.Symbolics.COM (SCRC-YUKON.ARPA) by SAIL.Stanford.EDU with TCP; 17 Mar 89 16:23:09 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by YUKON.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 439582; Fri 17-Mar-89 19:22:26 EST
Date: Fri, 17 Mar 89 19:20 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: Issue: PACKAGE-FUNCTION-CONSISTENCY, V.3
To: masinter.pa@Xerox.COM
cc: x3J13@sail.stanford.edu
In-Reply-To: <890317-102812-1247@Xerox>
Message-ID: <19890318002018.1.MOON@EUPHRATES.SCRC.Symbolics.COM>
Line-fold: No
Date: 17 Mar 89 10:25 PST
From: masinter.pa@Xerox.COM
The notes from the January meeting said Accepted MORE-PERMISSIVE (v2),
as amended. Amendments made at the meeting added DELETE-PACKAGE and
DEFPACKAGE to the list of functions and removed the paragraph beginning
with the words "If IN-PACKAGE...".
I can't figure out where a package name *isn't* allowed in DEFPACKAGE
or where a package object would make sense. Are the notes incorrect,
or were we just to hasty?
It wasn't my amendment, but I don't see why a package object should be
disallowed in any position in DEFPACKAGE other than the name or nickname
of the package being defined. I'll send a version that I think is correct
to CL-Cleanup and if no one disagrees it can be mailed to X3J13 to
supersede this one.
∂17-Mar-89 1656 X3J13-mailer Issue: ADJUST-ARRAY-NOT-ADJUSTABLE (Version 8)
Received: from Think.COM by SAIL.Stanford.EDU with TCP; 17 Mar 89 16:56:32 PST
Return-Path: <barmar@Think.COM>
Received: from OCCAM.THINK.COM by Think.COM; Fri, 17 Mar 89 19:52:28 EST
Date: Fri, 17 Mar 89 19:53 EST
From: Barry Margolin <barmar@Think.COM>
Subject: Issue: ADJUST-ARRAY-NOT-ADJUSTABLE (Version 8)
To: Jon L White <jonl@lucid.com>
Cc: cl-cleanup@sail.stanford.edu, X3J13@sail.stanford.edu
In-Reply-To: <8903180008.AA19436@bhopal>
Message-Id: <19890318005322.4.BARMAR@OCCAM.THINK.COM>
Date: Fri, 17 Mar 89 16:08:50 PST
From: Jon L White <jonl@lucid.com>
re: I find (1) distasteful, because non-adjustable arrays and the
SIMPLE-ARRAY type exist solely for the benefit of implementations that
need them, and this would require support of these concepts in
implementations that don't derive any benefit from them.
Barry, SIMPLE-ARRAY is certainly not the only concept in CLtL that exists
"solely for the benefit of implementations that [can really use it]". I
know that numerous array capabilities are present but not very useful
in Lucid Common Lisp primarily for compatiblity with Lisp Machine stuff.
That's the price to pay for portability. It just may be that we will have
to confess that we didn't succeed at portability in some areas of CL.
-- JonL --
The general rule has been that implementations that don't need (or don't
provide) these types of optimizations can safely ignore the language
features that support them. Some implementations can optimize array
access by knowing that the array can't be adjusted; other
implementations should not be required to remember this information if
they don't need it. Quoting from CLtL: "features that are useful only
on certain 'ordinary' or 'commercial' processors are avoided or made
optional."
Any feature of the language that provides access to facets of the
implementation allows somewhat non-portable code, meaning that it is
possible to write conforming code that produces different results in
different implementations. The simple program (PROGN
MOST-POSITIVE-FIXNUM) is conforming but produces many different results,
although the program (TYPEP MOST-POSITIVE-FIXNUM 'FIXNUM) is guaranteed
to return T in all conforming implementations. To paraphrase Moon, it
would be wonderful if all conforming programs were portable, but that's
unrealistic (it would be like expecting the grammar of a language to
only permit sensible sentences to be formed -- I suspect Godel's
Incompleteness Theorem comes into play here, pointing out that if the
grammar allows you to say everything you'd want to say, it must also
include some nonsense). The best I think we can do is provide enough
tools in the language to allow programs to detect implementation
differences and deal with them.
One thing that would help me is if you would post an example of code
that you feel is affected by this issue. I think you described such
things to me in words at the last meeting, but I (like GLS) am having a
hard time figuring out precisely what the problem is (I had the same
difficulty with the FIXNUM stuff that started the moby flame session in
the car on the way to the Japanese restaurant).
barmar
∂17-Mar-89 1758 X3J13-mailer too much mail!
Received: from cs.utah.edu by SAIL.Stanford.EDU with TCP; 17 Mar 89 17:58:23 PST
Received: from defun.utah.edu by cs.utah.edu (5.61/utah-2.1-cs)
id AA21950; Fri, 17 Mar 89 18:56:10 -0700
Received: by defun.utah.edu (5.61/utah-2.0-leaf)
id AA07465; Fri, 17 Mar 89 18:56:08 -0700
From: sandra%defun@cs.utah.edu (Sandra J Loosemore)
Message-Id: <8903180156.AA07465@defun.utah.edu>
Date: Fri, 17 Mar 89 18:56:07 MST
Subject: too much mail!
To: x3j13@sail.stanford.edu
Hey folks, I have a request. If you want to discuss an issue from one
of the subcommittees that was mailed to X3J13, please try to confine
the discussion to the appropriate subcommittee mailing list (or even
private mail to the person you're arguing with) instead of CC'ing all
of X3J13. Some of us have been getting hundreds of mail messages a
day and I (at least) don't have the time to follow all of the detailed
arguments on issues from other subcommittees anyway. I'd like to know
what the resolution of the problems is, but I don't really need to get
a blow-by-blow account in the meantime.
You will be getting such a summary (and some revised proposals) from
cl-compiler around the end of next week, by the way.
-Sandra
-------
∂17-Mar-89 2051 X3J13-mailer March meeting issues and sections
Received: from decwrl.dec.com by SAIL.Stanford.EDU with TCP; 17 Mar 89 20:51:38 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
id AA16495; Fri, 17 Mar 89 10:21:57 PST
Received: by decwrl.dec.com (5.54.5/4.7.34)
id AA16495; Fri, 17 Mar 89 10:21:57 PST
Message-Id: <8903171821.AA16495@decwrl.dec.com>
Received: by decwrl.dec.com (5.54.5/4.7.34)
for skona%csilvax@hub.ucsb.edu; id AA16495; Fri, 17 Mar 89 10:21:57 PST
From: chapman%aitg.DEC@decwrl.dec.com
Date: 17 Mar 89 13:00
To: x3j13@sail.stanford.edu, skona%csilvax@hub.ucsb.edu
Subject: March meeting issues and sections
Dear Members:
The issues and sections of the standard named below have been
mailed to the X3J13 mailing list electronically and by hardcopy.
Also, the sections are available in files named march-1.dvi (chapter 1),
march-2.dvi (sections 2.1 and 2.2), march-5.dvi (chapter5), and
march-27-ballot.dvi (all the above-listed sections). Those files are
on hudson.dec.com, as usual, and the sources are there.
These issues and sections will come to vote on March 30
during the X3J13 meeting.
An affirmative vote on a section of the standard means that you
agree with the contents of the section except possibly the following:
Indentation of examples.
Spelling and other typos.
Figure placement and design.
The physical presence of issue markers (these will be removed in
the final draft); the issue markers sometimes change the indentation.
In addition, sections of the standard that could be modified by issues
passed by X3J13 that haven't been included up to this point, or have
been incorrectly included or under-included, will change even after
an affirmative vote on the section.
You are seeing two items again that appeared on the letter ballot:
ERROR-TERMINOLOGY, and Section 1.8. These were significantly changed
as a result of comments and will therefore require reviewing and
revoting.
On the front cover of each chapter that is part of this mailing (chapters 1, 2,
and 5) is a list headed by Reviewed by:. The people on this list
have simply READ and COMMENTED ON the attached sections. The appearance
of their names on the list is not an indication
of their endorsement, although they may in fact endorse the section they
reviewed.
Following is a summary of each issue and section's review history:
ERROR-TERMINOLOGY -- This issue was last revised by RPG, Moon, and
Pitman, and now they seem to be satisfied with the wording. This proposal is
directly reflected in Section 5.1.
CONFORMANCE-POSITION -- See the discussion section of this issue.
The issue is directly reflected in Section 1.5.
SUBSETTING-POSITION -- This issue has received general approval.
EXTENSIONS-POSITION -- Some would prefer we remain mute on this
issue, but the fact is that we have to provide some sort of definition
of an extension since we use the term in the ERROR-TERMINOLOGY proposal
and in the standard.
EXTRA-SYNTAX -- This issue has not received much comment until
recently. A new revised version may be distributed at the meeting.
EXTRA-OPTIONAL-KEYWORD-ARGUMENTS -- Mixed reviews on this proposal.
EXTRA-RETURN-VALUES -- Not much discussion on this proposal although
it appears to be generally accepted. (Version 3, that is)
UNSPECIFIED-DATATYPES -- This proposal seems to be generally opposed.
UNSOLICITED-MESSAGES -- This issue has not received much comment
until recently. A revised version may be necessary.
MACRO-AS-FUNCTION -- Moon suggests that we just change the two
macros in question to functions (and skip the proposal?).
Sections 1.1-1.7 -- Some of these sections depend on the passage
of the previously-listed proposals. These sections have been reviewed
by numerous people and their comments have been included.
In addition, some suggestions for moving some of these sections
to an appendix are being entertained. That is covered in the TOC
issue which may undergo slight amendment at the meeting.
Sections 2.1-2.2 -- These sections have also been reviewed by
numerous people, and comments were included. The main unresolved
issues with section 2.2 seem to be as follows:
Lack of integration with CLOS and the Condition System.
Lack of a good definition of the type function.
These issues will most likely be resolved via clean-up proposals.
Sections 5.1-5.4 -- Section 5.1 is a rewrite of the concepts
part of the Condition System document approved by X3J13. It was reviewed in
detail by KMP, and also by Sandra Loosemore. The other sections were
reviewed by numerous people.
Section 1.8 -- This section was sent out with the letter ballot.
Although the section was intended to be non-detailed, it was apparently
much too vague to make it useful. It has been made slightly more detailed,
and whether or not it is at a suitable level will be decided by you.
A suggestion was made to move this section to an appendix.
If you need electronic copies of any of the issues, please let me know
(although they will be coming to you in hardcopy soon). If you have
any trouble accessing the standard sections, there are other ways
besides FTP and hardcopy for you to get the standard. If I don't know
you're having trouble, though, I can't help you resolve the problem.
Thanks in advance for all your review time so far. Your comments and
suggestions are immensely useful.
kathy chapman
∂17-Mar-89 2110 X3J13-mailer Issue: EXTRA-RETURN-VALUES (version 3)
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 17 Mar 89 21:10:01 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 560236; Sat 18-Mar-89 00:07:10 EST
Date: Sat, 18 Mar 89 00:06 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: Issue: EXTRA-RETURN-VALUES (version 3)
To: chapman%aitg.DEC@decwrl.dec.com
cc: x3j13@sail.stanford.edu
In-Reply-To: <8903160834.AA18011@decwrl.dec.com>
Message-ID: <19890318050654.7.MOON@EUPHRATES.SCRC.Symbolics.COM>
I would support this if it were amended with a list of functions
that are explicitly allowed to have additional return values.
As a suggested rough cut at such a list, how about all the functions
described in chapters 16, 21, 22, 23, 24, and 25 of CLtL? These are
the functions that I would call "environment" rather than "language".
∂17-Mar-89 2304 X3J13-mailer Issue: PACKAGE-FUNCTION-CONSISTENCY (version 4)
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 17 Mar 89 23:03:59 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 560302; Sat 18-Mar-89 02:00:54 EST
Date: Sat, 18 Mar 89 02:00 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: Issue: PACKAGE-FUNCTION-CONSISTENCY (version 4)
To: X3J13@sail.stanford.edu
Message-ID: <19890318070046.4.MOON@EUPHRATES.SCRC.Symbolics.COM>
This is a correction to some wording problems and inconsistencies
in version 3 that was mailed out yesterday.
!
Issue: PACKAGE-FUNCTION-CONSISTENCY
References: 11.7 Package System Functions and Variables (pp182-188)
Category: CLARIFICATION/CHANGE
Edit history: 21-Oct-88, Version 1 by Pitman
12-Jan-89, Version 2 by Masinter (add MORE-PERMISSIVE option)
17-Mar-89, Version 3, by Masinter, MORE-PERMISSIVE as
amended & adopted at Jan 89 X3j13
17-Mar-89, Version 4, by Moon, correct amended wording
Problem Description:
CLtL is vague about whether either or both of package or package name
are permissible in some cases.
Proposal (PACKAGE-FUNCTION-CONSISTENCY:MORE-PERMISSIVE):
Clarify that it is permissible to pass either a package object
or a package name (symbol or string) in the following situations:
- the :USE argument to MAKE-PACKAGE or IN-PACKAGE
- the first argument to IN-PACKAGE, FIND-PACKAGE, RENAME-PACKAGE
or DELETE-PACKAGE
- the second argument to INTERN, FIND-SYMBOL, UNINTERN
- the second argument to EXPORT, UNEXPORT, IMPORT,
SHADOWING-IMPORT, and SHADOW
- the first argument (or a member of the list which is the first
argument) to USE-PACKAGE or UNUSE-PACKAGE.
- all package-name arguments in DEFPACKAGE except for the name and
nicknames of the package being defined.
- the first argument to PACKAGE-NAME, PACKAGE-NICKNAMES,
PACKAGE-USE-LIST, or PACKAGE-USED-BY-LIST
- the PACKAGE argument to DO-SYMBOLS.
- the PACKAGE argument to DO-EXTERNAL-SYMBOLS.
- the PACKAGE argument to DO-ALL-SYMBOLS.
If FIND-PACKAGE is given a package object as an argument, it simply
returns it.
Clarify that the function MAKE-PACKAGE permits only a package name
as an argument since it does not make sense to create an existing
package.
Clarify that package nicknames must always be expressed as package
names (symbols or strings) and may never be actual package objects.
In the list above, IN-PACKAGE may be changed to SELECT-PACKAGE
if IN-PACKAGE-FUNCTIONALITY:NEW-MACRO passes.
Examples:
(INTERN "FOO" "KEYWORD") => :FOO
(DEFVAR *FOO-PACKAGE* (MAKE-PACKAGE "FOO"))
(RENAME-PACKAGE "FOO" "FOO0")
(PACKAGE-NAME *FOO-PACKAGE*) => "FOO0"
(PACKAGE-NAME "SYS") might return "SYSTEM".
Rationale:
This makes things more consistent.
It also adds a generally useful capability.
Current Practice:
Symbolics Genera & Lucid permit strings as package names.
Symbolics Cloe does not permit strings as package names.
In Lucid FIND-PACKAGE and IN-PACKAGE require names.
Cost to Implementors:
Small.
Cost to Users:
None. This change is upward compatible.
Cost of Non-Adoption:
Implementations would continue to vary gratuitously, leaving a potential
for portability problems.
Benefits:
The cost of non-adoption is avoided.
Aesthetics:
This makes things more regular, and so presumably more aesthetic.
Discussion:
Pitman ran across this problem while trying to port Macsyma to various
implementations. Discussion with other maintainers of portable programs
shows this is a common source of aggravation in portable code.
It would be possible to say that MAKE-PACKAGE took package objects as
arguments and just returned that package. That might have limited
usefulness on rare occasions, but mostly seemed too far out in left
field to bother suggesting it.
∂18-Mar-89 0137 X3J13-mailer The Cleanup Issue Status List
Received: from Xerox.COM by SAIL.Stanford.EDU with TCP; 18 Mar 89 01:37:09 PST
Received: from Semillon.ms by ArpaGateway.ms ; 18 MAR 89 01:34:10 PST
Date: 18 Mar 89 01:33 PST
From: masinter.pa@Xerox.COM
to: X3J13@sail.stanford.edu
Subject: The Cleanup Issue Status List
Message-ID: <890318-013410-3635@Xerox>
This is the complete list of Cleanup issues that are either:
passed: passed at *any* previous meeting, including Jan 89
pending: have been distributed for the March meeting
in progress: might possibly be distributed for the March meeting,
or that I think are worth pursuing.
Of course, some more might come up or be revived.
I think I have updated versions of all pending and passed
issues stored on arisia.xerox.com under the
clcleanup/pending
clcleanup/passed
directories respectively.
I'm pretty much unavailable (travelling, etc.) until the meeting.
I'll try to read my mail while on the road, but
it will be difficult to handle the quantity we've
seen in the last week.
Codes:
! released for Jan 89 meeting
+ passed
* need new version
!*: released, but I know we'll need a new version
+*: passed, but need to reconsider
!*: passed, but need a new version to reconsider
!
+ ADJUST-ARRAY-DISPLACEMENT
Version 4, 23-Nov-87
Status: passed, 1988
+ ADJUST-ARRAY-FILL-POINTER
Version 1, 15-MAR-88
Status: passed, 1988
! ADJUST-ARRAY-NOT-ADJUSTABLE
Synopsis: ADJUST-ARRAY on array made with :ADJUSTABLE NIL: "an error"?
Version 4, 11-Jan-89, Released 12-Jan-89
Status: Accepted with amendments Jan 89 X3J13
Comments: amendment had wording problem.
Version 8, 11-Mar-89, Released 15-Mar-89
Status: ready for vote
+ APPLYHOOK-ENVIRONMENT
Synopsis: remove (useless) env argument to applyhook
Version 2, 10-Jan-89, Released 10-Jan-89
Status: Passed Jan-89 X3J13
+ AREF-1D
14-NOV-87, Version 7
Status: Passed, 1988?
+ ARGUMENTS-UNDERSPECIFIED
Synopsis: Clarify various ranges missing from CLtL
Version 4, 21-Sep-88, Released 4 Dec 88
Status: Passed Jan 89 X3J13
+ ARRAY-TYPE-ELEMENT-TYPE-SEMANTICS
Synopsis: What do array element-type declarations mean?
Version 9, 31-Oct-88, Released 5 Dec 88
Status: Passed Jan 89 X3J13
+ ASSOC-RASSOC-IF-KEY
Version 4, 23-NOV-87
Status: Passed, 1988?
! BREAK-ON-WARNINGS-OBSOLETE
Synopsis: deprecate *BREAK-ON-WARNINGS* because of *BREAK-ON-SIGNALS*
Version 1, 07-Mar-89, Released 15-Mar-89
Comment: leaves out a case
Status: ready for vote
! CLOS-CONDITIONS
Version 4, 10-Mar-89
Comments: define metaclass of conditions?
Status: pending
+ CLOSE-CONSTRUCTED-STREAMS
Synopsis: What does it mean to CLOSE a constructed stream?
Version 2, 12-Jan-89, Released 12-Jan-89
Status: Proposal ARGUMENT-STREAM-ONLY passed Jan 89 X3J13
!+ CLOSED-STREAM-OPERATIONS
Synopsis: What operations are legal on closed streams?
Version 5, 5-Dec-88, released 5-Dec-88
Status: amended at meeting
Version 7, 14-Feb-89
Status: Passed, as amended, Jan 89 X3J13
Comment: amendment bad; reconsider version 5.
say that INPUT-STREAM-P and OUTPUT-STREAM-P
are undefined on closed streams?
! COERCE-INCOMPLETE
Synopsis: Extend COERCE
Version 3, 7-Mar-89, Released 14-Mar-89
Status: ready for voting
+ COLON-NUMBER
Synopsis: :123 is an error
22-OCT-87, Version 1
Status: Passed, 1988?
+ COMPILER-WARNING-STREAM
Version 6, 5-JUN-87
Status: Passed, 1988?
+ COMPLEX-ATAN-BRANCH-CUT
Synopsis: tweak upper branch cut in ATAN formula
Version 1, 13-Dec-88, Released 10-Jan-89
Status: Passed Jan 89 X3J13
!* CONDITION-RESTARTS
Synopsis: can't know whether restart is associated with signalling
Version 1, 18-Jan-89, released 16-Mar-89
Comment: (proposed amendments)
Status: need new version
+ CONTAGION-ON-NUMERICAL-COMPARISONS
Version 1, 14-Sep-88, Released 6 Oct 88
Status: passed, Jan 89 X3J13
! COPY-SYMBOL-COPY-PLIST
Version 1, 10-Jan-89, released 16-Mar-89
Status: ready for vote
! COPY-SYMBOL-PRINT-NAME
Version 2, 15-Mar-89, released 16-Mar-89
Status: ready for vote
+ DATA-TYPES-HIERARCHY-UNDERSPECIFIED
4-SEP-88 Version 2
Status: Passed, 1988?
+ DECLARATION-SCOPE
Version 4, 15-Nov-88, Released 9-Dec-88
Status: NO-HOISTING passed Jan 89 X3J13
+ DECLARE-ARRAY-TYPE-ELEMENT-REFERENCES
Version 3, 13-Jan-89
Status: passed, Jan 89 X3J13
+ DECLARE-FUNCTION-AMBIGUITY
Version 4, 5-Dec-88, Released 5-Dec-88
Status: passed, Jan 89 X3J13
+ DECLARE-MACROS
5-FEB-88, Version 3
Status: Passed, 1988?
+ DECLARE-TYPE-FREE
Version 10, 12-Jan-89
Status: proposal LEXICAL passed Jan 89 X3J13
+ DECODE-UNIVERSAL-TIME-DAYLIGHT
Version 2, 30-Sep-88, Released 6 Oct 88
Status: Passed, Jan 89 x3j13
* DEFMACRO-LAMBDA-LIST
Version 2, 17-Mar-89
Status: ready for release?
+ DEFPACKAGE
Version 7, 2-Nov-88, Released 5 Dec 88
Comment: clarify "at variance" in editorial work?
Status: Passed, Jan 89 X3J13
+ DEFSTRUCT-CONSTRUCTOR-KEY-MIXTURE
Version 3, 8-Jan-89, Released 11-Jan-89
Status: Passed, Jan 89 X3J13
+ DEFSTRUCT-DEFAULT-VALUE-EVALUATION
Version 1, 5/13/88
Status: Passed, 1988
+ DEFSTRUCT-PRINT-FUNCTION-INHERITANCE
Version 3, 7 Dec 88, Released 12-Dec-88
Status: Passed, Jan 89 X3J13
+ DEFSTRUCT-REDEFINITION
Synopsis: what happens if you redefine a DEFSTRUCT?
Version 3, 6-Feb-89
Status: Passed (as amended) Jan 89 X3J13
+ DEFSTRUCT-SLOTS-CONSTRAINTS-NAME
Version 5, 12-Jan-89
Status: Passed, Jan 89 X3J13
+ DEFSTRUCT-SLOTS-CONSTRAINTS-NUMBER
Version 1, 5/13/88
Status: Passed, 1988
+ DEFVAR-DOCUMENTATION
23-NOV-87, Version 2
Status: Passed, 1988?
+ DEFVAR-INIT-TIME
29-MAR-87, Version 2
Status: Passed, 1988?
+ DEFVAR-INITIALIZATION
Version 4 5-JUN-87
Status: Passed, 1988?
+ DESCRIBE-INTERACTIVE
Version 4, 15-Nov-88, Released 7-Dec-88
Synopsis: can DESCRIBE ask user a question?
Status: Proposal NO passed Jan 89 X3J13
! DESCRIBE-UNDERSPECIFIED
Version 1, 10-Mar-89, Released 16-Mar-89
Synopsis: making DESCRIBE generic was wrong; fix
status: ready for vote
!* DESTRUCTURING-BIND
Version 2, 25-Jan-89, Released 16-Mar-89
Synopsis: add DESTRUCTURING-BIND macro
Status: might need new version before vote
+ DISASSEMBLE-SIDE-EFFECT
Version 3 1/21/88
Status: Passed, 1988
+ DO-SYMBOLS-DUPLICATES
Version 3 23-NOV-87
Status: Passed, 1988?
+ DOTTED-MACRO-FORMS
Version 3, 15-Nov-88, Released 7-Dec-88
Status: passed, Jan 89 X3J13
+ DRIBBLE-TECHNIQUE
14-FEB-88, Version 2
Status: Passed, 1988?
! DYNAMIC-EXTENT
Version 3, 11-Jan-89, released 16-Mar-89
Comments: still some holes
Status: ready for vote?
+ EQUAL-STRUCTURE
Version 6, 11-Jan-89, Released 12-Jan-89
Status: Passed with amendments
Version 7, 15-Mar-89
Status: Passed Jan 89 X3J13 as amended.
* EQUALP-GENERIC
Version 1, 28-Feb-89
Synopsis: make EQUALP generic function
Comments: Various problems being worked on
Status: ** NEED NEW VERSION ***
* ERROR-CHECKING-IN-NUMBERS-CHAPTER
Version 1, 6-Mar-89
Synopsis: define 'should signal', 'might signal' for number fns
Status: ** NEED NEW VERSION **
! ERROR-NOT-HANDLED
Version 1, 25-Sep-88, Released 6-Oct-88 and 14-Mar-89
Status: ready for vote
+ EVAL-OTHER
8-JUN-88, Version 2
Status: Passed, 1988?
! EXIT-EXTENT
Version 6, 8-Jan-89, distributed at Jan89 X3J13
Rereleased 16-Mar-89
Status: tabled Jan89; ready for vote
+ EXPT-RATIO
Version 3, 31-Oct-88, Released 7 Dec 88
Status: passed, Jan 89 X3J13
+ FIXNUM-NON-PORTABLE
Version 4, 7-Dec-88, Released 12-Dec-88
Version 6, 17-Mar-89, as amended
Status: Passed, Jan 89 X3J13, as amended
+ FLET-DECLARATIONS
Version 2, 2 FEB 88
Status: Passed, 1988?
+ FLET-IMPLICIT-BLOCK
Version 6 5-JUN-87
Status: Passed, 1988?
+ FORMAT-ATSIGN-COLON
Version 4 5-JUN-87
Status: Passed, 1988?
+ FORMAT-COLON-UPARROW-SCOPE
Version 3, 5 FEB 88
Status: Passed, 1988?
+ FORMAT-COMMA-INTERVAL
Version 2, 15-JUN-87
Status: Passed, 1988?
+ FORMAT-E-EXPONENT-SIGN
Version 2, 2 Oct 88, Released 6 Oct 88
Status: Passed, Jan 89 X3J13
+ FORMAT-OP-C
11-JUN-87, Version 5
Status: Passed, 1988?
* FORMAT-PLURALS
Synopsis: remove ~P, add ~:@[singular~;plural~]
Status: no proposal
+ FORMAT-PRETTY-PRINT
Version 7, 15 Dec 88, Released 7 Dec 88
Comments: passed, Jan 89 X3j13
+ FUNCTION-CALL-EVALUATION-ORDER
Version 1, 22-MAR-88
Status: Passed, 1988
! FUNCTION-COERCE-TIME
Synopsis: When does SYMBOL-FUNCTION happen in MAPCAR?
Version 2, 16-sep-88, Released 8-Oct-88
Re-released: 16-Mar-89
Status: ready for vote?
+ FUNCTION-COMPOSITION
Synopsis: Add new functions
Version 5, 10-Feb-89
Status: Passed (as amended) Jan 89 X3J13
maybe this was passed as amendment to TEST-NOT-IF-NOT instead
+ FUNCTION-DEFINITION
Version 3, 10-Feb-89
Status: Passed (as amended) Jan 89 X3J13
! FUNCTION-NAME
Comment: renaming of SETF-FUNCTION-VS-MACRO, SETF-PLACES
SETF-FUNCTION-VS-MACRO
Version 3, 4-Nov-87, Released Nov 87
SETF-PLACES
Version 1, 11-Nov-88, Released 9-Dec-88
FUNCTION-NAME
Version 1, 27-Jan-89, Released 16-Mar-89
Status: ready for vote
+ FUNCTION-TYPE
Version 12, 4-SEP-88
Status: Passed, June 1988 X3J13, as amended
+ FUNCTION-TYPE-ARGUMENT-TYPE-SEMANTICS
Synopsis: Change semantics of argument types in function declarations
Version 3, 7-Dec-88, Released 12-Dec-88
Status: Passed, Jan 89 X3J13
+ FUNCTION-TYPE-KEY-NAME
Version 3, 13-FEB-88
Status: Passed, 1988
+ FUNCTION-TYPE-REST-LIST-ELEMENT
Version 5, 14-Nov-88, Released 8-Dec-88
Status: Passed, Jan 89 X3J13
! GENSYM-NAME-STICKINESS
Synopsis: no side effects if optional arg supplied
Version 1, 14-Feb-89, Released 14-Mar-89
Status: comments
Version 2, 16-Mar-89
Status: ready for release?
+ GET-MACRO-CHARACTER-READTABLE
Version 3, 11-Feb-89
Status: Passed (as amended) Jan 89 X3J13
+ GET-SETF-METHOD-ENVIRONMENT
Version 5 13-JUL-87
Status: Passed, 1988?
! HASH-TABLE-ACCESS
Synopsis: Add new accessors for hash-table properties
Version 1, 13-Sep-88 released 8-Oct-88
Version 2, 13 Oct 88, released 16-Mar-89
status: vote
+ HASH-TABLE-PACKAGE-GENERATORS
Version 7, 8-Dec-88, Released 9-Dec-88
Comments: The test-package-iterator example has the values
from the generator in the wrong order.
Status: passed, Jan 89 X3J13
* HASH-TABLE-PRINTED-REPRESENTATION
Version 2, 8-Jun-88
Comments: Use #S(ARRAY ...), #S(HASH-TABLE...), #S(PATHNAME...)?
Status: need new proposal
+ HASH-TABLE-TESTS
Version 2, 8-Dec-88, Released 8 Dec 8 8
Status: passed Jan 89 X3J13
+ IEEE-ATAN-BRANCH-CUT
Version 2, 11-Jan-89, Released 11-Jan-89
Status: passed, Jan 89 X3J13
* IGNORE-VARIABLE
Synopsis: default (IGNORE IGNORE)
Version 1, 6-Feb-89
+ IMPORT-SETF-SYMBOL-PACKAGE
Version 5 ??-MAY-87
Status: Passed, 1988?
! IN-PACKAGE-FUNCTIONALITY
Version 4, 12-Dec-88, Released 12-Dec-88
Status: tabled
Version 8, 15-Mar-89, Released 15-Mar-89
Status: ready for vote
+ KEYWORD-ARGUMENT-NAME-PACKAGE
8-NOV-87, Version 8
Status: Passed, 1988?
+ LAST-N
12-MAR-88, Version 2
Status: Passed, 1988?
+ LCM-NO-ARGUMENTS
Version 1, 17 Oct 88, Released 8 Dec 88
Status: passed, Jan 89 X3J13
! LISP-PACKAGE-NAME
Synopsis: change LISP to COMMON-LISP to avoid CLtL confusion
Version 1, 22 Dec 88, Released 11-Jan-89
Status: tabled; version 1 still ready for vote
! LISP-SYMBOL-REDEFINITION
Version 5, 22-Nov-88, Released 8 Dec 88
Comments: Don't like (DEFVAR CAR ...) example
14: Like simpler "Redefining any documented
definition on a symbol in the LISP package -- such as variables,
functions, constants, properties and property-lists, etc -- is
undefined, except for the explicitly allowed cases (e.g. dynamic
binding of variables)."
Status: tabled; version 5 still ready for vote
! LOAD-OBJECTS
Synopsis: Provide a way to allow defstruct/defclass objects in compiled files
Version 3, 9-Mar-89, released 16-Mar-89
Status: ready for vote?
! LOAD-TRUENAME
Synopsis: Make default pathname for LOAD inside LOAD same?
Version 1, 13-Mar-89, Released 16-Mar-89
Status: ready for vote
! LOCALLY-TOP-LEVEL
Version 2, 16-Mar-89, released 17-Mar-89
Status: ready to vote
! LOOP-AND-DISCREPANCY
Version 1, 15-Mar-89, released 16-Mar-89
status: ready for vote
+ MACRO-FUNCTION-ENVIRONMENT
Version 2, 8-JUN-88
Status: Passed, 1988
* MACRO-SPECIAL-FORMS
Synopsis: macros => implementation-dependent special forms doesn't work
Status: *** NEED PROPOSAL SUBMITTED ****
+ MAKE-PACKAGE-USE-DEFAULT
Version 2, 8 Oct 88, Released 12-Dec-88
Version 3, 16-Mar-89
Status: Passed, Jan 89 X3J13 as amended
! MAKE-STRING-FILL-POINTER
Synopsis: extend MAKE-STRING to take a fill-pointer?
Version 1, 20-Oct-88, released 16-Mar-89
Status: ready for vote
+ MAPPING-DESTRUCTIVE-INTERACTION
Version 2, 09-Jun-88, Released 8 Oct 88
Synopsis: [don't] define interaction of DELETE on MAPCAR'd list.
Status: passed, Jan 89 X3J13
+ NTH-VALUE
Version 4, 8-Dec-88, Released 8 Dec 88
Comment: amended to clarify when index out of range
Version 5, 17-Mar-89
Status: passed, as amended
+ PACKAGE-CLUTTER
Version 6, 12-Dec-88, Released 12-Dec-88
Comments: Accepted, with amendment
Version 7, 17-Mar-89
Status: Passed, Jan 89 X3J13, as amended
+ PACKAGE-DELETION
Version 5, 21 nov 88, Released 8 Dec 88
Comments: Minor glitches? Remove the description of "correctable" error to be signalled and
handled.
Status: passed, Jan 89 X3J13
!+ PACKAGE-FUNCTION-CONSISTENCY
Synopsis: allow strings for package arg everywhere uniformly
Version 2, 12-Jan-89, Released 12-Jan-89
Comment: Accepted MORE-PERMISSIVE with amendments
Version 3, 17-Mar-89, released 17-Mar-89
Status: vote to accept wording as intent of amendment
* PATHNAME-CANONICAL-TYPE
Synopsis: allow canonical :SOURCE-LISP to MAKE-PATHNAME;
require PATHNAME-TYPE to return same?
Version 1, 07-Jul-88
Comments: only add the :TYPE :SOURCE-LISP, not PATHNAME-CANONICAL-TYPE?
Status: => "pathname" committee?
* PATHNAME-LOGICAL
Synopsis: add logical pathnames (pathnames for an imaginary portable
file system, which get translated by site-dependent translations into
physical pathnames on an actual file system)
Status: no proposal yet
* PATHNAME-PRINT-READ
Synopsis: Print pathnames like #P"asdf"?
Version 1, 21-Oct-88
Comments: Numerous, pro, con. Print like #S(pathname ...)?
Status: *** NEED NEW VERSION ***
+ PATHNAME-STREAM
Version 6 14-NOV-87
Status: Passed, 1988?
+ PATHNAME-SYMBOL
Version 5 5-FEB-88
Status: Passed, 1988?
* PATHNAME-SUBDIRECTORY-LIST
Synopsis: How to deal with subdirectory structures in pathname functions
Version 3, 29-Dec-88
Comments: typos and proposed simplifications
Status: *** NEED NEW VERSION ***
* PATHNAME-SYNTAX-ERROR-TIME
Synopsis: when are errors in pathnames detected?
Version 1, 7-Jul-88
Comments: various
Status: need new version? ==> ERRORS-IN-FILE-CHAPTERS?
+ PATHNAME-UNSPECIFIC-COMPONENT
Synopsis: More extensions to :UNSPECIFIC
Version 1, 29-Dec-88, Released 12-Jan-89
Version 2, 17-Mar-89
Status: Passed, Jan 89 X3j13, as amended
+ PEEK-CHAR-READ-CHAR-ECHO
Version 3, 8-Oct-88, Released 8 Oct 88
Synopsis: PEEK-CHAR, READ-CHAR on streams made by MAKE-ECHO-STREAM
Status: Passed, Jan 89 X3J13
* PRETTY-PRINT-INTERFACE
Version 3, 15-Mar-89
Synopsis: standardize interface to prettyprinter
Status: Need new version
+ PRINC-CHARACTER
29-APR-87, Version 2
Status: Passed, 1988?
* PRINT-CIRCLE-SHARED
Synopsis: does *PRINT-CIRCLE* cause shared structure to print with #=?
Status: Not submitted yet ** NEED WRITEUP **
+ PRINT-CIRCLE-STRUCTURE
Version 3, 20 Sep 88, Released 8 Oct 88
Comments: Accepted, with amendment
Version 4, 17-Mar-89
Status: Passed, Jan 89 X3J13, as amended
! PROCLAIM-LEXICAL
Version 9, 8-Dec-88, Released 12-Dec-88
Synopsis: add LEXICAL proclaimation
Comments: lengthy mail; amendments at Jan meeting
Status: tabled, vote on version 9 (w/o amendments)
+ PUSH-EVALUATION-ORDER
Version 5, 25-NOV-87
Status: Passed, 1988?
+ RANGE-OF-COUNT-KEYWORDS
Version 3, 9-Oct-88, Released 14-Oct-88
Status: passed, Jan 89 X3J13
+ RANGE-OF-START-AND-END-PARAMETERS
Version 1, 14-Sep-88, Released 7 Oct 88
Status: passed, Jan 89 X3J13
* READ-CASE-SENSITIVITY
Synopsis: Allow readtables to be case sensitive
Comments: use function or keyword?
Status: need new version
* READ-DELIMITED-LIST-EOF
Synopsis: eof in read deliminted list signals an error
Status: awaiting submission
! REAL-NUMBER-TYPE
Synopsis: add REAL = (OR RATIONAL FLOAT) & range
Version 3, 13-Jan-89, released 16-Mar-89
Status: vote?
+ REDUCE-ARGUMENT-EXTRACTION
Version 3 13-FEB-88
Status: Passed, 1988?
!* REMF-DESTRUCTION-UNSPECIFIED
Synopsis: Specification of side-effect behavior in CL
Version 4, 29-Nov-88, Released 12-Jan-89
Status: straw vote in favor of this, BarMar will make amendments
Version 5, 15-Mar-89
Comment: needs a little work
Status: *** NEARLY READY -- NEED NEW VERSION ****
+ REQUIRE-PATHNAME-DEFAULTS
Version 6, 9 Dec 88, Released 09 Dec 88
Status: passed, Jan 89 X3j13
+ REST-LIST-ALLOCATION
Version 3, 12-Dec-88, Released 12-Dec-88
Status: proposal MAY-SHARE passed, Jan 89 X3J13
+ RETURN-VALUES-UNSPECIFIED
Version 6, 9 Dec 88, Released 9-Dec-88
Status: passed, Jan 89 X3J13
+ ROOM-DEFAULT-ARGUMENT
Version 1, 12-Sep-88, Released 8 Oct 88
Status: passed, Jan 89 X3J13
* SETF-MULTIPLE-STORE-VARIABLES
Synopsis: Allow multiple "places" in SETF stores
Version 1, 5-Dec-88
Status: *** NEED NEW VERSION ****
+ SETF-SUB-METHODS
Version 5, 12-Feb-88, Released 8 Oct 88
Synopsis: careful definition of order inside (SETF (GETF ...) ...)
Status: passed, Jan 89 X3J13
+ SHADOW-ALREADY-PRESENT
Version 4 10-NOV-87
Status: Passed, 1988?
+ SHARPSIGN-PLUS-MINUS-PACKAGE
Version 3 14-NOV-87
Status: Passed, 1988?
+ SPECIAL-TYPE-SHADOWING
Synopsis: intersection of types when proclaimed special has local type
declaration
Version 1, 4-Nov-88, released 11-Jan-89
Status: passed, Jan 89 X3J13
+ STANDARD-INPUT-INITIAL-BINDING
Version 8, 8 Jul 88, Released 7 Oct 88
Status: passed, Jan 89 X3J13
+ STEP-ENVIRONMENT
Version 3, 20-Jun-88, Released 7 Oct 88
Version 4, 17-Mar-89
status: Passed, Jan 89 X3J13, as amended
+ STREAM-ACCESS
Version 2, 30-Nov-88, Released 9 Dec 88
Status: ADD-TYPES-ACCESSORS passed, Jan 89 X3J13
+ SUBSEQ-OUT-OF-BOUNDS
29-MAR-88 Version 2
Status: Passed, 1988?
* SUBTYPEP-ENVIRONMENT
Version 1, 2-Jan-89
Status: ** missing writeup ***
+ SUBTYPEP-TOO-VAGUE
Version 4, 7-Oct-88, Released 7 Oct 88
Status: passed, Jan 89 X3J13
+ SYMBOL-MACROLET-DECLARE
Version 2, 9-Dec-88, Released 9 Dec 88
Status: passed, Jan 89 X3J13
!+ SYMBOL-MACROLET-SEMANTICS
Version 5, 30-Nov-88, Released 9 Dec 88
Status: Passed, Jan 89 X3J13
Version 6, 14-Mar-89, released 16-Mar-89
Status: ready for vote
+ TAILP-NIL
Version 5, 9-Dec-88, Released 12-Dec-88
Synopsis: Operation of TAILP given NIL
Status: passed, Jan 89 X3J13
+ TEST-NOT-IF-NOT
Version 3, 1 Dec 88, Released 9 dec
Version 4, 18-Mar-89
Status: Need new version as amended.
! THE-AMBIGUITY
Version 2, 11-Jan-89, Released 11-Jan-89
Comments: typo, sense wrong
Status: tabled, vote on 2
! TIME-ZONE-NON-INTEGER
Version 1, 13-Mar-89, Released 16-Mar-89
Status: ready for vote
+* TYPE-OF-UNDERCONSTRAINED
Version 3, 12-Dec-88, Released 12 Dec 88
Comments: Accepted, with amendments
Version 5, 16-Mar-89
Comments: constraints wrong
Status: ** NEED NEW VERSION ***
! UNDEFINED-VARIABLES-AND-FUNCTIONS
Synopsis: What happens on an undefined function call, unbound variable ref?
Version 1, 29-Nov-88, Released 11-Jan-89
Comments: Lumping SLOT-UNBOUND in with unbound special variables was a mistake,
as SLOT-UNBOUND is an extension mechanism, not only a safety checking
mechanism. Also there were some wording problems. Gabriel and Gregor
are to submit a revised proposal.
No version arrived.
Status: vote on 1?
+ UNREAD-CHAR-AFTER-PEEK-CHAR
Version 2, 2-Dec-88, Released 12-Dec-88
Status: passed, Jan 89 X3J13
+ VARIABLE-LIST-ASYMMETRY
Version 3, 08-Oct-88, Released 9 Dec 88
Status: passed, Jan 89 X3J13
+ WITH-OUTPUT-TO-STRING-APPEND-STYLE
Version 5, 7-JUN-88
Status: Passed, 1988?
∂19-Mar-89 2015 @Score.Stanford.EDU:jle@Orange.stanford.edu CS Colloquium Reminder
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 19 Mar 89 20:15:36 PST
Received: from Orange.stanford.edu by SCORE.STANFORD.EDU with TCP; Sun 19 Mar 89 20:06:02-PST
Received: by Orange.stanford.edu (5.59/25-eef) id AA08920; Thu, 9 Mar 89 14:40:48 PDT
Date: Thu, 9 Mar 89 14:40:48 PDT
From: Jeffrey Eppinger <jle@Orange.stanford.edu>
Message-Id: <8903092240.AA08920@Orange.stanford.edu>
To: csl-everyone@sierra, faculty@score, students@score
Subject: CS Colloquium Reminder
The Computer Productivity Paradox
Michael L. Dertouzos
Professor and Director
MIT Laboratory for Computer Science
Computer Science Colloquium
Tuesday, March 14, 1989, 4:15pm
Jordan Hall (Building 420), Room 040
Stanford University
=> Refreshments will be served at 3:45pm outside the Lecture Hall <=
Abstract
The first half century of the computer field has been largely supply side
driven by a wondrous new technology that is still evolving and continues
to fuel our imagination. One side of the paradox lies in the apparent
lack of aggregate effect (either up or down) of computers on conventional
measures of human productivity. The other side of the paradox lies in the
indifference of makers and users of computer hardware and software about
the effect of such systems upon human productivity. The talk will examine
how computers might help current productivity weaknesses especially of the
white collar kind, how they might open new productive endeavors, how they
should not be misused and how information might be valued so that we can
develop effective measures of information-processing productivity. The
mission ahead is historic--to apply computer science and information
technology across the world's entire economic front so as to increase
human productivity. The associated question is equally ominous:
Can it be done?
∂19-Mar-89 2358 @Score.Stanford.EDU:jcm@ra.stanford.edu Info on Concept 100?
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 19 Mar 89 23:58:13 PST
Received: from ra.stanford.edu by SCORE.STANFORD.EDU with TCP; Sun 19 Mar 89 23:52:40-PST
Received: by ra.stanford.edu (5.59/25-eef) id AA01568; Sun, 19 Mar 89 21:58:26 PDT
Date: Sun, 19 Mar 89 21:58:26 PDT
From: John Mitchell <jcm@ra.stanford.edu>
Message-Id: <8903200558.AA01568@ra.stanford.edu>
To: csd@score, faculty@score, su-etc@score
Subject: Info on Concept 100?
I have been using a Concept 100without
a manual. This has not been a problem until tonight,
when I inadvertantly turned my modem on
while someone else was talking on the phone.
By luck, the tone of the conversation switched
my terminal into 300 baud, half-duplex, which I am
unable to switch out of
((not having terminal documentation). Any suggestions besides
the obvious (throw it away) would be appreciated.
Thnaks.
∂19-Mar-89 2358 @Score.Stanford.EDU:jcm@ra.stanford.edu Info on Concept 100?
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 19 Mar 89 23:58:13 PST
Received: from ra.stanford.edu by SCORE.STANFORD.EDU with TCP; Sun 19 Mar 89 23:52:40-PST
Received: by ra.stanford.edu (5.59/25-eef) id AA01568; Sun, 19 Mar 89 21:58:26 PDT
Date: Sun, 19 Mar 89 21:58:26 PDT
From: John Mitchell <jcm@ra.stanford.edu>
Message-Id: <8903200558.AA01568@ra.stanford.edu>
To: csd@score, faculty@score, su-etc@score
Subject: Info on Concept 100?
I have been using a Concept 100without
a manual. This has not been a problem until tonight,
when I inadvertantly turned my modem on
while someone else was talking on the phone.
By luck, the tone of the conversation switched
my terminal into 300 baud, half-duplex, which I am
unable to switch out of
((not having terminal documentation). Any suggestions besides
the obvious (throw it away) would be appreciated.
Thnaks.
∂20-Mar-89 0002 X3J13-mailer X3J13 mailer
Received: from RELAY.CS.NET by SAIL.Stanford.EDU with TCP; 20 Mar 89 00:02:29 PST
Received: from relay2.cs.net by RELAY.CS.NET id aa07578; 20 Mar 89 2:47 EST
Received: from utokyo-relay by RELAY.CS.NET id ai28052; 20 Mar 89 2:38 EST
Received: by ccut.cc.u-tokyo.junet (5.51/6.3Junet-1.0/CSNET-JUNET)
id AA05005; Mon, 20 Mar 89 14:16:29 JST
Received: from kepa.cc.aoyama.junet by aoyama.cc.aoyama.junet (4.0/6.4J.BETA2-agu2)
id AA08005; Mon, 20 Mar 89 13:59:10 JST
Received: by kepa.cc.aoyama.junet (4.0/6.3Junet-1.0)
id AA00673; Mon, 20 Mar 89 13:59:37 JST
Date: Mon, 20 Mar 89 13:59:37 JST
From: Masayuki Ida <ida%cc.aoyama.junet@UTOKYO-RELAY.CSNET>
Return-Path: <ida@cc.aoyama.junet>
Message-Id: <8903200459.AA00673@kepa.cc.aoyama.junet>
To: x3j13@SAIL.STANFORD.EDU
Cc: ida%cc.aoyama.junet@UTOKYO-RELAY.CSNET
Subject: X3J13 mailer
I finally found that I did NOT receive ANY X3J13 mails
since March 6 or 7 until today.
I believe something was wrong with the mailer at stanford or
at the japanese gate way.
Editorial mailer, and other mailers are OK.
Anyway, I will attend the Fairfax meeting as a member,
though I have not get any fresh information for two weeks.
Looking forward to seeing you all at Fairfax.
Masayuki Ida
∂20-Mar-89 0942 @Score.Stanford.EDU:janelin@krakatoa.stanford.edu Seminar by Robotics Faculty Candidate
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 20 Mar 89 09:42:09 PST
Received: from krakatoa.stanford.edu by SCORE.STANFORD.EDU with TCP; Mon 20 Mar 89 09:30:04-PST
Received: by krakatoa.stanford.edu; Mon, 20 Mar 89 09:26:51 PST
Date: 20 Mar 1989 0926-PST (Monday)
From: Jane Lintott <janelin@krakatoa.stanford.edu>
Return-Path: <jutta@coyote.stanford.edu>
Received: from Sierra.Stanford.EDU by krakatoa.stanford.edu with TCP; Fri, 17 Mar 89 15:01:20 PST
Received: from coyote.stanford.edu by sierra.STANFORD.EDU (3.2/4.7); Fri, 17 Mar 89 15:03:17 PST
Received: by coyote.stanford.edu; Fri, 17 Mar 89 15:09:29 PST
Date: 17 Mar 1989 1509-PST (Friday)
From: Jutta McCormick <jutta@coyote.stanford.edu>
To: cedar@coyote.stanford.edu, faculty@score.stanford.edu,
davis@score.stanford.edu, cannon@sierra.stanford.edu,
bxr@sail.stanford.edu, myers@polya.stanford.edu
Cc:
Subject: Seminar by Robotics Faculty Candidate
SPECIAL ROBOTICS SEMINAR
Speaker: Michael Erdmann
M.I.T.
Title: MOTION PLANNING WITH UNCERTAINTY: A PROBABILISTIC APPROACH
Date: Monday, March 20, 1989
Time: 4:00 p.m.
Place: Cedar Hall Conference Room
ABSTRACT
Robots must successfully solve tasks in the presence of uncertainty.
Uncertainty arises from errors in sensing, modelling, and control. In
the past much work has been directed towards finding strategies that
are guaranteed to succeed in a specific number of steps. This talk
presents an alternative approach: The purposeful injection of randomized
actions in a strategy. Randomized actions are useful in a variety of
settings. For instance, a random motion can make progress even when
sensory information is inadequate to decide on the next proper course
of action. In some settings a randomized action may be preferable to an
action that is guaranteed to be successful but that requires too much
computational effort or execution time.
In this talk I will present a few examples involving randomized
actions. I will mention implementations of the theory, both in
simulation and on a physical manipulator. I will also discuss the
relationship of randomized strategies to the pre-image framework
developed by Lozano-Perez, Mason, and Taylor for generating guaranteed
strategies.
∂20-Mar-89 0959 @Score.Stanford.EDU:chandler@polya.Stanford.EDU Good News
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 20 Mar 89 09:59:30 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Mon 20 Mar 89 09:58:44-PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA05381; Mon, 20 Mar 89 08:51:50 -0800
Date: Mon, 20 Mar 1989 8:51:48 PST
From: "Joyce R. Chandler" <chandler@polya.stanford.edu>
To: ac@score
Subject: Good News
Message-Id: <CMM.0.87.606415908.chandler@polya.stanford.edu>
The faculty meeting scheduled for tomorrow has been canceled.
∂20-Mar-89 1008 @Score.Stanford.EDU:chandler@polya.Stanford.EDU Last Faculty Lunch - Winter Quarter
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 20 Mar 89 10:08:06 PST
Received: from polya.Stanford.EDU by SCORE.STANFORD.EDU with TCP; Mon 20 Mar 89 10:05:22-PST
Received: by polya.Stanford.EDU (5.61/25-eef) id AA10129; Mon, 20 Mar 89 10:05:22 -0800
Date: Mon, 20 Mar 1989 10:05:16 PST
From: "Joyce R. Chandler" <chandler@polya.stanford.edu>
To: faculty@score, bureaucrats@score
Cc: staff-rep@score
Subject: Last Faculty Lunch - Winter Quarter
Message-Id: <CMM.0.87.606420316.chandler@polya.stanford.edu>
Come to the last faculty lunch of the Winter quarter - tomorrow 3-21 at 12:15
in MJH-146. There's no formal agenda....no invited guest. Just come and enjoy!
∂20-Mar-89 1229 X3J13-mailer Re: Fatal vesus Harmless
Received: from Sun.COM by SAIL.Stanford.EDU with TCP; 20 Mar 89 12:29:29 PST
Received: from snail.Sun.COM (snail.Corp.Sun.COM) by Sun.COM (4.1/SMI-4.0)
id AA03785; Mon, 20 Mar 89 12:01:45 PST
Received: from clam.sun.com by snail.Sun.COM (4.1/SMI-4.1)
id AA18569; Mon, 20 Mar 89 11:57:53 PST
Received: by clam.sun.com (4.0/SMI-4.0)
id AA02722; Mon, 20 Mar 89 12:01:32 PST
Date: Mon, 20 Mar 89 12:01:32 PST
From: cperdue@Sun.COM (Cris Perdue)
Message-Id: <8903202001.AA02722@clam.sun.com>
To: RPG@SAIL.Stanford.EDU, x3j13@SAIL.Stanford.EDU
Subject: Re: Fatal vesus Harmless
Cc: cl-editorial@SAIL.Stanford.EDU
Dick Gabriel's discussion of fatal versus harmless made sense
to me. I'm going to propose here that within that framework
it can make sense to PERMIT certain SPECIFIED side effects.
I still say that "unspecified by harmless" loses.
To paraphrase, a program P "has fatal consequences"
exactly if it can be preceded and followed by conforming code
so that the entire sequence including P may "crash or abnormally
terminate".
The key question remaining in my mind is what side effects
can be considered harmless. Dick mentioned a property-list-like
data structure. Let's talk about hash tables and MAPHASH.
Specifically let's talk about the result of
(let ((result (list)))
(maphash #'(lambda (key value) (push (list key value) result))
table)
result)
The order of the result of this expression is unspecified for a
given hash table at a given time, but the set of key-value pairs
is specified.
Is it OK for CONS to cause the order of this list to change? Is it
OK for CAR to cause it to change?
Since we are trying to discuss harmless side effects, suppose we wish
to allow GC to rehash, possibly changing the order. The answer must
be that CONS can change the list, because it may invoke the GC.
Since we don't specify what operations can allocate storage, it
appears that we will prefer to say that any operation at all
is permitted to change the value of the example expression above.
In either case, we have no "unspecified but harmless" side
effect of some particular Common Lisp operation. We have a
particular class of side effects that are PERMITTED
in certain circumstances. We may choose to specify that
certain classes of side effects are ALWAYS permitted.
We may say that certain side effects are permitted -- to certain
operations. Suppose we wish to permit certain Common Lisp operations
to issue progress messages, but *not* to consider progress messages as
side effects permitted for all Common Lisp operations. In
that case it appears to me that we specify that certain operations may
issue progress messages.
While agreeing with Dick Gabriel's recent note, nowhere do I see
the concept "unspecified by harmless" as useful to the definition
of Common Lisp. Some side effects may be PERMITTED. Some may even
be permitted to ALL COMMON LISP OPERATIONS. These are specified
effects, not unspecified effects, and "permitted" I think conveys
the concept much more clearly than "harmless".
∂20-Mar-89 1246 @Score.Stanford.EDU:jle@Orange.stanford.edu Mailer Error
Received: from Score.Stanford.EDU by SAIL.Stanford.EDU with TCP; 20 Mar 89 12:46:32 PST
Received: from Orange.stanford.edu by SCORE.STANFORD.EDU with TCP; Mon 20 Mar 89 11:37:38-PST
Received: by Orange.stanford.edu (5.59/25-eef) id AA00899; Mon, 20 Mar 89 11:37:13 PDT
Date: Mon, 20 Mar 89 11:37:13 PDT
From: Jeffrey Eppinger <jle@Orange.stanford.edu>
Message-Id: <8903201937.AA00899@Orange.stanford.edu>
To: csl-everyone@sierra, faculty@score, students@score
Subject: Mailer Error
If you received reminder mail about this colloquium this morning...
don't be fooled. It's a mailer error. The colloquium was last week.
I'm sorry you may not have received your reminder.
Jeff.
∂20-Mar-89 1315 CL-Compiler-mailer issue COMPILER-VERBOSITY, version 6
Received: from NSS.Cs.Ucl.AC.UK by SAIL.Stanford.EDU with TCP; 20 Mar 89 13:15:01 PST
Received: from maths.bath.ac.uk by NSS.Cs.Ucl.AC.UK via Janet with NIFTP
id aa07991; 20 Mar 89 18:58 GMT
Received: from xenakis by mordell.maths.bath.AC.UK id aa19210;
20 Mar 89 18:59 GMT
To: masinter.pa@xerox.com
CC: cl-compiler@sail.stanford.edu, x3J13@sail.stanford.edu
In-reply-to: masinter.pa@com.xerox's message of 16 Mar 89 05:47 PST <890316-054837-3596@Xerox>
Subject: issue COMPILER-VERBOSITY, version 6
Date: Mon, 20 Mar 89 19:02:07 GMT
From: jpff%maths.bath.ac.uk@NSS.Cs.Ucl.AC.UK
Sender: jpff%maths.bath.ac.uk@NSS.Cs.Ucl.AC.UK
b
∂21-Mar-89 0847 debra@russell.Stanford.EDU REMINDER-EVENING SEMINAR
Received: from russell.Stanford.EDU by SAIL.Stanford.EDU with TCP; 21 Mar 89 08:47:41 PST
Received: from localhost by russell.Stanford.EDU (4.0/inc-1.0)
id AA04102; Tue, 21 Mar 89 08:51:21 PST
Message-Id: <8903211651.AA04102@russell.Stanford.EDU>
To: evesem@russell.Stanford.EDU
Cc: debra@russell.Stanford.EDU, kuder@russell.Stanford.EDU
Subject: REMINDER-EVENING SEMINAR
Date: Tue, 21 Mar 89 08:51:20 PST
From: Debra Alty <debra@russell.Stanford.EDU>
REMINDER
The next EVENING SEMINAR will be Wednesday, March 8th @ 7:30pm in the
CSLI Cordura Conference Room.
Professor Amos Tversky, Psychology Department, will be leading the
discussion.
The following will be served:
Teriyaki chicken sticks Saki
Sushi Plum Wine
Veggies w/dip Beer
Fortune cookies Sparkling waters
Coffee
Tea
Debra
∂21-Mar-89 1106 debra@russell.Stanford.EDU C O R R E C T I O N - REMINDER-EVENING SEMINAR
Received: from russell.Stanford.EDU by SAIL.Stanford.EDU with TCP; 21 Mar 89 11:06:36 PST
Received: from [127.0.0.1] by russell.Stanford.EDU (4.0/inc-1.0)
id AA04678; Tue, 21 Mar 89 09:02:54 PST
Message-Id: <8903211702.AA04678@russell.Stanford.EDU>
To: evesem@russell.Stanford.EDU
Cc: debra@russell.Stanford.EDU, kuder@russell.Stanford.EDU
Subject: C O R R E C T I O N - REMINDER-EVENING SEMINAR
Date: Tue, 21 Mar 89 09:01:22 PST
From: Debra Alty <debra@russell.Stanford.EDU>
C O R R E C T I O N
REMINDER
The next EVENING SEMINAR will be Wednesday, March 22nd @ 7:30pm in the
CSLI Cordura Conference Room.
Professor Amos Tversky, Psychology Department, will be leading the
discussion.
The following will be served:
Teriyaki chicken sticks Saki
Sushi Plum Wine
Veggies w/dip Beer
Fortune cookies Sparkling waters
Coffee
Tea
Debra
∂21-Mar-89 1453 X3J13-mailer Issue: PATHNAME-COMPONENT-VALUE (version 1)
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 21 Mar 89 14:53:02 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 562306; Tue 21-Mar-89 17:52:49 EST
Date: Tue, 21 Mar 89 17:52 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: Issue: PATHNAME-COMPONENT-VALUE (version 1)
To: X3J13@SAIL.STANFORD.EDU
References: <19890320180405.2.MOON@EUPHRATES.SCRC.Symbolics.COM>
Message-ID: <19890321225242.9.MOON@EUPHRATES.SCRC.Symbolics.COM>
This issue came up while reviewing section 2.2 of the draft standard.
Issue: PATHNAME-COMPONENT-VALUE
Related Issues:PATHNAME-CANONICAL-TYPE,
PATHNAME-SUBDIRECTORY-LIST,
PATHNAME-UNSPECIFIC-COMPONENT,
PATHNAME-WILD
References: CLtL pp.410-3
Category: CLARIFICATION and CHANGE
Edit history: Version 1, 20-Mar-89, by Moon
Problem description:
CLtL is overly restrictive on the possible values for pathname components.
These restrictions are described in a funny way that makes it unclear
whether they are requirements, guidelines, or just an example.
The restrictions are not all written down in one place, but they appear
to be as follows:
Host nil, :wild, string, or list of strings
Device nil, :wild, string, or something else ("structured")
Directory nil, :wild, string, or something else ("structured")
Name nil, :wild, string, or something else ("structured")
Type nil, :wild, or string
Version nil, :wild, :newest, positive integer, implementation
dependent symbol, or implementation-dependent integer
less than or equal to zero. Suggestions include :oldest,
:previous, :installed, 0, and -1.
PATHNAME-UNSPECIFIC-COMPONENT:NEW-TOKEN allowed implementations to
allow any component to be :UNSPECIFIC. This has been voted in.
PATHNAME-SUBDIRECTORY-LIST proposes a list of strings and keyword
symbols for the directory component.
PATHNAME-CANONICAL-TYPE proposes some new operations but does not
change the possible values of the type component.
PATHNAME-WILD proposes a portable way to test for implementation
dependent component values that indicate wildcard matching. It
does not change the possible values of any component.
Proposal (PATHNAME-COMPONENT-VALUE:SPECIFY):
The points of the proposal have been numbered to facilitate
amendments to remove or modify individual points.
When examining pathname components, conforming programs must be
prepared to encounter any of the following values:
1. Any component can be NIL, which means the component has not
been specified.
2. Any component can be :UNSPECIFIC, which means the component has
no meaning in this particular pathname.
3. Any component can be :WILD, which matches any component value.
Wild pathnames can be used with DIRECTORY but not with OPEN.
4. The host, device, directory, name, and type can be strings.
5. The host and device can be a list, a structure, or a
standard-object at the discretion of the implementation.
6. The directory can be a list of strings and symbols as detailed in
PATHNAME-SUBDIRECTORY-LIST (this assumes that it passes.)
7. The version can be any symbol or any integer. The symbol :NEWEST
refers to the largest version number that already exists in the file
system when reading, overwriting, appending, superseding, or directory
listing an existing file, and refers to the smallest version number
greater than any existing version number when creating a new file.
When constructing a pathname from components, conforming programs
must follow these rules:
11. Any component can be NIL. NIL in the host may mean a default host
rather than an actual NIL in some implementations.
12. Any component can be :WILD, which matches any component value.
Wild pathnames can be used with DIRECTORY but not with OPEN.
13. The host, device, directory, name, and type can be strings.
14. The directory can be a list of strings and symbols as detailed in
PATHNAME-SUBDIRECTORY-LIST (this assumes that it passes.)
15. The version can be :NEWEST.
16. Any component can be taken from the corresponding component
of another pathname on the same host and device.
17. An implementation might support other values for some
components, but a portable program cannot use those values.
An implementation might allow values to be transferred between
pathnames on different hosts or different devices, but a portable
program cannot rely on that.
A conforming program can use implementation-dependent values
but this can make it non-portable, for example, it might work
only with Unix file systems.
18. It is suggested, but not required, that implementations use
positive integers starting at 1 as version numbers, recognize
the symbol :oldest to designate the smallest existing version
number, and use keyword symbols for other special versions.
Consequences:
The changes relative to CLtL plus PATHNAME-UNSPECIFIC-COMPONENT
are as follows:
The definition of "structured" component is restricted to lists,
structures, and standard-objects, rather than allowing any object
whatsoever.
"Structured" hosts are allowed, a generalization of CLtL's list
of strings.
"Structured" directories are replaced by PATHNAME-SUBDIRECTORY-LIST.
"Structured" names are forbidden.
The difference between what component values a program can depend
on being able to use, versus what component values a program must
be prepared to encounter, is clarified.
Rationale:
This should make it easier to write portable programs that deal with
pathnames and make it easier for implementors by clarifying the
framework into which they must fit. Also it should make it easier
to write the Common Lisp language specification by resolving some
things that were unclear about the status quo.
Adding "structured" hosts conforms to current practice.
Substituting a default host for NIL conforms to current practice
in implementations that require all pathnames to have a specific host.
Removing "structured" names should improve portability without causing
any harm, assuming no implementation uses structured names. This will
improve portability by allowing programs to do string manipulation on
names, although such programs still have to be careful since the valid
characters and maximum length of a name are implementation-dependent.
Disallowing transferral of nonstandard component values between
different hosts or different devices allows implementations to support
multiple incompatible file systems.
Current practice:
All versions of Symbolics Genera violate CLtL in the matter of hosts,
since it uses standard-objects as the host component. Genera deviates
slightly from PATHNAME-SUBDIRECTORY-LIST, but otherwise conforms to
PATHNAME-COMPONENT-VALUE:SPECIFY.
Other implementations were not surveyed.
This proposal assumes that no current or planned implementation
uses structured names, not even for wildcards.
Cost to Implementors:
Most implementations already conform, except for the changes required
by PATHNAME-UNSPECIFIC-COMPONENT and PATHNAME-SUBDIRECTORY-LIST, so
the cost of this proposal itself should be minimal. It is conceivable
that an implementation may exist that has to change its pathname
representation, for example one that uses numbers as structured devices.
Cost to Users:
None.
Cost of non-adoption:
Pathnames will continue to be a poorly specified part of the language.
Performance impact:
None of any significance.
Benefits/Esthetics:
The boundary between the specified behavior of pathnames and the
implementation-dependent behavior of pathnames will be more clear.
Discussion:
A possible alternative to item 16 that's worth considering is:
16. Any component can be taken from the corresponding component
of another pathname. When the two pathnames are for incompatible
file systems (in implementations that support multiple file
systems), an appropriate translation occurs. If no meaningful
translation is possible, an error is signalled. The definition
of "appropriate" and "meaningful" is implementation-dependent.
This provides more useful behavior that conforming programs can
depend upon, but the behavior cannot be as precisely specified.
A significant amount of the Symbolics Genera pathname facility is
related to this capability, and it's used a lot in heterogeneous
networks, so maybe this is a useful capability that ought to be
called for in the language. The cost to implementors is small since
they could define "appropriate" and "meaningful" to be whatever is
easiest for them, if their users don't complain.
∂21-Mar-89 1455 X3J13-mailer Issue: COMMON-TYPE (version 1)
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 21 Mar 89 14:55:40 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 562312; Tue 21-Mar-89 17:55:26 EST
Date: Tue, 21 Mar 89 17:55 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: Issue: COMMON-TYPE (version 1)
To: X3J13@SAIL.STANFORD.EDU
References: <19890320162410.9.MOON@EUPHRATES.SCRC.Symbolics.COM>
Message-ID: <19890321225520.0.MOON@EUPHRATES.SCRC.Symbolics.COM>
This issue came up while reviewing section 2.2 of the draft standard.
Issue: COMMON-TYPE
References: CLtL p.35, p.76
Category: CHANGE
Edit history: Version 1, 20-Mar-89, by Moon
Problem description:
The type COMMON is defined in a very peculiar way and does not seem to
be useful for anything. It can be extended by users using DEFSTRUCT,
but not DEFTYPE nor DEFCLASS, but it cannot be extended by implementations.
Whether certain types such as NUMBER and ARRAY are subtypes of COMMON
is implementation-dependent. The goal of having the COMMON type was
probably to improve portability, but it is unclear how it could actually
be used in that way.
Proposal (COMMON-TYPE:REMOVE):
Remove COMMON and COMMONP from the language.
Rationale:
Keeping the definition of COMMON accurate in the new specification, in
the face of changes elsewhere in the language such as the introduction
of CLOS and the possible introduction of character registries, is
difficult when no one is sure what COMMON is for. If no one uses COMMON,
it would be less work to just get rid of it.
Current practice:
Every implementation probably implements COMMON. Moon has never seen it
used except in a program to test whether its implementation matched CLtL.
Cost to Implementors:
None.
Cost to Users:
None unless they are actually using COMMON.
Cost of non-adoption:
Implementors would have to maintain COMMON. Users would have to try to
understand it, or figure out that they didn't care about it.
Performance impact:
None.
Benefits:
Simpler language.
Esthetics:
Simpler language.
Discussion:
None.
∂21-Mar-89 1458 X3J13-mailer Issue: COMPLEX-RATIONAL-RESULT (version 1)
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 21 Mar 89 14:58:19 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 562314; Tue 21-Mar-89 17:58:03 EST
Date: Tue, 21 Mar 89 17:57 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: Issue: COMPLEX-RATIONAL-RESULT (version 1)
To: X3J13@SAIL.STANFORD.EDU
References: <19890320164136.0.MOON@EUPHRATES.SCRC.Symbolics.COM>
Message-ID: <19890321225757.1.MOON@EUPHRATES.SCRC.Symbolics.COM>
This issue came up while reviewing section 2.2 of the draft standard.
Issue: COMPLEX-RATIONAL-RESULT
References: CLtL p.203
Category: CLARIFICATION
Edit history: Version 1, 20-Mar-89, by Moon
Problem description:
Referring to irrational and transcendental functions, CLtL says:
When the arguments to a function in this section are all rational and
the true mathematical result is also (mathematically) rational, then
unless otherwise noted an implementation is free to return either an
accurate result of type rational or a single-precision floating-point
approximation. If the arguments are all rational but the result cannot
be expressed as a rational number, then a single-precision
floating-point approximation is always returned.
Referring to EXPT, CLtL says:
If the base-number is of type RATIONAL and the power-number is an
INTEGER, the calculation will be exact and the result will be of
type RATIONAL; otherwise a floating-point approximation may result.
What about arguments of type (complex rational)?
Proposal (COMPLEX-RATIONAL-RESULT:EXTEND):
Extend the paragraph quoted above to cover the components of complex
numbers. For (complex rational) arguments, a mathematically rational
result can be rational, (complex rational), or (complex float) at the
discretion of the implementation. For EXPT of a (complex rational) to
an integer power, the calculation must be exact and the result will
be rational or (complex rational).
Examples:
(log #c(-16 16) #c(2 2)) => 3 or approximately #c(3.0 0.0)
(expt #c(2 2) 3) => #c(-16 16)
(expt #c(2 2) 4) => -64
Rationale:
This seems most consistent with the treatment of real numbers.
Current practice:
Symbolics Genera 7.4 returns a (complex float) for the first example
and returns the specified answers for the second and third examples.
Other implementations were not surveyed.
Cost to Implementors:
Only EXPT would have to change, since the type of the other results
is at the discretion of the implementation.
Cost to Users:
Probably none, but it is hard to predict.
Cost of non-adoption:
Slightly less self-consistent language.
Performance impact:
None of any significance.
Benefits/Esthetics:
More self-consistent language.
Discussion:
None.
∂21-Mar-89 1500 X3J13-mailer Issue: HASH-TABLE-SIZE (version 1)
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 21 Mar 89 15:00:44 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 562317; Tue 21-Mar-89 18:00:29 EST
Date: Tue, 21 Mar 89 18:00 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: Issue: HASH-TABLE-SIZE (version 1)
To: X3J13@SAIL.STANFORD.EDU
References: <19890320165503.1.MOON@EUPHRATES.SCRC.Symbolics.COM>
Message-ID: <19890321230023.2.MOON@EUPHRATES.SCRC.Symbolics.COM>
This issue came up while reviewing section 2.2 of the draft standard.
Issue: HASH-TABLE-SIZE
References: CLtL p.283
Category: CLARIFICATION
Edit history: Version 1, 20-Mar-89, by Moon
Problem description:
CLtL contradicts itself on the meaning of the :SIZE argument to
MAKE-HASH-TABLE. At the top of p.283, it says that the size is "the
maximum number of entries it can hold. Usually the actual capacity of
the table is somewhat less." At the bottom of the page it says "this
argument serves as a hint to the implementation of approximately how
many entries you intend to store." So does the :SIZE intended to be the
actual capacity of the table, or the amount of storage allocated to hold
the table. For example, if the implementation of hash tables is
designed for a loading of 65%, and the user specifies :SIZE 100, does
the table returned have space allocated for 100 entries, so that it
overflows and becomes bigger when 65 entries are inserted, or does the
table have space allocated for 154 entries, so that it overflows and
becomes bigger when 100 entries are inserted?
Proposal (HASH-TABLE-SIZE:INTENDED-ENTRIES):
Believe the bottom of p.283 rather than the top. The :SIZE argument
is approximately the number of entries that can be inserted without
the table having to grow.
Rationale:
The bottom of p.283 is user-oriented, the top is implementation-oriented.
User-oriented seems more appropriate.
Current practice:
Symbolics Genera 7.4 adheres to HASH-TABLE-SIZE:INTENDED-ENTRIES.
Other implementations were not surveyed.
Cost to Implementors:
At worst adding a multiplication to MAKE-HASH-TABLE.
Cost to Users:
Probably none, but it is hard to predict.
Cost of non-adoption:
Implementations will probably vary in which of the two interpretations
they believe. The language standard will not be self-consistent.
Performance impact:
None of any significance.
Benefits/Esthetics:
More self-consistent language.
Discussion:
None.
∂21-Mar-89 1629 X3J13-mailer Issue: ADJUST-ARRAY-NOT-ADJUSTABLE (Version 9)
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 21 Mar 89 16:29:22 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 562415; Tue 21-Mar-89 19:29:06 EST
Date: Tue, 21 Mar 89 19:28 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: Issue: ADJUST-ARRAY-NOT-ADJUSTABLE (Version 9)
To: X3J13@SAIL.STANFORD.EDU
References: <19890317213333.3.MOON@EUPHRATES.SCRC.Symbolics.COM>
Message-ID: <19890322002858.7.MOON@EUPHRATES.SCRC.Symbolics.COM>
This version is edited to clarify that the semantics of simple-array
are not being changed, and supersedes version 8 which you already saw.
Issue: ADJUST-ARRAY-NOT-ADJUSTABLE
References: ADJUST-ARRAY (p297), ADJUSTABLE-ARRAY-P (p293),
MAKE-ARRAY (pp286-289), simple arrays (p28, 289)
Category: CLARIFICATION
Edit history: 22-Apr-87, Version 1 by Pitman
15-Nov-88, Versions 2a,2b,2c by Pitman
02-Dec-88, Version 3 by Pitman
11-Jan-89, Version 4 by Pitman
16-Jan-89, Version 5, by Gabriel. Amended at the meeting to shorten.
23-Jan-89, Version 6, by Moon. Shorten without the bug introduced
by the amendment, add clarification of SIMPLE-ARRAY type.
15-Feb-89, Version 7, by Pitman. Minor changes per comments from
RPG and Dalton.
11-Mar-89, Version 8, by Pitman. Change category, add endorsements.
17-Mar-89, Version 9, by Moon, fix wording and examples to make it
clear that the semantics of simple-array is unchanged.
Problem Description:
The description of the :ADJUSTABLE option to MAKE-ARRAY on p288
says that ``the argument, if specified and not NIL, indicates that
it must be possible to alter the array's size dynamically after
it is created. This argument defaults to NIL.''
The description of the :ADJUSTABLE option does not say what
MAKE-ARRAY will do if the argument is unsupplied or explicitly NIL.
The description of ADJUSTABLE-ARRAY-P on p293 says that it is
true ``if the argument (which must be an array) is adjustable, and
otherwise false.'' However, the description of MAKE-ARRAY makes
it clear that this is not necessarily the same as asking if
the array was created with :ADJUSTABLE T. If ADJUSTABLE-ARRAY-P
returns NIL, you know that :ADJUSTABLE NIL was supplied (or no
:ADJUSTABLE option was supplied), but if ADJUSTABLE-ARRAY-P returns
T, then there is no information about whether :ADJUSTABLE was used.
The description of ADJUST-ARRAY on pp297-298 says that it is
``not permitted to call ADJUST-ARRAY on an array that was not
created with the :ADJUSTABLE option.'' This is inconsistent with
ADJUSTABLE-ARRAY-P.
A problem which comes up in practice is that some programmers
expect runtime error checking if they have done
(MAKE-ARRAY ... :ADJUSTABLE NIL) and they later try to adjust
the array using ADJUST-ARRAY.
The definition of the SIMPLE-ARRAY type and its subtypes needs
clarification of its relationship to adjustability.
Proposal (ADJUST-ARRAY-NOT-ADJUSTABLE:CLARIFY):
1. ADJUSTABLE-ARRAY-P is true of all arrays created with a true
:ADJUSTABLE option to MAKE-ARRAY. Whether ADJUSTABLE-ARRAY-P is
true of some other arrays is unspecified.
2. If MAKE-ARRAY is called with the :ADJUSTABLE, :FILL-POINTER,
and :DISPLACED-TO arguments each either unspecified or false, the
resulting array is a simple array. (This just repeats what CLtL
says on page 289, it's here to aid in understanding the next point.)
3. If MAKE-ARRAY is called with one or more of the :ADJUSTABLE,
:FILL-POINTER, or :DISPLACED-TO arguments true, whether the
resulting array is simple is unspecified.
4. ADJUST-ARRAY ``should signal'' an error if ADJUSTABLE-ARRAY-P
of its first argument is false. ADJUST-ARRAY must not signal an
`array not adjustable' error if ADJUSTABLE-ARRAY-P of its first
argument is true.
5. The value of ADJUSTABLE-ARRAY-P on a simple array is unspecified.
Note: ``should signal'' is taken from the new error terminology.
It means that in ``safe code'' (code compiled with highest safety)
an error must be signalled, but that in unsafe code (code not compiled
with highest safety), an error might or might not be signalled.
Clarifications and Logical Consequences:
a. Whether an array can be both simple and adjustable is unspecified.
b. There is no specified way to create an array for which ADJUSTABLE-ARRAY-P
definitely returns NIL.
c. There is no specified way to create an array that is non-simple.
d. This legitimizes ADJUSTABLE-ARRAY-P as an appropriate predicate to
determine whether ADJUST-ARRAY will reliably succeed.
e. If ADJUST-ARRAY is invoked on an array that was created without
supplying :ADJUSTABLE true, an `array not adjustable' error
``should be signalled'' unless ADJUSTABLE-ARRAY-P returns true on
that array (in which case it must not signal an `array not adjustable'
error).
f. There is no change to the meaning of the type SIMPLE-ARRAY, only
a clarification that a conforming program cannot assume that any
array is not simple.
Rationale:
This effectively makes the status quo explicit. This preserves the
raison d'etre of simple arrays, which is to provide a portable interface
to implementation-dependent specialized arrays that trade decreased
functionality for faster access.
A proposed alternative was to specify a way to create an array that is
guaranteed not to be simple. This would have required large changes
to some implementations and would be of little benefit to users.
Users need to know that certain arrays are simple, so they can put in
declarations and get higher performance, but users have no need to be
able to create arrays that are definitely non-simple (for lower
performance) or definitely non-adjustable (to cause errors).
Examples:
1. The following program is conforming. It is unspecified which branch
of the IF it follows.
(defun double (a)
(if (adjustable-array-p a)
(adjust-array a (* (length a) 2))
(let ((new (make-array (* (length a) 2))))
(replace new a :end1 (length a))
new)))
(double (make-array 30))
2. The following program is conforming. In no implementation is the
type declaration violated.
(let ((a (make-array 100)))
(declare (simple-array a))
(frob a))
3. The following program is non-conforming. The consequences of this
program are undefined because the type declaration is violated in some
valid implementations.
(let ((a (make-array 100 :adjustable t)))
(declare (simple-array a))
(frob a))
Current Practice:
Probably everyone is compatible with this proposal.
Symbolics Genera makes :ADJUSTABLE NIL arrays adjustable in most cases,
and ignores adjustability in deciding whether an array is simple,
and is compatible with this proposal.
Lucid, IIM, and Symbolics Cloe make :ADJUSTABLE NIL arrays non-adjustable
in all cases, and make all arrays non-simple unless the Common Lisp
language requires them to be simple, and are compatible with this proposal.
Cost to Implementors:
It's in principle possible that some implementation would have to change,
but in practice there are no known implementations that would have to change.
Cost to Users:
None. This is a fully compatible change from the user's standpoint.
Benefits:
Users would know what to expect.
Non-Benefits:
Users who expect adjusting arrays created with :ADJUSTABLE NIL to signal
an error would not get the desired error checking.
Aesthetics:
Most people believe the status quo is unaesthetic. Having an aspect of
the language explicitly unspecified is more aesthetic than having it
implicitly unspecified on account of vague or inconsistent documentation.
Discussion:
Pitman, Moon, Gabriel, and Steele support this amended proposal.
MACSYMA ran into portability problems due to the status quo.
If the issue had been documented, that would have helped.
Encouraging implementations that are able to at least make
(MAKE-ARRAY ... :ADJUSTABLE NIL) create non-adjustable arrays
where possible would help, too.
We considered proposals to incompatibly change this primitive in a
variety of ways, but the community was very split with strong proponents
and opponents of each alternate proposal.
The overriding concern driving this proposal is that Symbolics
has asserted that most of the other really interesting proposals would
likely involve a sizable cost to implementors (and their installed bases)
to implement what were judged by some as gratuitous changes from the
status quo.
Pitman wishes some of the other proposals were economically feasible to
pursue but reluctantly agrees that maintaining (and clearly documenting)
the status quo is probably the most reasonable avenue left to us.
∂21-Mar-89 1732 CL-Compiler-mailer **DRAFT** issue CLOS-MACRO-COMPILATION, version 2
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 21 Mar 89 17:32:46 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 562475; Tue 21-Mar-89 20:32:29 EST
Date: Tue, 21 Mar 89 20:32 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: **DRAFT** issue CLOS-MACRO-COMPILATION, version 2
To: cl-compiler@SAIL.STANFORD.EDU
cc: x3j13@SAIL.STANFORD.EDU
In-Reply-To: <8903132248.AA02496@defun.utah.edu>
Message-ID: <19890322013216.0.MOON@EUPHRATES.SCRC.Symbolics.COM>
I would go with MINIMAL for now. It leaves a lot of behavior
unspecified, and we can fill in that behavior later when we
add metaobjects to the standard.
Relatively small comments:
The compiler should be allowed to warn, but not error, about
failures of lambda-list congruence between methods or generic
functions in the file being compiled and methods or generic
functions in the Lisp doing the compilation. When you say
the compiler may not "perform tests" between these, it's not
clear whether you mean to rule out only errors or both errors
and warnings.
The only thing here that might be overspecification is allowing a
DEFINE-METHOD-COMBINATION to be used later in the same compilation.
However, I see no real harm in that, and it would often be
convenient for programmers, so leave it. But if someone else
moves to remove it, I will not object.
Evaluation of the form in EQL parameter specializer names in DEFMETHOD
needs to be covered. I think this is tied up with the pending compiler
committee issue DEFCONSTANT-VALUE (whose version 2 writeup I don't like,
it's too messy). The choices seem to be to require the form in an EQL
parameter specializer name to be evaluable at compile time, to require
it to depend only on constants defined in the file being compiled, or to
permit its evaluation to be deferred until load time. I don't like the
first choice. I think for both DEFCONSTANT and EQL the semantics should
be as if it were never evaluated until load time, with the compiler
allowed to evaluate it sooner only if it can prove that that does not
change the semantics. I'd be happier if the mechanism the compiler
uses to do this tentative evaluation were made available to the user,
but that can be deferred until metaobjects.
con-Mar-89 2048 X3J13-mailer Issue: ADJUST-ARRAY-NOT-ADJUSTABLE (Version 9)
Received: from lucid.com by SAIL.Stanford.EDU with TCP; 21 Mar 89 20:48:46 PST
Received: from challenger ([192.9.200.17]) by heavens-gate.lucid.com id AA01278g; Tue, 21 Mar 89 20:43:21 PST
Received: by challenger id AA22664g; Tue, 21 Mar 89 20:38:38 PST
Date: Tue, 21 Mar 89 20:38:38 PST
From: Richard P. Gabriel <rpg@lucid.com>
Message-Id: <8903220438.AA22664@challenger>
To: x3j13@sail.stanford.edu
Subject: Issue: ADJUST-ARRAY-NOT-ADJUSTABLE (Version 9)
People have continued to debate this issue. Part of the confusion is
what CLtL really says about simple arrays and adjustability. The
cause of the confusion is that various people have advanced difficult
to understand arguments and proposals (myself included).
As mentioned in the statement of ADJUST-ARRAY-NOT-ADJUSTABLE (Version
9), I agreed to support it, and I also agreed that it was a
clarification and not a change,
Because I had become confused by the issue, I decided to go back to
CLtL to find the consistent readings of the passages on simple arrays
and adjustability. As part of this exercise I tried to write up an
analysis of the possible interpretations of the the statements in
question. I often use this hermeneutical act to understand difficult
issues.
The result is that I think there are exactly two plausible consistent
readings, with one much more plausible than the other. Both readings
are inconsistent with ADJUST-ARRAY-NOT-ADJUSTABLE (Version 9).
Therefore, I conclude that ADJUST-ARRAY-NOT-ADJUSTABLE (Version 9) is
a change, not a clarification, and I must withdraw my agreement that
it is a clarification.
Whether we wish to adopt it is another question, to which I offer no
specific comment or suggestion. I am convinced that if some people
have read CLtL as meaning what ADJUST-ARRAY-NOT-ADJUSTABLE (Version 9)
states and implemented simple arrays that way, we are in quite a bind.
The only minor comment I have is a general one: We should be wary of
changes (rather than clarifications) at this stage of standardization.
This message is very long and contains lots of close reasoning and
boring details. By its length and detail some might read it as a
strong criticism of the authors of ADJUST-ARRAY-NOT-ADJUSTABLE
(Version 9) - it really isn't (in fact, before I this exercise I
believed that the contents of ADJUST-ARRAY-NOT-ADJUSTABLE (Version 9)
would be one of the plausible interpretations). It is simply what I
found and how I found it.
If you want to get to the heart of the matter, ask your text editor to
search for <<yoo-hoo>> and start reading there.
*************************
* Start of the Analysis *
*************************
In this message I will use the notation (S-i) to name statements;
(S-8) is to be read as ``statement 8.'' I will use (I-i-j) to name
interpretations of statments; (I-8-2) is to be read as ``the second
interpretation of statement 8.'' (I-7;8-4) is to be read as ``the
fourth interpretation of the statements 7 and 8 taken together.'' I
will use (*I-i-j) to name incorrect interpretations of statements;
(*I-8-2) is to be read as ``the (incorrect) second interpretation of
statement 8.'' I will use (C-i[J1,...,Jn) to name conclusions derived
from statements; (C-2[S-1,I-8-2]) is to be read as ``conclusion 2
derived from statement 1 and the second interpretation of statement
8.''
There are several relevant statements in CLtL.
(S-1) [from Page 28] An array that is not displaced to another array,
has no fill pointer, and is not to have its size adjusted dynamically
after creation is called a simple array.
(S-2) [from Page 288] :ADJUSTABLE: This argument, if specified and not
NIL, indicates that it must be possible to alter the array's size
dynamically after it is created.
(S-3) [immediately follows (S-2)] This argument defaults to NIL.
(S-4) [from Page 289] If MAKE-ARRAY is called with the :ADJUSTABLE,
:FILL-POINTER, and :DISPLACED-TO arguments each either unspecified or
false, the resulting array is a simple array.
(S-5) [from Page 293] This predicate [ADJUSTABLE-ARRAY-P] is true if
the argument (which must be an array) is adjustable, and otherwise
false.
(S-6) [from Page 297] It is not permitted to call ADJUST-ARRAY on an
array that was not created with the :ADJUSTABLE option.
(S-7) [immediately follows (S-6)] The predicate ADJUSTABLE-ARRAY-P may
be used to determine whether or not an array is adjustable.
First, let's look at the various interpretations of these statements.
***************************
* Interpretation of (S-1) *
***************************
The statement (S-1) appears to be in the form of a definition.
However, the phrase ``is called'' could be taken as a non-standard way
to introduce a definition and might instead be taken as a conditional
statement: Schematically, ``X's are called Y's'' could be taken to
mean ``If something is an X, then it is a Y.''
I don't think this is a plausible reading in a programming language
specification. Consider this sentence:
``A number that is divisible by 9 is called a well-tempered number.''
I think this is a fair definition. Certainly we would say that, by
this definition, the number 11 is not a well-tempered number.
Nevertheless, a possible interpretation of (S-1) could be:
(*I-1-1) If an array is not displaced to another array, has no fill
pointer, and is not to have its size adjusted dynamically after
creation, it is a simple array (and there may be simple arrays that do
not satisfy these properties).
However, if we look at the other statements in Chapters 2 and 17 we
see the use of ``is called'' throughout in what appears to be a
definitional sense. If (S-1) lacks definitional force, then so do
these statements:
Page 29: One-dimensional arrays are called vectors in Common Lisp
and constitute the type VECTOR (which is therefore a subtype
of ARRAY).
Page 29: All implementations provide specialized arrays for the cases
when the components are characters (or rather, a special subset of the
characters); the one-dimensional instances of this specialization are
called strings.
Page 29: All implementations are also required to provide specialized
arrays of bits, that is, arrays of type (ARRAY BIT); the
one-dimensional instances of this specialization are called bit
vectors.
Page 286: One-dimensional arrays are called vectors.
Page 286: Vectors whose elements are restricted to type STRING-CHAR
are called strings.
Page 286: Vectors whose elements are restricted to type BIT are called
bit-vectors.
Nothing but one-dimensional arrays are called or considered vectors,
and so I think ``is called'' can reasonably be interpreted only as
definitional.
I believe (*I-1-1) is not reasonable by the two arguments of incorrect
form for a conditional and the use of the ``is called'' form in
definitional senses elsewhere in Chapter 2.
I believe the definitional interpretation of (S-1) is this:
(I-1-1.5) Definition: An array is called a simple array if and only if
the array is not displaced to another array, has no fill pointer, and
is not to have its size adjusted dynamically after creation.
Further, I think the obvious meaning of (S-1) is this:
(I-1-2) Definition: An array is called a simple array if and only if
the array is not displaced to another array, has no fill pointer, and
cannot have its size adjusted dynamically after creation.
Another interpretation of (S-1) is possible. Note that the that the
phrase ``is not to have its size adjusted dynamically after creation''
is used rather than the less equivocal ``cannot have its size adjusted
dynamically after creation.'' One way to understand this phrasing is
as a stylistic device to produce the relatively uniform pattern ``an
array that is, ..., has, ... and is...'' rather than the relatively
non-uniform pattern ``an array that is, ..., has, ... and can....'' I
believe that this stylistic nuance is what Steele had in mind, but an
alternative is possible.
The alternative is derived as follows: If something ``is not to be''
acted upon in some particular way, then it is not the *intention* of
the actor to act upon that thing in that way. Therefore, we have the
alternative interpretation:
(I-1-3) Definition: An array is called a simple array if and only if
the array is not displaced to another array, has no fill pointer, and
is not intended to have its size adjusted dynamically after creation.
This results in a curious meaning for ``simple array.'' A simple array
is a legitimate type (SIMPLE-ARRAY appears on Page 34 in the sentence,
``SIMPLE-ARRAY is a subtype of ARRAY.'' It also appears on page 43 as
one the Common Lisp Standard Type Specifiers, and on Page 42 it
states, ``in Common Lisp, types are named by Lisp objects,
specifically symbols and lists, called type specifiers.''), and so it
must be possible to make such an array and to test objects for this
type. If (typep A 'simple-array) is true, then A is an array that,
among other things, was *intended* to not have its size altered
dynamically after creation.
There is another interpretation of (S-1), which interprets ``is not
to have'' as ``doesn't happen to have.''
(*I-1-4) An array that is not displaced to another array, has no fill
pointer, and doesn't happen to have its size adjusted dynamically
after creation is called a simple array.
I think this is an unlikely interpretation because it is clear that a
simple array can be created, and at the point of creation MAKE-ARRAY
would not know whether the size will happen to be adjusted later.
There is yet another interpretation of (S-1), but it cannot be presented
easily until after some other arguments have been made.
***************************
* Interpretation of (S-2) *
***************************
The statement (S-2) states that the argument :ADJUSTABLE can be used
to create an array whose size can be altered dynamically after
creation.
If (I-1-2) is the correct interpretation, then supplying a non-NIL
:ADJUSTABLE argument results in an array whose size *can* be altered
dynamically after creation, and so an array made this way is not a
simple array.
If (I-1-3) is the correct interpretation, then supplying a non-NIL
:ADJUSTABLE argument results in an array that is *intended* to have
its size altered dynamically after creation, and so an array made this
way is not a simple array.
(C-1[I-1-2,I-1-3,S-2]) Supplying a non-NIL :ADJUSTABLE argument to
MAKE-ARRAY results in a non-simple array. The basis for this
conclusion is the definitional nature of (S-1) regardless of the two
variants of the definition.
In fact, if we look at the statements regarding :FILL-POINTER and
:DISPLACED-TO, we see that if either of them is supplied and true, the
resulting array is also not simple (using the same argument used for
:ADJUSTABLE).
Therefore,
(C-2[I-1-2,I-1-3]) An array created with any one of :ADJUSTABLE,
:FILL-POINTER, and :DISPLACED-TO specified and non-NIL is not simple.
***************************
* Interpretation of (S-3) *
***************************
The statement (S-3) has a single interpretation.
***************************
* Interpretation of (S-4) *
***************************
The statement (S-4) states that if all three of the :ADJUSTABLE,
:FILL-POINTER, and :DISPLACED-TO arguments are unspecified or false, a
simple array is produced.
Combining this with (C-2) we get:
(C-3[S-4,C-2]) An array created with any one of :ADJUSTABLE,
:FILL-POINTER, and :DISPLACED-TO specified and non-NIL is not simple.
The force of (S-2) and (S-4) is that only a part of the type structure
of arrays is specified. There is definitely a way to create a simple
array, and definitely ways to create non-simple arrays, but whether
non-simple arrays are further distinguished based on the arguments
:ADJUSTABLE, :FILL-POINTER, and :DISPLACED-TO is not specified.
***************************
* Interpretation of (S-5) *
***************************
We will return to statement (S-5) later. Its interpretation is clear,
but which arrays are adjustable is not.
***************************
* Interpretation of (S-6) *
***************************
Statement (S-6) is quite tricky.
The problem is with the phrase ``is not permitted''; the question is
whether it is synonymous with ``is an error'' or whether it is
stronger.
The case for ``is not permitted"" being stronger than ``is an error''
is very compelling, I feel. First, taken as an English phrase, it is
strong: If you are not permitted to call ADJUST-ARRAY, then you do not
have permission to call it; in other words, you are not allowed to
call it, calling it is not tolerated, consent was not given to call
it, you do not have license to call it, you are not authorized to call
it, you do not have the opportunity to call it, it is not possible to
call it.
Second, ``is not permitted'' is not listed on Page 6 as one of the
phrases synonymous with ``is an error.'' If Steele wanted to actually
prohibit something, he would not be able to use the relatively
intuitive ``must not'' since that means ``is an error,'' which can be
taken to mean ``is allowed.'' That is, within the linguistic bounds of
CLtL it is possible to interpret the statement ``you must not do X''
as ``you are allowed to do X.''
The phrase ``is not permitted'' is used elsewhere in CLtL. The most
directly informative usage is on Page 72:
``The names NIL and T are constants in Common Lisp. Although they are
symbols like any other symbols, and appear to be treated as variables
when evaluated, it is not permitted to modify their values. See
DEFCONSTANT.''
Changing the values of NIL and T is a pretty serious offense. Steele
could have directly used the wording ``is an error,'' but he chose a
phrase not formally defined. He also could have said that NIL and T
are constants exactly like those defined by DEFCONSTANT, but he chose
informal wording that is stronger than ``is an error.'' Finally, the
advice to see DEFCONSTANT is given, almost as an afterthought.
Here is the main interpretation of (S-6):
(I-6-1) Calling ADJUST-ARRAY on an array that was not created with the
:ADJUSTABLE option is prohibited.
An array is ``adjustable'' if it is capable of being adjusted.
ADJUST-ARRAY is the only function in Common Lisp that can adjust an
array. Therefore, if ``calling ADJUST-ARRAY...is prohibited'' in some
situation, then that array is not adjustable in that situation. The
situation pointed out by (I-6-1) is that the ``array ... was not
created with the :ADJUSTABLE option.''
Combining this with (S-2) we get:
(C-4[I-6-1,S-2]) An array is adjustable if and only if the array was
created with the :ADJUSTABLE option.
Now let's look at the case for (S-6) being permissive.
The remark ``see DEFCONSTANT'' could be taken to mean that NIL and T
are simply constants and are to be treated that way, no more, no less.
Under DEFCONSTANT it states that altering the value of a constant ``is
an error.''
So here is the alternative:
(I-6-2) Calling ADJUST-ARRAY on an array that was not created with the
:ADJUSTABLE option is an error (that is, it is allowed).
***************************
* Interpretation of (S-7) *
***************************
On the face of it, (S-7) is a restatement of (S-5). The two
alternative readings result from either taking its presence as
relevant or irrelevant. That is, one can either believe that (S-7)
conveys some new information by its location relative to other
statements or that the reading of CLtL is as if (S-7) were deleted
I believe that essentially deleting (S-7) is not reasonable, mostly
because Steele is a better writer than that interpretation would
imply.
The fact that (S-7) immediately follows (S-6) implies that there is
some relation between them. In a two-sentence paragraph it is odd to
have the second sentence add no information to the first. The obvious
relation is that ADJUSTABLE-ARRAY-P is the predicate that can be used
to determine whether it is permitted to call ADJUST-ARRAY.
(I-7-1) ADJUSTABLE-ARRAY-P can be used to determine whether or not
ADJUST-ARRAY is permitted.
Consider (I-6-1). Using (C-4), since ADJUST-ARRAY can be called on
exactly those arrays that were created with the :ADJUSTABLE option,
and since ADJUSTABLE-ARRAY-P can be used to determine whether
ADJUST-ARRAY can be used, we get:
(C-5[C-4,S-5]) ADJUSTABLE-ARRAY-P can be used to determine whether or
not an array was created with the :ADJUSTABLE option.
Given this, following (S-6) with (S-7) is natural, because it serves
to reinforce the interpretation (I-6-1) because ADJUSTABLE-ARRAY-P
talks about adjustability.
Let's put (I-6-1), (I-7-1), and (C-5) together:
(I-6;7-1) ADJUST-ARRAY can be called only on adjustable arrays, that
is, only on arrays created with the :ADJUSTABLE option.
ADJUSTABLE-ARRAY-P can be used to determine whether an array was
created with the :ADJUSTABLE option.
Consider (I-6-2). The effect of (I-7-1) is to reinforce the
interpretation (I-6-2), because (S-7) states that ADJUSTABLE-ARRAY-P
must be used to determine adjustability, not the use of the
:ADJUSTABLE argument in MAKE-ARRAY.
We can rephrase (I-6-2) and (I-7-1) as follows:
(I-6;7-2) Calling ADJUST-ARRAY on an array that was not created with
the :ADJUSTABLE option is an error (that is, it is allowed); and
ADJUSTABLE-ARRAY-P can be used to determine whether or not it is
allowed.
**************************
* Interpretation of CLtL *
**************************
Now let's look at (I-1-2) and (I-1-3).
(I-1-2) can be taken either under (I-6;7-1) or under (I-6;7-2).
Under (I-6;7-1) and recalling (C-2), (C-3), and (C-4) we get:
Position 1: The only simple arrays are those created with the
:ADJUSTABLE, :FILL-POINTER, and :DISPLACED-TO arguments each either
unspecified or false. All simple arrays are not adjustable. An array
is adjustable if and only if it was created with the :ADJUSTABLE
option. ADJUSTABLE-ARRAY-P is false of all simple arrays.
There is an affinity between (I-1-2) and (I-6;7-1) because the
:ADJUSTABLE argument states whether it is possible to adjust the
array.
Under (I-6;7-2) and recalling (C-2) and (S-5), we get:
Position 2: The only simple arrays are those created with the
:ADJUSTABLE, :FILL-POINTER, and :DISPLACED-TO arguments each either
unspecified or false. A simple array may or may not be adjustable. An
array created with the :ADJUSTABLE option unspecified or NIL might be
adjustable. ADJUSTABLE-ARRAY-P can be used to determine whether an
array is adjustable.
This is weak because (I-1-2), (S-2), and (S-4) taken together implies
that the :ADJUSTABLE argument controls adjustability. (I-6-2) implies
that :ADJUSTABLE unspecified or NIL might result in an adjustable
array.
(I-1-3) must be considered under both (I-6;7-1) and (I-6;7-2).
Looking at (I-1-3) with (I-6;7-1), we get Position 1 again, because the
:ADJUSTABLE arguments signals intent to adjust an array. Here,
(I-6;7-1) implies that one cannot call ADJUST-ARRAY on an array that
was not intended to be adjusted. I feel this is a weak pair of
interpretations.
Looking at (I-1-3) with (I-6;7-2), we get Position 2 again. Here it is
allowed to call ADJUST-ARRAY on an array that wasn't intended to be
adjusted. There is some affinity between (I-1-3) and (I-6;7-2) because
the :ADJUSTABLE argument signals intention only. The only intention
that is required to be acted upon is specifying a non-NIL :ADJUSTABLE
argument, which must result in an adjustable array. If your intention
is to not adjust the array, you should not care whether it is actually
adjustable. Therefore, (I-6-2) is a sensibly paired with (I-1-3).
The variations of ``can not be adjusted'' and ``not intended to be
adjusted'' have little differential effect on the final
interpretations except insofar as Position 1 is stronger when paired
with (I-1-2) and Position 2 is stronger with (I-1-3). I believe that
the strength of the argument regarding ``is not permitted'' coupled
with the weakness the plausibility of a type being defined with
respect to intention combine to make Position 1 the stronger
interpretation.
*************************************
* Interpretation of (S-1) Revisited *
*************************************
Given the clearly definitional nature of (S-1), let's look at the
question of whether there is any basis in CLtL for an array created
with one of :ADJUSTABLE, :FILL-POINTER, and :DISPLACED-TO specified
and non-NIL to be simple.
The reasoning for such a situation is as follows: Under Position 2 it
is possible for a simple array to be adjustable. The expression
(MAKE-ARRAY n :ADJUSTABLE NIL) creates a simple array under Position
2, and so why shouldn't (MAKE-ARRAY n :ADJUSTABLE T), since MAKE-ARRAY
probably ignores the :ADJUSTABLE argument.
For this to be allowed, (S-1) must be a partial or conditional
definition. That is, (S-1) might be definitional, but only for
certain implementations, or part of the definition might apply only
for certain implementations. The remainder of the paragraph that
starts with (S-1) continues as follows:
(S-8) The user may provide declarations that certain arrays will be
simple.
(S-9) Some implementations can handle simple arrays in an especially
efficient manner; for example, simple arrays may have a more compact
representation than non-simple arrays.
(S-8) and (S-9) clearly imply that the reason for simple arrays is
efficiency. (S-8) talks about declarations provided by the user. When
a Common Lisp programmer provides a declaration that does not have
semantic import, this can signal only intention. Therefore, the
interpretation (I-1-3) would seem to make sense.
I believe that nothing in (S-8) and (S-9) alters the definitional
nature of (S-2). The most (S-8) and (S-9) could do is limit its
applicability of the definition. That is, neither (S-8) nor (S-9)
imply that (S-1) is not a definition, but they could modify the
conditions that the definition predicates.
The paragraph starting with (S-1) could be taken as a description of a
type that is useful only in implementations that act differently
according to the user's intentions as signaled by declarations. Since
(S-4) requires that some arrays be simple, implementations that have
no use for simple arrays are forced to have them.
Another interpretation of (S-1) is then:
(*I-1-5) An array that is not displaced, has no fill pointer, and has
been created with the intention not to have its size altered
dynamically after creation in an implementation that honors
declarations is a simple array.
I think this is a far-fetched reading, particularly since Steele
is capable of stating something like this much more precisely than
with the series (S-1), (S-8), and (S-9).
***********************
* End of the Analysis *
***********************
<<yoo-hoo>>
For those of you who could not stand to read the hermeneutic
arguments, here are the only two consistent readings of CLtL regarding
simple arrays and adjustability. I believe that Position 1 has the
stronger set of arguments behind it and is, I believe, the preferred
reading:
Position 1: The only simple arrays are those created with the
:ADJUSTABLE, :FILL-POINTER, and :DISPLACED-TO arguments each either
unspecified or false. All simple arrays are not adjustable. An array
is adjustable if and only if it was created with the :ADJUSTABLE
option. ADJUSTABLE-ARRAY-P is false of all simple arrays.
Position 2: The only simple arrays are those created with the
:ADJUSTABLE, :FILL-POINTER, and :DISPLACED-TO arguments each either
unspecified or false. A simple array may or may not be adjustable. An
array created with the :ADJUSTABLE option unspecified or NIL might be
adjustable. ADJUSTABLE-ARRAY-P can be used to determine whether an
array is adjustable.
Here are the points of ADJUST-ARRAY-NOT-ADJUSTABLE (Version 9). I will
note whether each point is consistent with each of the two Positions
so that Version 9 can be seen to be a change rather than a
clarification:
1. ADJUSTABLE-ARRAY-P is true of all arrays created with a true
:ADJUSTABLE option to MAKE-ARRAY. Whether ADJUSTABLE-ARRAY-P is
true of some other arrays is unspecified.
This weakly contradicts Position 1, since Position 1 states which
arrays are adjustable and which aren't. It is consistent with
Position 2.
2. If MAKE-ARRAY is called with the :ADJUSTABLE, :FILL-POINTER,
and :DISPLACED-TO arguments each either unspecified or false, the
resulting array is a simple array. (This just repeats what CLtL
says on page 289, it's here to aid in understanding the next point.)
This is simply (S-4).
3. If MAKE-ARRAY is called with one or more of the :ADJUSTABLE,
:FILL-POINTER, or :DISPLACED-TO arguments true, whether the
resulting array is simple is unspecified.
This contradicts both Position 1 and Position 2.
4. ADJUST-ARRAY ``should signal'' an error if ADJUSTABLE-ARRAY-P
of its first argument is false. ADJUST-ARRAY must not signal an
`array not adjustable' error if ADJUSTABLE-ARRAY-P of its first
argument is true.
This is consistent with both Position 1 and Position 2.
5. The value of ADJUSTABLE-ARRAY-P on a simple array is unspecified.
This contradicts Position 1 and is consistent with Position 2.
Let's also look at the ``Clarifications and Logical Consequences''
presented in the proposal:
a. Whether an array can be both simple and adjustable is unspecified.
This contradicts Position 1 and is consistent with Position 2.
b. There is no specified way to create an array for which ADJUSTABLE-ARRAY-P
definitely returns NIL.
This contradicts Position 1 and is consistent with Position 2.
c. There is no specified way to create an array that is non-simple.
This contradicts both Position 1 and Position 2. In fact, this
contradicts (S-1) under any reasonable interpretation of it.
d. This legitimizes ADJUSTABLE-ARRAY-P as an appropriate predicate to
determine whether ADJUST-ARRAY will reliably succeed.
This is consistent with both Position 1 and Position 2.
e. If ADJUST-ARRAY is invoked on an array that was created without
supplying :ADJUSTABLE true, an `array not adjustable' error
``should be signaled'' unless ADJUSTABLE-ARRAY-P returns true on
that array (in which case it must not signal an `array not adjustable'
error).
This is consistent with both Position 1 and Position 2.
Therefore, ADJUST-ARRAY-NOT-ADJUSTABLE (Version 9) is a change to
CLtL, and in fact, Point 3 (and Consequence C) is a major change.
-rpg-
∂22-Mar-89 0816 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu Information request
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 22 Mar 89 08:16:27 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA22050; Wed, 22 Mar 89 08:16:08 -0800
Message-Id: <8903221616.AA22050@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Wed, 22 Mar 89 08:15:52 PST
Received: by BYUADMIN (Mailer R2.01A) id 5136; Wed, 22 Mar 89 09:15:21 MST
Date: Wed, 22 Mar 89 09:43:38 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
"William J. Joel" <JZEM%MARIST.BITNET@forsythe.stanford.edu>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: "William J. Joel" <JZEM%MARIST.BITNET@forsythe.stanford.edu>
Subject: Information request
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
I am looking for references relating to any aspect of the following
topics:
- mathematical notations for computer graphics
- logic programming (Prolog) and computer graphics
- logic programming (Prolog) and geometry (Euclidean)
Please send any info to my email address, directly. Thanks!
Bill Joel
jzem@marist.bitnet
∂22-Mar-89 0845 X3J13-mailer Issue: ADJUST-ARRAY-NOT-ADJUSTABLE (Version 9)
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 22 Mar 89 08:45:33 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 562901; Wed 22-Mar-89 11:44:59 EST
Date: Wed, 22 Mar 89 11:44 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: Issue: ADJUST-ARRAY-NOT-ADJUSTABLE (Version 9)
To: Richard P. Gabriel <rpg@lucid.com>
cc: x3j13@SAIL.STANFORD.EDU
In-Reply-To: <8903220438.AA22664@challenger>
Message-ID: <19890322164453.8.MOON@EUPHRATES.SCRC.Symbolics.COM>
Date: Tue, 21 Mar 89 20:38:38 PST
From: Richard P. Gabriel <rpg@lucid.com>
[603 lines deleted]
Therefore, ADJUST-ARRAY-NOT-ADJUSTABLE (Version 9) is a change to
CLtL, and in fact, Point 3 (and Consequence C) is a major change.
Show us any conforming program that would be harmed by this change (if
it is a change, and I don't believe your arguments that it is a change)
"c. There is no specified way to create an array that is non-simple."
∂22-Mar-89 0931 X3J13-mailer Issue: SETF-MULTIPLE-STORE-VARIABLES (Version 2)
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 22 Mar 89 09:31:05 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 562950; Wed 22-Mar-89 12:30:11 EST
Date: Wed, 22 Mar 89 12:29 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: Issue: SETF-MULTIPLE-STORE-VARIABLES (Version 2)
To: X3J13@SAIL.STANFORD.EDU
cc: Pavel.pa@XEROX.COM, GSB@STONY-BROOK.SCRC.Symbolics.COM
Message-ID: <19890322172956.1.MOON@EUPHRATES.SCRC.Symbolics.COM>
Line-fold: No
This proposal didn't quite make it to the January meeting, due to
unclear responsibilities for who was supposed to update it from the
discussion. I have filled the gap and made the changes implied by the
discussion back in December of last year. We can't vote on this if
someone invokes the two-week rule, but perhaps no one will.
Issue: SETF-MULTIPLE-STORE-VARIABLES
References: CLtL, pp.93-107
Lisp Pointers, v2n2, pp.27-41
Category: ADDITION
Edit history: Version 1, 5-Dec-88, Pavel
Version 2, 22-Mar-89, Moon, simplify, update from discussion
Problem description:
The description of GET-SETF-METHOD-MULTIPLE-VALUE on page 107 of CLtL
states that there are no cases in Common Lisp that allow multiple values
to be stored into a generalized variable. This is seen by some as an
arbitrary decision in light of the fact that a very reasonable semantics
exists for multiple values being assigned by several Common Lisp macros,
including SETF. The rationale on page 103 of CLtL suggests that this
decision might be changed in the future.
Proposal (SETF-MULTIPLE-STORE-VARIABLES:ALLOW):
Extend the semantics of the macros SETF, PSETF, SHIFTF, ROTATEF, and
ASSERT to allow "places" whose SETF methods have more than one "store
variable". In such cases, the macros accept as many values from the
newvalue form as there are store variables. As usual, extra values
are ignored and missing values default to NIL.
Extend the long form of DEFSETF to allow the specification of more
than one "store variable", with the obvious semantics.
Clarify that GET-SETF-METHOD signals an error if there would be more
than one store-variable.
Test Cases/Examples:
(defstruct region width height)
(defun region-size (region)
(values
(region-width region)
(region-height region)))
(defsetf region-size (region) (width height)
`(values
(setf (region-width ,region) ,width)
(setf (region-height ,region) ,height)))
(setf my-reg (make-region :width 10 :height 20))
=> #S(REGION :WIDTH 10 :HEIGHT 20)
(region-size my-reg)
=> 10
20
(setf (region-size my-reg) (values 30 40))
=> 30
40
(region-size my-reg)
=> 30
40
Rationale:
This change removes an artificial restriction on the semantics of
several Common Lisp macros, allowing a broader set of contexts in
which generalized variables can be used. For example, it is not
difficult to write a reasonable SETF method for the VALUES function,
yielding a powerful MULTIPLE-VALUE-SETF form:
(setf (values (car a) (gethash b 'c) (aref d 13))
(some-hairy-computation))
In the language as currently defined, this example would have to be
written:
(multiple-value-bind (x y z)
(some-hairy-computation)
(setf (car a) x
(gethash b 'c) y
(aref d 13) z))
Many other (perhaps more compelling) examples of generalized variables
holding more than one value can easily be imagined. Their use,
however, is severely discouraged by Common Lisp as defined in CLtL,
since none of the built-in macros will accept them.
The clarification of GET-SETF-METHOD makes explicit what is implied
by CLtL (CLtL uses the word "guarantee", whose relationship to
signalling of errors is unclear).
Current practice:
I do not know of any implementations that allow all of this extension.
Xerox Lisp does not signal an error, but this is probably due to a bug
in GET-SETF-METHOD. Lucid signals an error in GET-SETF-METHOD.
Symbolics Genera supports the proposal in SETF and PSETF, but not in
SHIFTF, ROTATEF, and ASSERT.
Cost to Implementors:
A relatively minor fix to each of the affected macros suffices. For
example, to fix SETF itself, one need only call
GET-SETF-METHOD-MULTIPLE-VALUE instead of GET-SETF-METHOD and emit a
MULTIPLE-VALUE-BIND instead of a LET for binding the store variables.
Cost to Users:
This is an upward-compatible change; no user code must change.
Cost of non-adoption:
Yet another non-uniformity in the language, yet another piece of
mechanism without a clear use (GET-SETF-METHOD-MULTIPLE-VALUE).
Benefits:
Wider applicability of a reasonably nice abstraction, the removal of
an artificial prohibition.
Aesthetics:
People may disagree about whether this is a simplification or not. I
am firmly on the side that believes that such removal of
non-uniformities is a simplifying force in the language.
Discussion:
Pavel supports this proposal.
Moon supports this proposal except he is not sure about the
inclusion of ASSERT.
GSB suggests that this is a clarification rather than an addition,
because the lack of any predefined setf-methods that use multiple
store variables should not mean that SETF, etc. should not work with
such a setf-method if the user defined one. The problem is that CLtL
examples such as the ones for SHIFTF on p.98 and the simplified
definition for SETF on p.107 contradict this proposal, and might have
been taken as specifications, rather than simplified examples, by
some readers.
Predefined SETF methods for such functions as VALUES, CONS, and VECTOR
could have been proposed, but we refrained. This proposal is necessary
to allow the user to write such methods for himself, but if this
proposal is adopted those setf-methods are very easy to write in
a portable fashion.
∂22-Mar-89 1228 @polya.Stanford.EDU:THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu theory calendar
Received: from polya.Stanford.EDU by SAIL.Stanford.EDU with TCP; 22 Mar 89 12:28:38 PST
Received: from forsythe.Stanford.EDU by polya.Stanford.EDU with SMTP (5.61/25-eef) id AA03451; Wed, 22 Mar 89 12:27:32 -0800
Message-Id: <8903222027.AA03451@polya.Stanford.EDU>
Received: by Forsythe.Stanford.EDU; Wed, 22 Mar 89 12:27:12 PST
Received: by BYUADMIN (Mailer R2.01A) id 1045; Wed, 22 Mar 89 13:26:39 MST
Date: Wed, 22 Mar 89 14:16:25 CST
Reply-To: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>,
"Michael A. Langston" <langston@CS2.WSU.EDU>
Sender: TheoryNet List <THEORYNT%NDSUVM1.BITNET@forsythe.stanford.edu>
Comments: Warning -- original Sender: tag was THEORYNT@YKTVMX
From: "Michael A. Langston" <langston@CS2.WSU.EDU>
Subject: theory calendar
To: Local Distribution <aflb-tn@POLYA.STANFORD.EDU>
I am happy to announce that Jeff Salowe has agreed to maintain a calendar
of theory events for SIGACT News, with regular postings to theorynet as
well. He will be gleaning items from the input I receive for the News,
from the EATCS Bulletin, from ACM HQ and other sources. If you are handling
publicity for a theory conference or for any other theory-related event,
please remember to send a blurb to Jeff at jss2z@mithras.cs.virginia.edu.
-- Mike Langston
∂22-Mar-89 1401 X3J13-mailer **DRAFT** issue: PATHNAME-COMPONENT-CASE (Version 1)
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 22 Mar 89 14:01:14 PST
Received: from BOBOLINK.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 563174; Wed 22-Mar-89 17:00:57 EST
Date: Wed, 22 Mar 89 17:00 EST
From: Kent M Pitman <KMP@STONY-BROOK.SCRC.Symbolics.COM>
Subject: **DRAFT** issue: PATHNAME-COMPONENT-CASE (Version 1)
To: X3J13@SAIL.Stanford.EDU
Message-ID: <890322170040.4.KMP@BOBOLINK.SCRC.Symbolics.COM>
>>> PLEASE DO -NOT- REPLY TO THIS ISSUE NOW <<<
At this point, probably no one will read what you would write
anyway. Instead, think about the issue and organize your thoughts
for in-person discussion at the meeting.
There was a lot of discussion on this issue. The Cleanup committee is
not in agreement on its disposition. However, the issue is a real one
that we cannot afford to overlook. See additional comments at the end
for a survey of points of contention.
-kmp
-----
Issue: PATHNAME-COMPONENT-CASE
References: Pathnames (pp410-413),
MAKE-PATHNAME (p416),
PATHNAME-HOST (p417),
PATHNAME-DEVICE (p417),
PATHNAME-DIRECTORY (p417),
PATHNAME-NAME (p417),
PATHNAME-TYPE (p417)
Category: CHANGE
Edit history: 1-Jul-88, Version 1 by Pitman
Status: For Internal Discussion
Problem Description:
Issues of case in pathnames are a major source of problems.
In some file systems, the canonical case is lowercase, in some
uppercase, in some mixed.
In some file systems, case matters, in others it does not.
(NAMESTRING (MAKE-PATHNAME :NAME "FOO" :TYPE "LISP"))
will produce an `ugly' file name like "FOO.LISP" in many (but not all)
Common Lisp implementations talking to Unix, for example.
(NAMESTRING (MAKE-PATHNAME :NAME "foo" :TYPE "lisp"))
might produce an `ugly' file name like "↑Vf↑Vo↑Vo.↑Vl↑Vi↑Vs↑Vp"
in a Common Lisp implementation talking to a Tops-20.
Problems like this make it difficult to use MAKE-PATHNAME for much of
anything without corrective (non-portable) code.
Other problems occur in merging because doing
(NAMESTRING (MERGE-PATHNAMES (MAKE-PATHNAME :HOST "MY-TOPS-20" :NAME "FOO")
(PARSE-NAMESTRING "MY-UNIX:x.lisp")))
should probably return "MY-TOPS-20:FOO.LISP" but in fact might return
"MY-TOPS-20:FOO.↑Vl↑Vi↑Vs↑Vp" in some implementations.
Problems like this make it difficult to use any merging primitives for
much of anything without corrective (non-portable code).
Proposal (PATHNAME-COMPONENT-CASE:CANONICALIZE):
Designate a treatment for case in pathname components which is
distinct from the treatment of case in the namestrings. The treatment
should be invariant across operating systems.
If a string given to MAKE-PATHNAME, or returned by any of the
PATHNAME-xxx accessor operations, is all uppercase, it is said to
designate a name in the system's "canonical case".
If a string given to MAKE-PATHNAME, or returned by any of the
PATHNAME-xxx accessor operations, is all lowercase, it is said to
designate a name in the system's "anticanonical case".
If a string given to MAKE-PATHNAME, or returned by any of the
PATHNAME-xxx accessor operations, is mixed case, it is said
designate a name in exactly the indicated case.
Functions such as PARSE-NAMESTRING and NAMESTRING which convert
from or to native host syntax will perform any necessary conversions
from internal syntax.
Note: In fact, this proposal does not require an implementation to
change its internal representation. It only requires the CL-defined
accessors to behave as if the internal representation had been changed.
Whether the actual internal representation is changed is still up to an
implementation. A consequence of this is that if pathnames print
in a way that shows the components individually (such as #S), they
are not constrained to print the components in any particular case;
they are constrained only to have definite syntax conventions and to
be able to invert those conventions at the appropriate time. Any change
to the way pathnames print is beyond the scope of this proposal.
Test Case:
(PATHNAME-NAME (PARSE-NAMESTRING "MY-UNIX:/me/foo.lisp")) => "FOO"
(PATHNAME-NAME (PARSE-NAMESTRING "MY-TOPS-20:<ME>FOO.LISP")) => "FOO"
Rationale:
This does not solve the whole pathname problem, but it does improve
the situation for a clearly defined set of very common problems.
Current Practice:
Symbolics Genera implements this behavior.
Cost to Implementors:
While this proposal is compatible with CLtL, it may not be compatible with
the implementations of CLtL which some implementations have chosen.
It is possible to isolate the forced changes to the referenced functions
(MAKE-PATHNAME and the PATHNAME-xxx accessors). Existing functions can be
renamed, and new functions with the same name can be introduced which simply
encapsulate case conversion. No further change is forced.
It may, however, be desirable for an implementation to make a more complete
overhaul of their representation. In implementations where the implementors
feel a need to do this, the amount of work may be considerably greater.
Cost to Users:
Technically, this change is upward compatible.
In fact, since the existing CLtL spec is so poor, nearly everyone relies
heavily on implementation-specific behavior since there is little other
choice. As such, any change is almost certain to break lots of programs,
in usually superficial but nevertheless important ways. However, if we
really make the pathname facility more portable, the user community may be
willing to bear the consequences of these changes.
Cost of Non-Adoption:
We would be contributing to the perpetuation of the existing fiasco of a
pathname system.
Benefits:
The major costs of non-adoption would be avoided.
Aesthetics:
More code is required, but the code supports a simpler user model.
Anything that simplifies the user model of pathnames is going to be an
improvement.
Discussion:
Pitman suports PATHNAME-COMPONENT-CASE:CANONICALIZE.
-------------------------------------------------------------------
There was a lot of debate internally on CL-Cleanup about this one
which reached no resolution. Rather than include that discussion, I
will sum up what I think are the main discussion points:
- Uppercase was proposed as the canonical case because it seemed
most consistent with other parts of the language which are forced
to use a canonical case (such as symbol names and arguments to
macro character handlers).
Some people wish we would use lowercase because they think more
file systems are lowercase.
Note well that the choice of a case as the `canonical case'
internal to Lisp has no technical effect on your ability to
create filenames in upper, lower, or mixed case under this
proposal. This argument is purely an aesthetic one.
The Symbolics file system (upon which this proposal is based)
uses lowercase as the preferred case, and yet the use of uppercase
canonical case has caused no serious technical problems in the
five or so years that we've field tested this appraoch in
an environment that depends critically on heavy use of a variety
of file systems from the same lisp image. This is not a
pie-in-the-sky idea -- it is implemented and has stood the test of time.
- This proposal suggests that functions like PATHNAME-NAME return
and that make-pathname accept strings which are in the interchange
(canonical) case rather than in the native file system case so that
pathname components can be retrieved from one pathname and stored
in a second without regard to whether those two pathnames agreed on
native case.
Some people suggested that PATHNAME-NAME and MAKE-PATHNAME should
work non-portably, using native case information, and that you should
have to do more work (e.g., supply a keyword argument) to get portable
code. This strikes me as incompatible with our goals but is technically
a possible position to take.
Others suggested that two sets of functions should be available --
one set for native case (e.g., MAKE-FILENAME, FILENAME-NAME, ...)
and one for portable case (e.g., MAKE-PATHNAME, PATHNAME-NAME, ...).
These would make the same kind of object -- they would just support
different views on the set of operations that you might want on the
object. If you follow this approach, the issues become ``who gets
which names'' and ``does this make the language gratuitously bloated''?
Some people who wanted parallel paradigms (one for native case, one
for an interchange/canonical case) seemed to be willing to give up
that desire if the canonical case was coincidentally chosen to be the
same as the native case for the file system they worked with.
``I'll compromise as long as I don't have to change.''
- Some people don't use multiple file systems in the same core image
and don't realize how critical an issue this is to those of use who do.
THE BOTTOM LINE:
Users deal with this problem day in and day out as they move back and
forth between different systems. The solution is within our grasp
technically -- the key issues to be resolved are aesthetic and political,
not technical. In the end, users won't want to hear about the political
roadblocks. They are trusting us to come up with a solution and we should
come through. Please be prepared to come at this issue constructively. I
thank you, and our users will ultimately thank you.
∂22-Mar-89 1900 X3J13-mailer Issue: PATHNAME-SUBDIRECTORY-LIST (Version 4)
Received: from Riverside.SCRC.Symbolics.COM (SCRC-RIVERSIDE.ARPA) by SAIL.Stanford.EDU with TCP; 22 Mar 89 19:00:00 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by Riverside.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 325245; Wed 22-Mar-89 21:59:33 EST
Date: Wed, 22 Mar 89 21:59 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: Issue: PATHNAME-SUBDIRECTORY-LIST (Version 4)
To: X3J13@SAIL.STANFORD.EDU
Message-ID: <19890323025928.1.MOON@EUPHRATES.SCRC.Symbolics.COM>
This is a last minute update of this issue to fix the problems found
during discussion of the previous version. I have fixed typos,
including some critical ones that made the proposal impossible to
understand, standardized terminology, and added specifications for
merging of relative directories and for the subset used in
non-hierarchical file systems.
Issue: PATHNAME-SUBDIRECTORY-LIST
References: Pathnames (pp410-413), MAKE-PATHNAME (p416),
PATHNAME-DIRECTORY (p417)
Category: CHANGE
Edit history: 18-Jun-87, Version 1 by Ghenis.pasa@Xerox.COM
05-Jul-88, Version 2 by Pitman (major revision)
28-Dec-88, Version 3 by Pitman (merge discussion)
22-Mar-89, Version 4 by Moon (fix based on discussion)
Status: Trying to be Released
Related-Issues: PATHNAME-COMPONENT-CASE
Problem Description:
It is impossible to write portable code that can produce a pathname
in a subdirectory of a hierarchical file system. This defeats much of
the purpose of having an abstraction like pathname.
According to CLtL, only a string is a portable value for the directory
component of a pathname, thus in order to denote a subdirectory, the
use of separators (such as dots, slashes, or backslashes) would be
necessary. The very fact that such syntax varies from host to host
means that although the representation might be "portable", the code
using that representation is not portable.
This problem is even worse for programs running on machines on a network
that can retrieve files from multiple hosts, each using a different OS
and thus a different subdirectory delimiter.
Related problems:
- In some implementations "FOO.BAR" might denote the "BAR" subdirectory
of "FOO", while in other implementations it would denote a top-level
directory, because "." is not the separator. To be safe, portable
programs must avoid all potential separators.
- Even in implementations where "." is the separator, "FOO.BAR" may be
recognized by some to mean the "BAR" subdirectory of "FOO" and by others
to mean `a seven letter directory with "." being a superquoted part of
its name'.
- In fact, CLtL does not even say for toplevel directories whether
the directory delimiter characters are part of the string. eg, is
"foo" or "/foo" the directory component for a unix pathname
"/foo/bar.lisp". Similarly, is "[FOO]" or "FOO" the directory
component for a VMS pathname "[FOO]ME.LSP"?
Proposal (PATHNAME-SUBDIRECTORY-LIST:NEW-REPRESENTATION)
Remove the "structured" directory feature mentioned on CLtL p.412.
Allow the value of a pathname's directory component to be a list. The
car of the list may be either of the symbols :ABSOLUTE or :RELATIVE.
Each remaining element of the list is a string or one of the keyword
symbols listed below. Each string names a single level of directory
structure. The strings should contain only the directory names
themselves -- no separator characters.
A list whose car is the symbol :ABSOLUTE represents a directory path
starting from the root directory. The list (:ABSOLUTE) represents
the root directory. The list (:ABSOLUTE "foo" "bar" "baz") represents
the directory called "/foo/bar/baz" in Unix [except possibly for
alphabetic case -- that is the subject of a separate issue].
A list whose car is the symbol :RELATIVE represents a directory path
starting from a default directory. The list (:RELATIVE) has the same
meaning as NIL. The list (:RELATIVE "foo" "bar") represents the
directory named "bar" in the directory named "foo" in the default
directory [except possibly for alphabetic case -- that is the subject
of a separate issue].
In place of a string, at any point in the list, keyword symbols may occur
to indicate special file notations. The following symbols have standard
meanings; they may not be meaningful for all operating systems, and are
intended for use only on those operating systems where they have meaning.
Implementations are permitted to add additional keyword symbols if
necessary to represent features of their file systems.
:WILD - Wildcard match of one level of directory structure.
:WILD-INFERIORS - Wildcard match of any number of directory levels.
:UP - Go upward in directory structure (semantic).
:BACK - Go upward in directory structure (syntactic).
"Syntactic" means that the action of :BACK depends only on the pathname
and not on the contents of the file system. "Semantic" means that the
action of :UP depends on the contents of the file system; to resolve
a pathname containing :UP to a pathname whose directory component
contains only :ABSOLUTE and strings requires probing the file system.
:UP differs from :BACK only in file systems that support multiple
names for directories, perhaps via symbolic links. For example,
suppose that there is a directory
(:ABSOLUTE "X" "Y" "Z")
linked to
(:ABSOLUTE "A" "B" "C")
and there also exist directories
(:ABSOLUTE "A" "B" "Q")
(:ABSOLUTE "X" "Y" "Q")
then
(:ABSOLUTE "X" "Y" "Z" :UP "Q")
designates
(:ABSOLUTE "A" "B" "Q")
while
(:ABSOLUTE "X" "Y" "Z" :BACK "Q")
designates
(:ABSOLUTE "X" "Y" "Q")
If a string is used as the value of the :DIRECTORY argument to
MAKE-PATHNAME, it should be the name of a toplevel directory and
should not contain any directory delimiter characters. Specifying a
string, str, is equivalent to specifying the list (:ABSOLUTE str).
Specifying the symbol :WILD is equivalent to specifying the list
(:ABSOLUTE :WILD-INFERIORS), or (:ABSOLUTE :WILD) in a
non-hierarchical file system.
The PATHNAME-DIRECTORY function never returns a string nor :WILD; it
always returns NIL, :UNSPECIFIC, or a list.
In non-hierarchical file systems, the only valid list values for the
directory component of a pathname are (:ABSOLUTE string) and
(:ABSOLUTE :WILD). :RELATIVE directories and the keywords
:WILD-INFERIORS, :UP, and :BACK are not used in non-hierarchical file
systems.
Pathname merging treats a relative directory specially. Let
<pathname> and <defaults> be the first two arguments to
MERGE-PATHNAMES. If (PATHNAME-DIRECTORY <pathname>) is a list whose
car is :RELATIVE, and (PATHNAME-DIRECTORY <defaults>) is a list, then
the merged directory is the value of
(APPEND (PATHNAME-DIRECTORY <defaults>)
(CDR (PATHNAME-DIRECTORY <pathname>)))
except that if the resulting list contains an element other than :BACK
or :WILD-INFERIORS, immediately followed by :BACK, both of them are
removed. This removal of redundant :BACKs is repeated as many times
as possible. If (PATHNAME-DIRECTORY <defaults>) is not a list, the
merged directory is
(OR (PATHNAME-DIRECTORY <pathname>) (PATHNAME-DIRECTORY <defaults>))
A relative directory in the pathname argument to a function such as
OPEN is merged with *DEFAULT-PATHNAME-DEFAULTS* before accessing the
file system.
Test Cases/Examples:
(PATHNAME-DIRECTORY (PARSE-NAMESTRING "[FOO.BAR]BAZ.LSP")) ;on VMS
=> (:ABSOLUTE "FOO" "BAR")
(PATHNAME-DIRECTORY (PARSE-NAMESTRING "/foo/bar/baz.lisp")) ;on Unix
=> (:ABSOLUTE "foo" "bar")
or (:ABSOLUTE "FOO" "BAR")
If PATHNAME-COMPONENT-CASE:CANONICALIZE passes, only the 2nd return value.
(PATHNAME-DIRECTORY (PARSE-NAMESTRING "../baz.lisp")) ;on Unix
=> (:RELATIVE :UP)
(PATHNAME-DIRECTORY (PARSE-NAMESTRING "/foo/bar/../mum/baz")) ;on Unix
=> (:ABSOLUTE "foo" "bar" :UP "mum")
(PATHNAME-DIRECTORY (PARSE-NAMESTRING ">foo>**>bar>baz.lisp")) ;on LispM
=> (:ABSOLUTE "FOO" :WILD-INFERIORS "BAR")
(PATHNAME-DIRECTORY (PARSE-NAMESTRING ">foo>*>bar>baz.lisp")) ;on LispM
=> (:ABSOLUTE "FOO" :WILD "BAR")
Rationale:
This would allow programs to usefully deal with hierarchical file
systems, which are by far the most common file system type.
Current Practice:
Symbolics Genera implements something very similar to this. The main
differences are:
- In Genera, there is no :ABSOLUTE keyword at the head of the list.
This has been shown to cause some problems in dealing with root
directories. Genera represents the root directory by a keyword
symbol (rather than a list) because the list representation
was not adequately general.
- Genera represents Unix ".." as :UP, but deals with :UP
syntactically, not semantically.
Cost to Implementors:
In principle, nothing about the implementation needs to change except
the treatment of the directory component by MAKE-PATHNAME and
PATHNAME-DIRECTORY. The internal representation can otherwise be left
as-is if necessary.
Implementations such as Genera that already have hierarchical directory
handling will have to make an incompatible change to switch to what
is proposed here.
For implementations that choose to rationalize this representation
throughout their internals and any other implementation-specific
accessors, the cost will be necessarily higher.
Cost to Users:
None. This change is upward compatible.
Cost of Non-Adoption:
Serious portability problems would continue to occur. Programmers would be
driven to the use of implementation-specific facilities because the need
for this is frequently impossible to ignore.
Benefits:
The serious costs of non-adoption would be avoided.
Aesthetics:
This representation of hierarchical pathnames is easy to use and quite
general. Users will probably see this as an improvement in the aesthetics.
Discussion:
This issue was raised a while back but no one was fond of the particular
proposal that was submitted. This is an attempt to revive the issue.
The original proposal, to add a :SUBDIRECTORIES component to a
pathname, was discarded because it imposed an unnatural distinction
between a toplevel directory and its subdirectories. Pitman's guess is
the the idea was to try to make it a compatible change, but since most
programmers will probably want to change from implementation-specific
primitives to portable ones anyway, that's probably not such a big
deal. Also, there might have been some programs which thought the
change was compatible and ended up ignoring important information (the
:SUBDIRECTORIES component). Pitman thought it would be better if
people just accepted the cost of an incompatible change in order to
get something really pretty as a result.
Moon doesn't like having both :UP and :BACK, but admits that some
file systems do it one way and some do it the other.
To keep it simple, we chose not to add to this issue the functions
DIRECTORY-PATHNAME-AS-FILE and PATHNAME-AS-DIRECTORY, which convert
the name of a directory from or to the directory component of a file
inferior to that directory. This conversion is system-dependent, for
example TOPS-20 appends a type field and Unix does not. Also in some
systems the root directory has a name and in others it doesn't. Of
course these functions signal an error in non-hierarchical file
systems.
∂22-Mar-89 2031 X3J13-mailer Issue: PATHNAME-COMPONENT-CASE (Version 2)
Received: from STONY-BROOK.SCRC.Symbolics.COM (SCRC-STONY-BROOK.ARPA) by SAIL.Stanford.EDU with TCP; 22 Mar 89 20:30:42 PST
Received: from EUPHRATES.SCRC.Symbolics.COM by STONY-BROOK.SCRC.Symbolics.COM via CHAOS with CHAOS-MAIL id 563397; Wed 22-Mar-89 23:30:16 EST
Date: Wed, 22 Mar 89 23:30 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
Subject: Issue: PATHNAME-COMPONENT-CASE (Version 2)
To: X3J13@SAIL.STANFORD.EDU
Message-ID: <19890323043004.2.MOON@EUPHRATES.SCRC.Symbolics.COM>
I updated and rewrote this issue based on the discussion last Summer and
Autumn that followed the publication of version 1 within the cleanup
committee. Perhaps we can use this as the basis for a constructive
discussion and get this issue out of the way.
This issue contains four alternative proposals.
Issue: PATHNAME-COMPONENT-CASE
References: Pathnames (pp410-413),
MAKE-PATHNAME (p416),
PATHNAME-HOST (p417),
PATHNAME-DEVICE (p417),
PATHNAME-DIRECTORY (p417),
PATHNAME-NAME (p417),
PATHNAME-TYPE (p417)
Category: CHANGE
Edit history: 1-Jul-88, Version 1 by Pitman
22-Mar-89, Version 2 by Moon, update and rewrite
Status: Trying to be ready for release
Problem Description:
Issues of alphabetic case in pathnames are a major source of problems.
In some file systems, the customary case is lowercase, in some
uppercase, in some mixed. In some file systems, case matters, in
others it does not.
There are two kinds of portability problems connected with case in
pathnames: moving programs from one Common Lisp to another, and moving
pathname component values from one file system to another. To solve
the first problem, all Common Lisp implementations that support a
particular file system must use compatible representations for
pathname component values. To solve the second problem, there must be
a canonical representation for pathname component values that means
the same thing on all file systems.
The desire for a canonical representation for pathname component
values directly conflicts with the desire among programmers who only
use one file system to work with the local conventions and not to
have to think about issues of porting to other file systems. The
canonical representation cannot be the same as every local
convention, since they vary.
In the current anarchy of pathname component case conventions:
(NAMESTRING (MAKE-PATHNAME :NAME "FOO" :TYPE "LISP"))
will produce foo.lisp in some Unix Common Lisp implementations
and will produce FOO.LISP in other Unix Common Lisp implementations.
(NAMESTRING (MAKE-PATHNAME :NAME "foo" :TYPE "lisp"))
will produce FOO.LISP in some Tops-20 Common Lisp implementations
and will produce "↑Vf↑Vo↑Vo.↑Vl↑Vi↑Vs↑Vp"in other Tops-20 Common
Lisp implementations.
Problems like this make it difficult to use MAKE-PATHNAME for much of
anything without corrective (non-portable) code.
Other problems occur in merging because doing
(NAMESTRING (MERGE-PATHNAMES (MAKE-PATHNAME :HOST "MY-TOPS-20" :NAME "FOO")
(PARSE-NAMESTRING "MY-UNIX:x.lisp")))
should probably return "MY-TOPS-20:FOO.LISP" but in fact might return
"MY-TOPS-20:FOO.↑Vl↑Vi↑Vs↑Vp" in some implementations.
Problems like this make it difficult to use any merging primitives for
much of anything without corrective (non-portable) code.
Proposal (PATHNAME-COMPONENT-CASE:CANONICALIZE):
Designate a treatment for case in pathname components which is
distinct from the treatment of case in the namestrings. The treatment
should be invariant across operating systems. Namestrings use local
file system case conventions, pathname components use common case
conventions.
Arbitrarily choose uppercase as the common (or universal) case.
If a string given to MAKE-PATHNAME, or returned by any of the
PATHNAME-xxx accessor operations, is all uppercase, it is said to
designate a name in the system's "canonical case".
If a string given to MAKE-PATHNAME, or returned by any of the
PATHNAME-xxx accessor operations, is all lowercase, it is said to
designate a name in the system's "anticanonical case".
If a string given to MAKE-PATHNAME, or returned by any of the
PATHNAME-xxx accessor operations, is mixed case, it is said to
designate a name in exactly the indicated case.
Functions such as PARSE-NAMESTRING and NAMESTRING which convert from
or to local file system syntax will perform any necessary conversions
between "canonical case" and the host's customary case, and between
"anticanonical case" and the opposite of the host's customary case.
Proposal (PATHNAME-COMPONENT-CASE:NEW-COMMON-ACCESSORS):
Add new pathname component accessor functions that return values
translated to the common case defined above. Use the local file
system case conventions in the existing pathname component accessor
functions. The new accessors are named PATHNAME-COMMON-DEVICE,
PATHNAME-COMMON-DIRECTORY, PATHNAME-COMMON-NAME, and
PATHNAME-COMMON-TYPE.
Add new keyword arguments to MAKE-PATHNAME that accept values in the
the common case defined above and translate to the host's customary
case. Use the local file system case conventions in the existing
keyword arguments to MAKE-PATHNAME. The new keyword arguments are
named :COMMON-DEVICE, :COMMON-DIRECTORY, :COMMON-NAME, and
:COMMON-TYPE.
Proposal (PATHNAME-COMPONENT-CASE:NEW-LOCAL-ACCESSORS):
Do everything proposed for PATHNAME-COMPONENT-CASE:CANONICALIZE,
and in addition:
Add new pathname component accessor functions that return values in
the local file system case conventions. The new accessors are named
PATHNAME-LOCAL-DEVICE, PATHNAME-LOCAL-DIRECTORY, PATHNAME-LOCAL-NAME,
and PATHNAME-LOCAL-TYPE.
Add new keyword arguments to MAKE-PATHNAME that accept values in the
local file system case conventions. The new keyword arguments are
named :LOCAL-DEVICE, :LOCAL-DIRECTORY, :LOCAL-NAME, and :LOCAL-TYPE.
Proposal (PATHNAME-COMPONENT-CASE:KEYWORD-ARGUMENT):
Add a keyword argument :CASE to MAKE-PATHNAME and the PATHNAME-xxx
accessors, indicating whether common or local conventions should be
followed. The possible values for the argument are :COMMON and
:LOCAL. The default is :COMMON.
Test Case:
Under PATHNAME-COMPONENT-CASE:CANONICALIZE:
(PATHNAME-NAME (PARSE-NAMESTRING "MY-UNIX:/me/foo.lisp")) => "FOO"
(PATHNAME-NAME (PARSE-NAMESTRING "MY-TOPS-20:<ME>FOO.LISP")) => "FOO"
Under PATHNAME-COMPONENT-CASE:NEW-COMMON-ACCESSORS:
(PATHNAME-NAME (PARSE-NAMESTRING "MY-UNIX:/me/foo.lisp")) => "foo"
(PATHNAME-NAME (PARSE-NAMESTRING "MY-TOPS-20:<ME>FOO.LISP")) => "FOO"
(PATHNAME-COMMON-NAME (PARSE-NAMESTRING "MY-UNIX:/me/foo.lisp")) => "FOO"
(PATHNAME-COMMON-NAME (PARSE-NAMESTRING "MY-TOPS-20:<ME>FOO.LISP")) => "FOO"
Under PATHNAME-COMPONENT-CASE:NEW-LOCAL-ACCESSORS:
(PATHNAME-NAME (PARSE-NAMESTRING "MY-UNIX:/me/foo.lisp")) => "FOO"
(PATHNAME-NAME (PARSE-NAMESTRING "MY-TOPS-20:<ME>FOO.LISP")) => "FOO"
(PATHNAME-LOCAL-NAME (PARSE-NAMESTRING "MY-UNIX:/me/foo.lisp")) => "foo"
(PATHNAME-LOCAL-NAME (PARSE-NAMESTRING "MY-TOPS-20:<ME>FOO.LISP")) => "FOO"
Under PATHNAME-COMPONENT-CASE:KEYWORD-ARGUMENT:
(PATHNAME-NAME (PARSE-NAMESTRING "MY-UNIX:/me/foo.lisp")
:CASE :COMMON) => "FOO"
(PATHNAME-NAME (PARSE-NAMESTRING "MY-TOPS-20:<ME>FOO.LISP")
:CASE :COMMON) => "FOO"
(PATHNAME-NAME (PARSE-NAMESTRING "MY-UNIX:/me/foo.lisp")
:CASE :LOCAL) => "foo"
(PATHNAME-NAME (PARSE-NAMESTRING "MY-TOPS-20:<ME>FOO.LISP")
:CASE :LOCAL) => "FOO"
Rationale:
This does not solve the whole pathname problem, but it does improve
the situation for a clearly defined set of very common problems.
Together with the other pathname proposals, the behavior of pathnames
should be sufficiently consistent across Common Lisp implementations
and across file systems to allow portability of pathname-manipulating
programs.
Upper case is chosen as the canonical case for no better reason than
consistency with the canonical case for Lisp symbols.
PATHNAME-COMPONENT-CASE:CANONICALIZE minimizes the size of the
language by not adding any new functions. It assumes that pathname
operations using local file system conventions can be performed on
namestrings and that anything that calls MAKE-PATHNAME or the
PATHNAME-xxx accessors is portable code that is independent of the
local file system conventions.
PATHNAME-COMPONENT-CASE:NEW-COMMON-ACCESSORS assumes that the existing
MAKE-PATHNAME and PATHNAME-xxx accessor features are for programs that
only work on one file system and that more generally portable programs
should use new features.
PATHNAME-COMPONENT-CASE:NEW-LOCAL-ACCESSORS assumes that the existing
MAKE-PATHNAME and PATHNAME-xxx accessor features are for fully
portable programs but that PATHNAME-COMPONENT-CASE:CANONICALIZE is
insufficient and direct access to the local conventions is required.
PATHNAME-COMPONENT-CASE:KEYWORD-ARGUMENT assumes that access to both
conventions is necessary but introducing more functions is bad.
The default convention is the common one, assuming that most
programs are fully portable.
Note:
None of these proposals requires an implementation to change its
internal representation. They only require the canonical accessors to
behave as if the internal representation had been changed. Whether
the actual internal representation is changed is still up to an
implementation. A consequence of this is that if pathnames print in a
way that shows the components individually (such as #S), they are not
constrained to print the components in any particular case; they are
constrained only to have definite syntax conventions and to be able to
invert those conventions at the appropriate time. Any change to the
way pathnames print is beyond the scope of this proposal.
There should probably be a remark somewhere that says that portable
programs shouldn't expect to be able to create and/or access distinct
files whose pathname components differ only in case.
Current Practice:
Symbolics Genera implements something resembling
PATHNAME-COMPONENT-CASE:NEW-LOCAL-ACCESSORS except that the names use
"raw" rather than "local". The "raw" accessors are almost never used.
Symbolics Genera's own file system uses lower case as the customary
case, but transparent network access is available to file systems
using all known case conventions.
Many Common Lisp implementations that only deal with a single file
system implement something resembling
PATHNAME-COMPONENT-CASE:NEW-COMMON-ACCESSORS except without the
new accessors and keyword arguments.
Cost to Implementors:
While all of these proposals are compatible with CLtL, since CLtL is
so vague, they are not likely to be compatible with the
implementations of CLtL which some implementations have chosen.
It is possible to isolate the forced changes to the referenced functions
(MAKE-PATHNAME and the PATHNAME-xxx accessors). Existing functions can be
renamed, and new functions with the same name can be introduced which simply
encapsulate case conversion. No further change is forced.
It may, however, be desirable for an implementation to make a more complete
overhaul of their representation. In implementations where the implementors
feel a need to do this, the amount of work may be considerably greater.
Cost to Users:
Technically, this change is upward compatible.
In fact, since the existing CLtL spec is so poor, nearly everyone relies
heavily on implementation-specific behavior since there is little other
choice. As such, any change is almost certain to break lots of programs,
in usually superficial but nevertheless important ways. However, if we
really make the pathname facility more portable, the user community may be
willing to bear the consequences of these changes.
Cost of Non-Adoption:
We would be contributing to the perpetuation of the existing fiasco of a
pathname system.
Benefits:
The major costs of non-adoption would be avoided.
Aesthetics:
More code is required, but the code supports a simpler user model.
Anything that simplifies the user model of pathnames is going to be an
improvement.
Discussion:
Some people would rather use lowercase as the canonical case. The
decision is essentially arbitrary. Everywhere else in Common Lisp
where there is a canonical case, uppercase was chosen.
It has been proposed that the Common Lisp specification should include
specifications of the exact behavior of pathnames for several popular
operating systems, so that multiple implementations for those
operating systems would be compatible with each other. This proposal
does not attempt to do that, only to establish the coherent framework
within which it would be done.
In PATHNAME-COMPONENT-CASE:KEYWORD-ARGUMENT, some people want the
default for :CASE to be :LOCAL instead of :COMMON. I would have
written that up too, but I thought five proposals were too many.